Sign in to follow this  
Sindusk

[RELEASED] (Client) Range Finder

Recommended Posts

We are  not going to lie, we dislike this mod very much.

 

We run a Roleplay server, we do events very regularly. Yes even Archery events. We give different rewards out for different events, this will mean no more archery event, no more spyglass rewards.

 

These type of mods only benefit people with the knowledge to use them, those people dont need things to broaden the gap on newer players.

 

Valiance and Kaylie.

Share this post


Link to post
Share on other sites

The mod would exist with or without me. I doubt I'm the only one who made this type of mod. As I'm sure we're all aware, bearmods is still available. There's no way to counteract it. The only thing we can do is decide whether or not they should be public. I lean on the side of making everything available to ensure a level playing field. Now that the mod is public, everyone has access to it, and the servers can be run with that in mind.

 

It's when people have access to certain mods which utterly trivialize certain parts of the game when I begin to draw the line. Being able to spot treasure chests as soon as you're within 100 tiles. Knowing a unique location even if it's underground because you can see through walls. This mod is far from that line. It's a convenience, not a hack.

 

In a perfect world, client hacks wouldn't be available in the first place. Problem is, we don't live in a perfect world. It would take a massive effort on behalf of the modding community and acceptance by the general public to implement a system whereby client hacks could be disabled. Even then, it wouldn't be foolproof. All you can do is accept the current state we're in and be content.

  • Like 2

Share this post


Link to post
Share on other sites

broken as of 1.5 :(

 

javassist.CannotCompileException: [source error] Field pickDistance in com.wurmonline.client.renderer.gui.HeadsUpDisplay is private.
	at javassist.CtBehavior.setBody(CtBehavior.java:446)
	at javassist.CtBehavior.setBody(CtBehavior.java:412)
	at org.gotti.wurmonline.clientmods.rangefinder.RangeFinder.init(RangeFinder.java:105)
	at org.gotti.wurmunlimited.modloader.ModLoaderShared.lambda$loadModsFromModDir$6(ModLoaderShared.java:111)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
	at org.gotti.wurmunlimited.modloader.ModLoaderShared.loadModsFromModDir(ModLoaderShared.java:109)
	at org.gotti.wurmunlimited.clientlauncher.DelegatedLauncher.main(DelegatedLauncher.java:24)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at javassist.Loader.run(Loader.java:288)
	at org.gotti.wurmunlimited.clientlauncher.ClientLauncher.main(ClientLauncher.java:29)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.wurmonline.client.launcherfx.WurmMain.main(WurmMain.java:27)
Caused by: compile error: Field pickDistance in com.wurmonline.client.renderer.gui.HeadsUpDisplay is private.
	at javassist.compiler.MemberCodeGen.isAccessibleField(MemberCodeGen.java:943)
	at javassist.compiler.MemberCodeGen.atFieldAssign(MemberCodeGen.java:799)
	at javassist.compiler.JvstCodeGen.atFieldAssign(JvstCodeGen.java:140)
	at javassist.compiler.CodeGen.atAssignExpr(CodeGen.java:776)
	at javassist.compiler.CodeGen.atStmnt(CodeGen.java:332)
	at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50)
	at javassist.compiler.CodeGen.atStmnt(CodeGen.java:351)
	at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50)
	at javassist.compiler.CodeGen.atMethodBody(CodeGen.java:292)
	at javassist.compiler.Javac.compileBody(Javac.java:223)
	at javassist.CtBehavior.setBody(CtBehavior.java:438)
	... 25 more
javassist.CannotCompileException: [source error] Field pickDistance in com.wurmonline.client.renderer.gui.HeadsUpDisplay is private.
	at javassist.CtBehavior.setBody(CtBehavior.java:446)
	at javassist.CtBehavior.setBody(CtBehavior.java:412)
	at org.gotti.wurmonline.clientmods.rangefinder.RangeFinder.init(RangeFinder.java:105)
	at org.gotti.wurmunlimited.modloader.ModLoaderShared.lambda$loadModsFromModDir$6(ModLoaderShared.java:111)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
	at org.gotti.wurmunlimited.modloader.ModLoaderShared.loadModsFromModDir(ModLoaderShared.java:109)
	at org.gotti.wurmunlimited.clientlauncher.DelegatedLauncher.main(DelegatedLauncher.java:24)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at javassist.Loader.run(Loader.java:288)
	at org.gotti.wurmunlimited.clientlauncher.ClientLauncher.main(ClientLauncher.java:29)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.wurmonline.client.launcherfx.WurmMain.main(WurmMain.java:27)
