Sponge Docs Pop Quiz #22

Wandering out of the wilderness, half-mad and hungry, it is the return of the

Sponge Docs Pop Quiz #22

Nobody knows where it was, or what it was doing, but it has returned to the fold and already the incessant flow of questions has begun again. Here, for your various bafflement, edification, clarification or amusement, are some things that might be worthy of discussion.

  1. How can we can improve the Setting up your workspace docs?
    Of critical importance to potential developers is the ability to correctly set up a workspace to use. This section of the docs is presently undergoing some streamlining. See what you think.

  2. What’s your opinion of the new Minecraft 1.9 combat system?
    Shields, swings, wacky axes, there are many changes in the way combat is handled now. It definitely makes a different dynamic; how are you coping with it?

  3. What funky java server startup arguments do you use for a MC server?
    There are a plethora of arcane and obscure java arguments that some server operators use in their server start scripts, for various reasons. Which ones do you tend to use, and why?

That was the middle, and before it the beginning, so by exclusion this must be the End.
Once upon a time there were more questions, but that was Ancient History. Perhaps more may yet be revealed on the slightly-less-than-ancient tablets of the near future. See you there.

  1. Mentioning this would be cool or even officially integrating it in to Sponge. It helps a lot.
  2. I only played a short time survival since 1.9. I like the changes. Now you need some skill to kill something. The thing I most underrated: The shield. It is very very helpful. You can kill a skeleton without getting damaged. You just have to know when skeletons shoot their arrows. You have to know the timing. Additionally the shield is very cheap to craft. I think it is to over powered, it will be buffed in the next releases.
    I think the Elytra is to hard to get. Don’t know how to simplify getting it.
  3. I use the script mentioned in 1 to create a test server and I don’t add any parameters. When I play with others I download the recommend build of SpongeVanilla add nothing crazy, just xms and xmx.
1 Like

Hmm, other than esoteric behaviour of Gradle that fixed itself magically, I haven’t got any troubles setting it up. “Debugging and HotSwapping” and “Importing Sponge into IntelliJ” by gabizou also was useful.
Startup arguments? No, nothing fancy. I use server mostly for testing stuff.

Personally I’m not against Light Attacks and Heavy Attacks. Kinda like in Skyrim and other games: when you press mouse button for a second, hero starts to lift up the sword, swings the arm in wide arc, strikes, and then rights oneself. When you press button quickly several times, he starts light attack, which is also useful and can be used strategically.

But in 1.9, I think it looks bad visually. Steve just instantly swings the sword, then slooowly lifts it up. Kinda like just drops it and struggles under the weight to lift it back. Light attacks don’t ‘feel’ like Light attacks, but like failed Heavy attacks.

1 Like
  1. You may want to make it clear that all the bells and whistles are not actually necessary. I just add a library with the Sponge jar and javadocs, and it all just works. Never needed Maven or anything.
  2. I agree that the current system needed a kick in the pants, not sure that this was the best way to do that though. Miss overpowered hoes.
  3. I don’t. I have jars and classes set to java.exe instead of javaw.exe, so I just double click it.
1 Like

We just advise you to use a build system, however we don’t force you to. We do this to avoid people developing against the SpongeForge or SpongeVanilla jar and to make building your plugin + deploys easier. If you’re using the API.jar, then everythings fine.


My answers:

  1. Minecrell is actually improving it, i’ll comment there
  2. Haven’t tried it yet, but i like dual-wielding.
  3. i usually run the server with default args, for testing purposes this is enough
1 Like

The only thing I dislike about the rarity of the elytra is (to my knowlege) only 1 player per server can have one.

I don’t mind rare cosmetics that no one else can have, but the elytra are just too damned useful to not be somehow refindable by each player.

Afaik you find Elytra in the castles on the outer Islands of the end. There should be more that one of them, i haven’t checked this yet, though.

Spoiler provided, just in case someone wants to find out the hard way …
[spoiler]
I’ve only found them in picture frames in the flying ships near the end-castles. There may well be more than one of the ships out there…
[/spoiler]

1 Like

Yep, the spoiler is correct. There should be more of them in the described place.

To give an example of what I mean for Q3, here is the usual script I use to run a forge or bukkit server:

java -server -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:+AggressiveOpts -Xms1024M -Xmx2048M -jar SERVER_EXECUTABLE.jar

(where SERVER_EXECUTABLE = minecraft_server, forge-universal-XXX, spigot, craftbukkit, spongevanilla, …)

My regular server uses dynmap quite heavily, and I blame @mikeprimm for the -XX startup parameters (that’s where I originally found the suggestion) - but they’ve generally worked well for me in most circumstances. Eight worlds with 15 player slots, 40+ plugins, and scant traces of lag.
I’m not sure how much benefit the -server arg adds, but it was suggested long ago by Afforess.
Maybe someone who knows what these actually do can chime in and review their utility :wink: I have seen far longer sets of custom java arguments used for startup on some servers, so this is a drop in the ocean.

My JVM args for my server is
-XX:+UnlockExperimentalVMOptions -XX:+TrustFinalNonStaticFields
these is to allow the JVM to optimize final fields because they can be changed with Unsafe and setAccessible(true)
-limitmods jdk.management,java.desktop,java.sql
so i only load the classes that is needed only for jdk 9 jigsaw
-XX:+UseG1GC -XX:G1MixedGCCountTarget=100 -XX:MaxGCPauseMillis=100 -XX:G1HeapRegionSize=1
for little ram useage and low GC pause
sorry for bad englage i’m wordbling and from denmark

1 Like