Jump to content

[1.7.10] Approximating a rotated bounding box for an entity.


Blargerist
 Share

Recommended Posts

In the interest of making things pretty, I'm wanting to make it appear that my entity(which is similar to EntityFallingBlock) partially slides through blocks when moving horizontally and vertically at the same time.

 

Unfortunately since Minecraft uses axis aligned bounding boxes, it's not exactly possible to simply rotate the bounding box. Is there any way to perhaps combine multiple axis aligned bounding boxes to create an approximation of a rotated bounding box? I know things like the Ender Dragon use multiple child entities in order to create a more complex box. Is child entities the only possible way? If so, I'm not sure prettiness would be worth the extra server load.

 

noClip is of course an option for causing the same sliding effect, but I am hoping to avoid handling turning that on/off at the correct times.

Link to comment
Share on other sites

Hi

 

I'm not sure what you mean by "partially slides through blocks".  What are you trying to achieve, exactly?  I think that Axis Aligned Bounding Box might not actually have anything to do with it.  AABB is used for detecting collisions with other entities or with the scenery, I don't think it affects the entity render.

 

-TGG

Link to comment
Share on other sites

By "bounding box" I mean whichever collision box within an entity stop the entity from moving inside of a block in the world. Apologies if I'm using the wrong term.

 

Ok, let me try to explain better what the effect I'm going for is. Imagine if a block of sand could slide off of a block it's sitting on top of, rather than simply being able to fall straight downwards when it has nothing below it. The EntityFallingBlock created for this , with its 0.98 x 0.98 bounding box, would only be able to move straight to the side by 1 block, before it would be able to fall downwards. The effect I'm after, is allowing the entity to move in an arcing motion, closer to a 45 degree angle. One might think that simply making a smaller bounding box for the entity would work, but the entity needs to extend far enough in each direction in order to properly collide with blocks on the ground before placement. In order to collide/not collide at the right time, it would effectively need an approximated diamond shape.

 

I'm currently leaning towards using temporary noClip for this instead of messing with the bounding box, I'm just seeing what my options are.

 

