Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Looking for a better way [semi-solid block][Solved]


Recommended Posts

I'm looking for a better way to do my semi-solid cloud blocks.


Effect I'm after:

Entities fall through the block unless the cloudWalk flag return true, then it is just like any other solid block.

The cloudWalk flag is true when the player can fly or has equipped special armor.


How it is Currently working.

The block is solid.

in "onEntityWalking" and "onFallenUpon" the flag gets checked, if false the entity gets nudged into the block.

in "onEntityCollidedWithBlock" the flag gets checked, if false "entity.setInWeb()" & "entity.setVelocity(0.0D, -2.0D, 0.0D)"



In 1.2.5 this method worked well in SSP, but on the server it worked poorly on players.

Issue #1 --Solved with new server side noClip hook added in #237

Even though the server was pushing the player it was seen as an invalid move and NetServerHandler would push the player back.

The only way I found to get around this was to edit the base class and override the check while falling through the cloud block


Issue #2

Minecraft seen the block as a valid spawn spot, many times you'd fall to your death.

To hack around this I edited my generator so clouds wouldn't be placed withing the spawn zone (this looked dumb)


Issue #3 --Solved with new hook added in #237or at least it appears to be

If the clouds where thicker then one block (almost always) sometimes you'd get stuck while falling through because "onEntityWalking" and "onFallenUpon" didn't trigger on the block bellow. By wiggling you could get unstuck.



My thoughts for reworking:

I think the best thing to do is set the getCollisionBoundingBox to null.

That should solve the getting stuck problem, remove the base edit, and maybe solve the spawn problem.

But then I have to find a way to collide with a block that has no collision box  :o

For the y value I could check if there is a cloud bellow and change it to counter the fall, if done at LivingUpdateEvent there shouldn't be any noticeable jitter, but I've got no ideas for x and z.

Link to comment
Share on other sites

Colliding without the colliding box; have you considered putting a test in getCollisionBoundingBoxFromPool for cloudWalk?


so perhaps something like:


public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4)
        if (!cloudWalk)
            return null; //fall to your death.
            return AxisAlignedBB.getBoundingBox(par2, par3, par4, par2 + 1, par3 + 1, par4 + 1); //i.e a solid cloud.


So unless you have cloudWalk, you cant fall. At the very least, this should solve issue#3. As for issue#2, perhaps you could make it so players aren't given cloudWalk until after spawning? Perhaps add something like

 if (world.worldInfo.getWorldTime < youllhavetocheckwhattheworldtimeisafewsecondsafterspawn) { cloudWalk = true; } //i can see this being a little bit dodgey though


Alternatively, perhaps you could see if you can find a way to get number of generated chunks, and if it's > 8 or 16 or something, then apply cloudWalk?


As for issue#1, you're not moving the player, so maybe it will be fixed?


Just my 2 cents. Apologies if it's useless, I'm quite tired.

Link to comment
Share on other sites

"have you considered putting a test in getCollisionBoundingBoxFromPool for cloudWalk?"

Yep with funny results too, the block became pass through for everyone when one who couldn't walk on them touched it.

Another thing I tried in 1.2.3 was setting the box to null on the server but a full cube on the client. I don't remember what problems I had with that but it was scrapped.

Got through this one though, I submitted a hook that allows server mods to use noClip to stop NetServerHandler from freaking out.

It was put in Build #237 so all is good there.

