NoSeed
*** As of Minecraft 1.2, Mojang removed the map seed from SMP! ***
*** It is no longer present in the 0x01 Login and 0x09 Respawn packets, therefore the offline seed attack which NoSeed protected against in 1.1 is no longer possible. ***
*** The cheat protection NoSeed provided is now part of the design of vanilla Minecraft, thanks to the new Anvil chunk format. NoSeed is now obsolete as of Minecraft 1.2.***
Ever want to hide the map seed?
Easily visible by opening the F3 debug screen, this number can be loaded into a new single-player game to create a nearly identical world offline to X-ray at your leisure, loaded into AMIDST to quickly find strongholds and villages, or other tools to gain an unfair advantage against other players.
NoSeed hides the true level seed from the F3 screen, replacing it with a random value having no relation to the actual seed. An effective anti-cheat measure.
Features:
- No client mods required
- No chunk re-generation needed
- No changes to your world save file
- Configurable in-game
- Permission support
- (Misfeature) Biome inaccuracies (see limitations below)
Installation
Important: NoSeed has not yet been updated for 1.1-R4. Only use with 1.1-R3 at this time.
To use NoSeed, you must add the -javaagent:plugins/NoSeed.jar command-line flag to CraftBukkit, as the very first argument. For example:
java -javaagent:plugins/NoSeed.jar -mx4G -jar craftbukkit-1.1-R3.jar
You can keep all your other flags, as long as -javaagent:plugins/NoSeed.jar is listed first.
If everything is working correctly, the first line of output will be:
[NoSeed] Initializing
Important: If this flag is missing, NoSeed will not function. You must be able to specify custom flags to use NoSeed.
Once NoSeed is installed, login to your server, and press F3. You should now see a fake seed in place of the real world seed. If desired, you can change the fake seed to your liking, see below.
Commands
/seed: View the fake seed, and the last real seed replaced. Requires noseed.get permission.
/seed [number]: Change the fake seed. Requires noseed.set permission.
/seed flat: Toggle between forcing Superflat and using the existing world type. Requires noseed.set permission.
All changes take effect immediately and will apply to new users logging in.
Permissions
noseed.set (op): Allows you to change the fake seed
noseed.get (op): Allows you to view the real seed
Configuration
fakeSeed: The fake seed to be used. This can be set using /seed in the game, or changed in config.yml. If no seed is given, a default pseudorandom number is generated and saved here on first use of /save.
lastRealSeed (read only): For convenience, the real seed which was last replaced is written here when you type /seed.
forceFlat: true to force the world type to Superflat, false to not override the world type. Superflat is on by default.
Limitations
Important caveat: Biome colors and weather may be unexpectedly changed.
You can try to workaround the problem by experimenting with different fake seeds and toggling forceFlat, but a complete fix requires client modification to obtain the biome data from the server, rather than generating it client-side from the seed.
Secondly, world generation is pseudorandom, not cryptographically secure. Theoretically, a sufficiently advanced attacker could reverse-engineer the actual seed from the map contents. So far, this attack has not been demonstrated (as far as I know) and is believed to currently only be theoretical.
See also
If the biome scrambling is untenable, you may find other anti-cheat plugins preferrable.
For example, ChunkScrambler uses a different seed for ore (etc.) generation, leaving biomes intact. NoSeed in contrast does not alter chunk generation, but rewrites the login packet to send a fake seed to the client, at the expense of accurate biome colors.
News 2012/02/10: "Biome data will be saved with the chunks in the new world format. " - _jeb. This would potentially allow the biome problem with NoSeed to be solved.
-
View User Profile
-
Send Message
Posted Mar 9, 2012@Valdiralita
Update to 1.2.3 and the seed will now be hidden without any mods :).
I can update NoSeed for the newer builds of 1.1 if there is enough demand, but otherwise I think this plugin has outlived its usefulness, and I'm marking it inactive.
-
View User Profile
-
Send Message
Posted Feb 24, 2012ok i just downgraded to CB 1.1-R3 to test if it would work there and it still crashes the client sometimes. the client doesnt crash if noseed is disabled
i use NoSeed 0.4
Plugins:
http://img4.fotos-hochladen.net/uploads/pluginspjdfcbxgaq.jpg
Startup:
"C:\java7\bin\java.exe" -Xmx2g -Xms2g -jar craftbukkit-1.1-R3.jar
----------------------------^ ignore that ";" the forum adds this here
-
View User Profile
-
Send Message
Posted Feb 23, 2012i will stay with the R1940 build and will not downgrade. i just though i should report this. the crashes are somehow random and not very often. only 5% chance maybe.
anyway it would be nice of you update it as soon as CB releases for 1.2 minecraft
-
View User Profile
-
Send Message
Posted Feb 23, 2012@Valdiralita
NoSeed 0.4 only works with CraftBukkit 1.1-R3 at this time, sorry. Due to the technique it uses to alter the seed, it will likely only work with the exact build it was built for. Would like to update NoSeed to support 1.1-R4 but I've also been looking into a more reliable way to implement it that wouldn't break on every build (not sure if it's possible).
-
View User Profile
-
Send Message
Posted Feb 23, 2012cb r1940 wich fixes the bug with furnaces (entity is not deleted)
-
View User Profile
-
Send Message
Posted Feb 22, 2012@Valdiralita
What version of CraftBukkit are you running?
-
View User Profile
-
Send Message
Posted Feb 22, 2012i installed this plugin and i get random minecraft client crashes if i switch worlds
here is the error: http://pastebin.com/nWcUAQKq
another clientcrash: http://pastebin.com/MgSKHt0P
-
View User Profile
-
Send Message
Posted Feb 16, 2012@Puremin0rez
I asked jeb_ to remove the seed https://twitter.com/#!/mushroomhostage/status/170389109850910722 - if he does, this plugin/mod will be obsolete. Lets hope so!
-
View User Profile
-
Send Message
Posted Feb 15, 2012I hope 1.2 fixes the biome problem with NoSeed! I hate that the seed is STILL shown in multiplayer!
-
View User Profile
-
Send Message
Posted Feb 14, 2012@chamunks
Should work fine with multiple worlds, all worlds will show the same fake seed. Or are you looking to use a different fake seed on each world? Would be possible to add, considered it, but wasn't sure how useful it would be. What would be the advantage over using the same spoofed seed for all worlds?
For your command-line option, add the first argument. This works for me:
java -javaagent:plugins/NoSeed.jar -Xmx2048M -Xms2048M -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=1 -XX:+AggressiveOpts -jar craftbukkit-1.1-R3.jar
@lishid
Looked into using Java reflection at first but couldn't figure out how to use it to do this. From what I can tell reflection only lets you change fields not rewrite methods(?), which I had to do in the packet 9 respawn. But I'd definitely like to switch to a better technique than Java instrumentation, if possible, would be much less maintenance and a cleaner solution. Any hints how I can use reflection here? :)
-
View User Profile
-
Send Message
Posted Feb 8, 2012Is there a way to make this support multiworlds? Also if for example my java init line is something like this "java -Xmx2048M -Xms2048M -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts -jar $SERVICE $OPTIONS"
Where exactly would i wedge this? Please Note that this is not really my launch code I just would like to see how this is applied.
Sorry I'm also assuming that this must be invoked at server startup with this command and cant just simply be run as a normal plugin.
-
View User Profile
-
Send Message
Posted Feb 2, 2012Lol, someone had to do this :D
I'd suggest you (@mushroomhostage) dig a little more and see if there's any way (maybe using reflection if needed) to accomplish this without the need for the extra installation process with -javaagent
-
View User Profile
-
Send Message
Posted Feb 2, 2012@fonkfader
The way this would work, is that the plugin would generate a coordinate offset, and apply it to outgoing packets to the client (that's a Spout dependency, right off the bat). Then, the problem lies in reversing the offset in incoming packets before it's passed to ANYTHING in the server (even CraftBukkit itself). I'm not sure if this is possible with CraftBukkit.
-
View User Profile
-
Send Message
Posted Feb 2, 2012it's possible to fake the coordinate too ?
-
View User Profile
-
Send Message
Posted Feb 1, 2012Non-numerical seeds are transformed in Minecraft using .hashCode(). Just added this feature to NoSeed 0.4 (submitted, should be available soon), so you'll be able to use /seed [word] in addition to /seed [number].
A client mod to fix the biomes is not out of the question, should be possible to have the server send the correct biome data to the client to use, (by some other means than the seed, a plugin channel maybe?) to use, but would be non-trivial to implement... (any other plugin developer else want to give it a shot? :-))
-
View User Profile
-
Send Message
Posted Feb 1, 2012@HockeyMike24
This is impossible without a client modification.
-
View User Profile
-
Send Message
Posted Feb 1, 2012If you could fix the biomes from changing this would be an awesome plugin.
-
View User Profile
-
Send Message
Posted Feb 1, 2012@FlyingPikachu
Biomes are rendered client-side using the seed. They're not stored on the server at all.
And regarding words as seeds: When you enter a word into the seed box in SSP, it just hashes the text to get a numerical seed ID. I haven't looked into it, but I assume that this functionality isn't present in the server (as it isn't needed), so I'm also assuming that the client would only accept an integer from the server for a seed. So, using a word with this plugin would probably cause a crash (on either the client or the server).
-
View User Profile
-
Send Message
Posted Feb 1, 2012So to be clear, the change in biome/weather is only seen client-side; not an actual change to the world? This plugin sounds great, but I can't imagine using it if messes with biomes/weather server-side...
Also, can /seen [number] be a word instead of a number? When creating a world in MC, the game can translate from word to number in some manner... can NoSeed do this? :3