Caused by: compile error: Field pickDistance in com.wurmonline.client.renderer.gui.HeadsUpDisplay is private.
	at javassist.compiler.MemberCodeGen.isAccessibleField(MemberCodeGen.java:943)
	at javassist.compiler.MemberCodeGen.atFieldAssign(MemberCodeGen.java:799)
	at javassist.compiler.JvstCodeGen.atFieldAssign(JvstCodeGen.java:140)
	at javassist.compiler.CodeGen.atAssignExpr(CodeGen.java:776)
	at javassist.compiler.CodeGen.atStmnt(CodeGen.java:332)
	at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50)
	at javassist.compiler.CodeGen.atStmnt(CodeGen.java:351)
	at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50)
	at javassist.compiler.CodeGen.atMethodBody(CodeGen.java:292)
	at javassist.compiler.Javac.compileBody(Javac.java:223)
	at javassist.CtBehavior.setBody(CtBehavior.java:438)
	... 25 more

 

Share this post


Link to post
Share on other sites

In regards to the whole discussion of client-side "cheat mods"...

 

I'm not much of a modder / programmer, so I may be suggesting something not technically possible.  Couldn't someone write a mod that would communicate between server and client, and have the client report what mods are loaded?  That way, the server could evaluate if any of the mods were on a blacklist (or more likely confirm that all mods are on a whitelist), and then refuse connection to anyone running unacceptable mods?

 

In my mind, I have the idea of using the modloaders to allow the server to push down a package to the client (since I know that's already possible).  The client package would generate hashes of all the loaded client mods, and send those hashes back to the server.  The server, in turn, would have a list of accepted hashes.

 

The reason I specifically say hashes is because if only file names were reported, someone with a little know-how could find out what filenames were accepted, and then merge / recompile a blacklisted mod into a whitelisted filename.

 

I play exclusively single-player on my own machine, so I do see value in "cheat mods".  But I do also see how they could be unbalancing in a server setting (regardless of paid server or event reward value).  Maybe someone with more know-how could invest the time into something along the lines of this suggestion?

 

Sorry if this the wrong place for this.  :)

Share this post


Link to post
Share on other sites
9 minutes ago, Nikalus said:

In regards to the whole discussion of client-side "cheat mods"...

 

I'm not much of a modder / programmer, so I may be suggesting something not technically possible.  Couldn't someone write a mod that would communicate between server and client, and have the client report what mods are loaded?  That way, the server could evaluate if any of the mods were on a blacklist (or more likely confirm that all mods are on a whitelist), and then refuse connection to anyone running unacceptable mods?

 

In my mind, I have the idea of using the modloaders to allow the server to push down a package to the client (since I know that's already possible).  The client package would generate hashes of all the loaded client mods, and send those hashes back to the server.  The server, in turn, would have a list of accepted hashes.

 

The reason I specifically say hashes is because if only file names were reported, someone with a little know-how could find out what filenames were accepted, and then merge / recompile a blacklisted mod into a whitelisted filename.

 

I play exclusively single-player on my own machine, so I do see value in "cheat mods".  But I do also see how they could be unbalancing in a server setting (regardless of paid server or event reward value).  Maybe someone with more know-how could invest the time into something along the lines of this suggestion?

 

Sorry if this the wrong place for this.  :)

 

It's the wrong place, anyway it can be easily exploitable.

Share this post


Link to post
Share on other sites

Hi - can we get an update for this to the new client? 
 

Share this post


Link to post
Share on other sites

WU 1.6 refuses to even go to the launcher with v3

 

EDIT: nvm, I already had rangefinder bundled with another mod

Edited by Huntar

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this