(server side noClip seems to have solved issue #3 as well)



As long as a block exists, is solid, and is not a leaf block, Minecraft calls it a valid spawn block.

I located where this was happening and submitted a new hook, others may find it helpful also.

But it if doesn't make it in I'll just continue pushing my blocks away from the map spawn point. (and hope no server admins move it)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • Oh, Now that I see it better the error is different.  This is the error now i dont saw much of it: 2022-01-19 21:36:34,998 main WARN Advanced terminal features are not available in this environment [21:36:36] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--gameDir, ., --launchTarget, fmlserver, --fml.forgeVersion, 36.2.22, --fml.mcpVersion, 20210115.111550, --fml.mcVersion, 1.16.5, --fml.forgeGroup, net.minecraftforge] [21:36:36] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 8.0.9+86+master.3cf110c starting: java version 1.8.0_25 by Oracle Corporation [21:36:36] [main/WARN] [cp.mo.mo.SecureJarHandler/]: LEGACY JDK DETECTED, SECURED JAR HANDLING DISABLED [21:36:38] [main/INFO] [ne.mi.fm.lo.FixSSL/CORE]: Added Lets Encrypt root certificates as additional trust [21:36:38] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.4 Source=file:/C:/Users/Lautaro/Desktop/server1/libraries/org/spongepowered/mixin/0.8.4/mixin-0.8.4.jar Service=ModLauncher Env=SERVER Exception in thread "main" [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]: java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/ClassFilter [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.coremod.NashornFactory.createEngine(NashornFactory.java:13) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.coremod.CoreModEngine.loadCoreMod(CoreModEngine.java:52) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.coremod.CoreModProvider.addCoreMod(CoreModProvider.java:12) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.fml.loading.LoadingModList$$Lambda$347/589987187.accept(Unknown Source) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:270) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.fml.loading.LoadingModList.addCoreMods(LoadingModList.java:85) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.fml.loading.moddiscovery.ModDiscoverer.discoverMods(ModDiscoverer.java:130) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.fml.loading.FMLLoader.beginModScan(FMLLoader.java:216) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.fml.loading.FMLServiceProvider.runScan(FMLServiceProvider.java:107) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at cpw.mods.modlauncher.TransformationServiceDecorator.runScan(TransformationServiceDecorator.java:114) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at cpw.mods.modlauncher.TransformationServicesHandler.lambda$runScanningTransformationServices$8(TransformationServicesHandler.java:115) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at cpw.mods.modlauncher.TransformationServicesHandler$$Lambda$185/259564670.apply(Unknown Source) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:267) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1612) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at cpw.mods.modlauncher.TransformationServicesHandler.runScanningTransformationServices(TransformationServicesHandler.java:116) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at cpw.mods.modlauncher.TransformationServicesHandler.initializeTransformationServices(TransformationServicesHandler.java:63) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at cpw.mods.modlauncher.Launcher.run(Launcher.java:76) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.server.ServerMain$Runner.runLauncher(ServerMain.java:63) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.server.ServerMain$Runner.access$100(ServerMain.java:60) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.server.ServerMain.main(ServerMain.java:57) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1061]: Caused by: java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/ClassFilter [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1061]:       ... 38 more [21:36:39] [main/INFO] [STDERR/]: [java.lang.Throwable:printStackTrace:643]: Caused by: java.lang.ClassNotFoundException: jdk.nashorn.api.scripting.ClassFilter [21:36:39] [main/INFO] [STDERR/]: [java.lang.Throwable:printStackTrace:643]:    at java.net.URLClassLoader$1.run(URLClassLoader.java:372) [21:36:39] [main/INFO] [STDERR/]: [java.lang.Throwable:printStackTrace:643]:    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) [21:36:39] [main/INFO] [STDERR/]: [java.lang.Throwable:printStackTrace:643]:    at java.security.AccessController.doPrivileged(Native Method) [21:36:39] [main/INFO] [STDERR/]: [java.lang.Throwable:printStackTrace:643]:    at java.net.URLClassLoader.findClass(URLClassLoader.java:360) [21:36:39] [main/INFO] [STDERR/]: [java.lang.Throwable:printStackTrace:643]:    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) [21:36:39] [main/INFO] [STDERR/]: [java.lang.Throwable:printStackTrace:643]:    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) [21:36:39] [main/INFO] [STDERR/]: [java.lang.Throwable:printStackTrace:643]:    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) [21:36:39] [main/INFO] [STDERR/]: [java.lang.Throwable:printStackTrace:643]:    ... 38 more
    • i tried that but it says the same error
    • No, and it is in fact broken. Firstly, you never register this type, so it will never work correctly. Secondly, you must not create registry entries in static initializers. You did it correctly above: Use this instead. However this is in the wrong class, as particle types (as all registry entries) must be registered on both sides (client and server). As such doing this in a client-only class will never work right.
    • Every time you post you post in the wrong subforum and I have to move your thread. Please take the hint. This is broken. You must not return null from this method. Use NetworkHooks.getEntitySpawningPacket. You must also only spawn your entity and start riding it on the server.
    • Sorry about the wait, I managed to fix the issue by loading in one of my server providers presets and stealing the jar from that. Sorry about wasting your time.
  • Topics

  • Who's Online (See full list)

  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.