If that makes no sense(which it probably doesn't), I'm basically asking if it's somehow possible to make a more complex bounding box out of multiple cubes instead of a single cube.

Link to comment
Share on other sites

Well, I don't get exactly what your saying, but if I understand relatively correctly then you are looking to make an update that uses multiple bounding boxes. To do this create either a list of AxisAlignedBB objects or just another AABB field. Then, create an void onUpdate or onEntityUpdate function in the entity's class and in that do super.onEntityUpdate() or super.onUpdate() and then do something like this

List<Entity> ents = worldObj.getEntitiesWithinAABBExcludingEntity(this, boundingBox);
ents.addAll(worldObj.getEntitiesWithinAABBExcludingEntity(this, boundingBox2));

or

List<Entity> ents = worldObj.getEntitiesWithinAABBExcludingEntity(this, boundingBox);
for(AxisAlignedBB bbox : listOfAABBs) {
ents.addAll(worldObj.getEntitiesWithinAABBExcludingEntity(this, bbox);
}

EDIT: never mind my last part, it is useless for this task (I'm not sure your explaining what you want right) if you wanted to mess with AABBs, this would work.

Power, even in the Darkness, Courage shall prevail

Link to comment
Share on other sites

Hi

 

Well if you want your sand to slide off other blocks, you don't need to use multiple bounding boxes at all.  Just put some custom "sliding collision" logic in the entity update method, to replace the vanilla update code in your entity. eg get the collision boxes of the nearby objects and use your custom non-axis-aligned collision detection to figure out which way the entity should move.

 

If you want other blocks to slide off your custom block, then that's a lot harder, but I don't think you need that?

 

-TGG

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.

Guest
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.

 Share



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Im trying to host a minecraft server using the curseforge serverpack from FTB Direwolf20 and when I try to start the server I run into an error The Error: Starting server A problem occurred running the Server launcher.java.lang.reflect.InvocationTargetException         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)         at java.lang.reflect.Method.invoke(Unknown Source)         at cpw.mods.fml.relauncher.ServerLaunchWrapper.run(ServerLaunchWrapper.java:43)         at cpw.mods.fml.relauncher.ServerLaunchWrapper.main(ServerLaunchWrapper.java:12) Caused by: java.lang.NoClassDefFoundError: org/apache/logging/log4j/Level         at net.minecraft.launchwrapper.Launch.launch(Launch.java:94)         at net.minecraft.launchwrapper.Launch.main(Launch.java:28)         ... 6 more Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.Level         at java.net.URLClassLoader$1.run(Unknown Source)         at java.net.URLClassLoader$1.run(Unknown Source)         at java.security.AccessController.doPrivileged(Native Method)         at java.net.URLClassLoader.findClass(Unknown Source)         at java.lang.ClassLoader.loadClass(Unknown Source)         at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)         at java.lang.ClassLoader.loadClass(Unknown Source)         ... 8 more   I'have tried deleting and downloading the newset version of java wich didnt work and now im using an older version which is the 1.7.0_80 Here is what my Server folder looks like: https://ibb.co/jkbfRY7 Here is what the ServerStart.bat file looks like: @if NOT "%FTB_VERBOSE%"=="yes" ( @echo off ) call settings.bat if NOT EXIST minecraft_server.1.7.10.jar ( goto install ) if NOT EXIST libraries\%LAUNCHWRAPPER% ( goto install ) goto skipinstall :install echo running install script! call FTBInstall.bat :skipinstall REM Check if java in path REM TODO: use %JAVACMD% where java > NUL 2>&1 if %ERRORLEVEL% NEQ 0 ( echo No java binary in path. Can't run server, exiting... pause exit /B ) REM Test JVM REM e.g. 32-bit JVM does not have server\jvm.dll library java -server -version > java-test.log 2>&1 if %ERRORLEVEL% NEQ 0 ( echo Detected following JVM error: echo ======================================= more java-test.log echo ======================================= echo JVM test failed. Can't run server, Exiting... pause exit /B ) if not exist eula.txt ( echo Missing eula.txt. Startup will fail and eula.txt will be created echo Make sure to read eula.txt before playing! goto startserver ) find "eula=false" eula.txt 1 > NUL 2>&1 if %ERRORLEVEL% EQU 0 ( echo Make sure to read eula.txt before playing! Exiting. pause exit /B ) del /f /q autostart.stamp > nul 2>1 :startserver echo Starting server java -server -Xms512M -Xmx2048M -XX:PermSize=256M -XX:+UseParNewGC -XX:+CMSIncrementalPacing -XX:+CMSClassUnloadingEnabled -XX:ParallelGCThreads=2 -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10 -jar FTBServer-1.7.10-1558.jar nogui :server_loop if exist autostart.stamp ( del /f /q autostart.stamp > nul 2>1 echo If you want to completely stop the server process now, press Ctrl+C before the time is up! for /l %%i in (5,-1,1) do ( echo Restarting server in %%i choice /t 1 /d y > nul ) echo Starting server now java -server -Xms512M -Xmx2048M -XX:PermSize=256M -XX:+UseParNewGC -XX:+CMSIncrementalPacing -XX:+CMSClassUnloadingEnabled -XX:ParallelGCThreads=2 -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10 -jar FTBServer-1.7.10-1558.jar nogui echo Server process finished goto :server_loop ) echo Exiting... pause  
    • Made a modpack (Well Rounded Blockheads, in case the modlist on curseforge helps) and server to host it, worked fine until last night. The issue that pops up after some days being up/working is when you leave a world (singleplayer) or shutdown a server, the process hangs and jumps to 8.5gb ram used, eats up CPU usage (50-60% in taskman on a 3800x) and just sits there. If done on a single player world, the game doesnt fully crash, (e.g. if you alt+f4 buttons like save and quit, options stay in the window, are still clickable but they do nothing) Saving seems to still happen, as location/inventory updates if I restart server or client and play the world again.   If I start the currently afflicted server but dont login the server closes properly, its only once I log back in the problem occurs. Its a priv server and I dont have anyone else to test atm so Idk if its a prob with my player or players/area in general. Only recent changes in game are the additions of a pnuematicraft pressure chamber, an enchanting table, and bookshelves from builders crafts and additions.... I've been trying to get help on this all day, so ANY assistance goes a long way, even if its a way to debug this myself >~< Debug/Latest logs
    • Thanks warjort. I was afraid, that this is because they are entities. Now I know where to dig. But what about water, for example? I have checked via debug code, that there is no entity there (appropriate method return null). What is wrong with liquids?
    • After attempting to run it again today, the debug.log is still showing the same file, so it definitely isn't updating.
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.