
thebest108
Members-
Posts
503 -
Joined
-
Last visited
Everything posted by thebest108
-
First off: What does this error mean Secondly: How can I find the thing causing the crash from this In the logs it only gives me [01:16:37] [Netty Client IO #1/ERROR] [FML]: NetworkDispatcher exception io.netty.handler.timeout.ReadTimeoutException How can I get the root cause of this because the error log isnt telling me which class caused it
-
This has been bothering me too much. No matter what I do, I can't seem to fix the stutter caused by receiving new positions. So currently Im sending a packet every tick with the ship's position and velocity and orientation. Im also storing the values of the previous packet received. Even though angular momentum interpolates perfectly, using the same method for translation has "mixed results". Judge for yourself [embed=425,349]<iframe width="560" height="315" src="https://www.youtube.com/embed/dpW0NITzrHw" frameborder="0" allowfullscreen></iframe>[/embed] As you can see the translation is constantly stuttering. Im getting the values using this moddedX = ship.posX+((ship.interpController.latestVelocity.X)*partialTicks); moddedY = ship.posY+(ship.interpController.latestVelocity.Y)*partialTicks; moddedZ = ship.posZ+(ship.interpController.latestVelocity.Z)*partialTicks; Does anyone know a simple interpolation method? I really want to get this released soon Edit: I can't simulate any of the physics on client side and then correct because it's a dynamically changing rigid body, meaning its mathematically impossible to get anything relevant from running it on client. Im just running on velocity here
-
Is there any difference? Like should I use one over the other depending on frequency/size of the data sent?
-
Saving "entity rendering" data on the client side
thebest108 replied to jabelar's topic in Modder Support
Save the animation state server side and then make your entity implement IAdditionalSpawnData so you can send information about what the entity is doing when it spawns. There you can send how far between animations and which animation is playing -
That sure is simpler than access transformers. Its not like they take a long time to set up
-
I cant find it in the Flint & Steel class or the Obsidion class
-
Why don't you just store the facing value in the tile entity itself? By default Minecraft worlds delete tile entities the tick AFTER they were flagged to be removed. That means you can safely get data from the tileEntity for rendering before it gets removed. Just make sure to add a check in your rendering code like if(tileEntity!=null&&!tileEntity.tileEntityInvalid){} to make sure you dont render it after the tick afterwards.
-
Don't use getEntitiesWithinAABB, use getEntitiesWithinAABBExcludingEntity(null, yourAABB).
-
Probably the fact your worldChunkManager is the same one used for the nether. That's the only thing I can see that could be causing it.
-
[1.8] Checking the block the player stands on
thebest108 replied to DerT0bey's topic in Modder Support
If you want to be special specific, look at the method moveEntity in entity.class , that's where it handles things like stepsounds for blocks you're walking on -
[1.8] ¿Entities what happend to entityes when setDead();
thebest108 replied to perromercenary00's topic in Modder Support
No, trust me that's a terrible way of doing it. You'd be surprised at how terrible minecraft is at unloading entities. Trying to run the finalize command for any entity will instantly cause the game to crash, so it doesn't delete the entity instance from the game. What setDead does it it changes isDead=true , which tells everything in the game from collision to rendering to networking to ignore the entity, but it doesn't delete it from memory. I know this too well because I have some entities that can store megabytes of information, and its extremely annoying that they never get deleted from ram until the chunk is unloaded. Overall setDead doesn't delete anything, it just tells many parts of the game to ignore an entity. -
Go look at the forge tutorial on access transformers. Basically you make a text file in the resources folder that has your transformations. What's important to note is that the plugin class only loads the transforms on compiled clients, but in the dev workspace your access transformer is applied when forge is running the setupDecompWorkspace command, so it directly changes the decompiled minecraft classes in your workspace. To tell forge to decompile with your access transformer you have to edit your build.gradle telling it the name of your access transformer. After changing your build file, its automatically applied after your next decompile. The info on the forge tutorial isn't completely accurate, but you can figure it out.
-
First off, that sounds amazing. Secondly when your run the rayTrace method you get a MovingObjectPosition right? In there is a Vector called hitVec. If you wanted to get the exact hit on a 64x64 grid, then you could just do something like this double hitX = MOP.hitVec.xCoord%1 (Using modulus 1 here because you only want the position hit in the block's local space) double hitY = MOP.hitVec.yCoord%1 double hitZ = MOP.hitVec.zCoord%1 if(hitX<0){ hitX++; } if(hitY<0){ hitY++; } if(hitZ<0){ hitZ++; } int pixelX = (int)Math.floor(hitX *64) int pixelY = (int)Math.floor(hitY *64) int pixelZ = (int)Math.floor(hitZ *64) The math here doesn't work out perfectly, but you get the idea.
-
[1.7.10] Failure to Render for Other Players
thebest108 replied to HalestormXV's topic in Modder Support
The most I can recommend is going through your github history and seeing how far along your entity is working, then you can see which commit broke it -
I do know some workarounds you can do to have many partial worlds (Not infinite, but scalable). But for this I would recommend just making a new dimension filled with this structure and just teleporting different players to different structures. If you dont want them all lumped into 1 world, then you'll need some workarounds to avoid having like 100 dimensions loaded and lagging servers. This is a lot harder though getting everything to run on just 1 dimension id.
-
Its no secret that Microsoft is making a push against modders, but this trade agreement is more like pushing modders of cliff! From what's been leaked by Wikileaks the TPP basically makes even looking through a game's files an act of breaking the game company's rights. Even worse the TPP arms companies with the ability to press legal charged for infringing their "rights", and goes as far as to Order Destruction of any devices used to commit this infringement. That means if you were modify a game to remove some BS drm, even if you bought the game and didn't distribute the police would still come to your house, give a hefty fine and then proceed to DESTROY your computer! If this wasn't bad enough, companies can put legal charges (this is a crime now), and SUE YOU for any modifications distributed on a "commercial scale". What commercial means is up to interpretation, but the TPP is explicitly clear that commercial does not mean for profit! (Convenient Right?) If nothing happens the TPP will be passed in a little over 80 days and All Modding becomes Criminal. Its obvious that greedy corporations want absolute control over anything related to their games, and its a shame because some of the best games of all time (CS,TF,Dota to name a few) all started out as mods. Now what the Hell are we supposed to do?! Never mod again after all the Congressmen ignore it and let it get passed? What I'm saying is that if you love mods/modding, then the TPP is effectively the death of all mods. This wasn't an agreement made by politicians, it was done by the largest corporations in the world to maximize their profits and fuck everybody else. Don't take my word, take Jim Sterling's I don't care what your political beliefs are; Let me be clear, under these new laws Forge is Illegal, all of us are Criminals, all the users are Criminals, Microsoft has the rights to Destroy ANY Computer with any trace of mods, and anything that is of "Commercial Distribution" (Basically when corporations feel like it) can get you Sued and Thrown In Jail!!! I'm just trying to spread awareness of this terrible rebirth of SOPA. We Cannot let this get passed! Please spread awareness of the fore-coming death of modding (And most other derivative works as well).
-
[SOLVED] [1.8] Reducing Network Traffic
thebest108 replied to EverythingGames's topic in Modder Support
Packet code? -
So one of the things I've done to get interaction with multiple worlds is I've been quickly changing the position of player before running interactions on other worlds. Using a rotation matrix I've been able to transform the player pos before things like block placement, tile entities, etc. I know this is terrible on client side because the rendering thread can start a frame between these translations, but its fine on server right? I havent seen any problems with it so far, but would the net thread be sending packets on a different schedule than a tick (ie would the net thread send player position between ticks or only before/after )
-
Eh, well if you really want to know the answers I think the only place you could really find them is with the Smart Moving Mod. http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1274224-smart-moving Decompile it using a tool called Bearded Octo Nemesis, and another tool called JDGUI. (The auto download feature in BON is broken I think, but I know it works with manual installs of forge) It doesnt look like the author has bothered maintaining the mod anyway
-
[1.7.2] Replacing vanilla abstract method in EntityLivingBase
thebest108 replied to Sokaya's topic in Modder Support
ASM is probably the only way to do it. Sorry m8 I hate it too. Theres a good example of it here though, you could get it working by just changing the names of what this guy did to whatever you want to change. https://bitbucket.org/cuchaz/ships/src -
Or just have your render class render it completely different ways depending on some variable in the tileEntity. Ez
-
First off I would try using setEntityBoundingBox to change the AABB instead of setBB. Secondly try changing the player height/width as well, methods like setPosition(x,y,z) will always use those when creating a new bounding box for the player. The method setSize() when only called on server doesnt send anything to clients. Are you sure that your process player is actually running on the player. I would write an int to your packet which would be player.getEntityId(). Then on client side get the player using World.getEntityById(the id).
-
[1.7.10] Ray Trace Equivalency on server side
thebest108 replied to Thornack's topic in Modder Support
Really? Nobody's bothered answering this... Anyway its pretty easy to rayTrace on server side. Use the method World.rayTraceBlocks(Vec3,Vec3) to get a movingObjectPosition. The harder part is to get the look vector for the player. If I remember correctly the look vec you get from Entity.getLook() isnt the same on the server. Just write some sort of packet that sends the player look vec from the client to the server. Assuming you have the look Vec the rest is easy. You'll want to use Player.getPositionVector and offset that by the player eye height (Look at player.getPositionEyes for this, that method is only on client side so you'll have to make something yourself). So the first vector would be your player.getPositionEyes(), the second vector will be player.getPositionEyes().add(lookVector.multiply(Your distance to rayTrace)). Hope this helps -
Heres what youve got to do m8. In the moveEntity method, the game calls a couple Block.onEntityCollidedWithBlock() methods. There you have the entity.setInWeb() being called by BlockWeb. You'll need to use asm to override either the moveEntity method or the BlockWeb class. Asm is the only way to make it work