Jump to content

wildex999

Members
  • Posts

    21
  • Joined

  • Last visited

Converted

  • Gender
    Male
  • Location
    Norway
  • Personal Text
    Oh, it's 2AM? Better start programming!

wildex999's Achievements

Tree Puncher

Tree Puncher (2/8)

0

Reputation

  1. Updated to version 0.1.3, which brings some bugfixes, improves the Patcher and Tick Dynamic will now measure time spent between ticks, and take it into account. Also: - Released a version compatible with Cauldron 1.7.10 - Released a Minecraft 1.8 version
  2. Tick Dynamic http://mods.stjerncraft.com/tickdynamic/media/tickdynamic_1.png[/img] Tick Dynamic is a Minecraft Forge CoreMod, which will attempt to maintain a server Ticks Per Second at 20. It does this by individually controlling how many Entities and TileEntities update each tick. As the server TPS goes down, the number of Entities and TileEntities that update each tick also goes down, to maintain a high server TPS. Detailed description: Example use cases: Planned further development: The mod is currently a Minecraft Forge CoreMod, and is built for Minecraft 1.7.10, Cauldron 1.7.10 and Minecraft 1.8. Download & Documentation: http://mods.stjerncraft.com/tickdynamic/ If you have any questions or problems, you can post them here, or on our GitHub Repository( https://github.com/wildex999/tickdynamic/issues ), and I will try to answer them =)
  3. Whoa, I didn't even think of that. If that was the case the stack trace should show that, but just to test I made my entryUpdated(The one who calls notifyBlockOfNeighborChange) print out a string before and after. It starts to call notifyBlockOfNeighborChange 34 times in a row(Without calling end) before it crashes, so it does indeed seem to be an infinite loop. Thank you so much for pointing out the problem =D I will have to rethink my logic a bit. Still strange that it would give out a NoClassDefFoundError error in this case tho.
  4. No one else has any idea about this? Should I try posting it as an issue on the Forge github?
  5. Thank you all for taking the time to answer =) @Ewe Loon It all works in the development environment, and all of those you mention would give a different error at a different time. I'm able to start up and use my mod normally, until a random point where it just crashes. @GotoLink I'm using ServerTickEvent to do a single shot initialization of certain Tile Entities after they are first loaded. When they are loaded they register themself to do a pre-tick which requires access to the chunk they are on(Which is not available just as they are loaded most of the time). Essentially a onTileEntityLoaded. And again, if that was the cause, it would give a totally different crash message! @TheGreyGhost That was my thought too, but I have tried cleaning, starting from scratch an copying over my sources and everything, nothing seems to work =/ The second crash happens in a TileEntity, which has worldObj set when it's loaded/placed. Also, my World.java:690 doesn't point to notifyBlockOfNeighborChange either, but that's what the crash log say it's currently inside. I'm assuming that Forge does some kind of binary patching that moves the lines? Had it simply been that my code did something weird with the World, it should just crash on Null pointer or some illegal operation, not throw a NoClassDefFoundError, that is what is confusing me. It might be that I somehow screw something up so it throws inside the try block in notifyBlockOfNeighborChange. Could something inside the Catch not be (de)obfuscated correctly?
  6. SOLVED: The issue was that a Block in my mod ended up causing a infinite loop of notifyBlockOfNeighborChange, which seems to cause it to fall back to the original call(Thus not showing a correct stacktrace) with a "java.lang.NoClassDefFoundError: net/minecraft/world/World$2" exception. Hello, I have been working on my mod for quite a while now, and decided to do the first test run outside the Development environment. We are all able to start up a new world and run around using the mod, but at some point we all get a crash due to java.lang.NoClassDefFoundError: net/minecraft/world/World$2 The Setup: New install of Forge 1.7.10 - 10.13.0.1180 No other mods installed except mine I have two crash logs, the first one we hit happens randomly when we open a Chest: http://pastebin.com/Vv0Z5pHa The second one happens for me every time I open a specific world(Which did not crash on first open, and was closed normally) http://pastebin.com/12keR5dx Both crashes happen at: java.lang.NoClassDefFoundError: net/minecraft/world/World$2 at net.minecraft.world.World.func_147460_e(World.java:690) Where func_147460_e is notifyBlockOfNeighborChange. I have really no idea why this crash happens. Nothing in my mod changes base files in any way! The code from my mod that is called in the second crash log is simply this: public void entryUpdated() { 215 redstoneManager.update(); 216 inventoryManager.update(); 217 //TODO: Call onNeighborUpdate(tile) 218 worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType()); 219 worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); } This only happens in the Release build, and not when I'm running from Eclipse, so I have no way to debug this. I'd really appreciate it if anyone could help me with this.
  7. For the Inventory not saving, what debugging have you tried? If you are using Eclipse you can set-up debug points around writeToNBT and readFromNBT at different points and see if it actually writes/reads your items. Then you can figre out if it's a problem with the saving/loading or if there's a problem with the inventory slots etc. Or if you are not using Eclipse, use good old prints(System.out.println).
  8. You don't agree with the solution? Or you don't agree with the fact that I do so much to avoid the flag?
  9. An empty updateEntity doesn't stop it from being called, sure, but returning false in canUpdate() does. Anyway, I know I'm nitpicking when it comes to performance, and I should just go with the flag option unless I actually am able to measure it as a performance problem, but now I just can't put this down So here's the solution I came up with: Use a TickHandler with a list of TileEntities that have loaded, but not yet ticket, and call onLoaded or something on them: private static List<ITileLoadEventListener> tileList = new ArrayList<ITileLoadEventListener>(); @SubscribeEvent public void onServerTick(ServerTickEvent event) { if(event.phase == Phase.START) { for(ITileLoadEventListener listener : tileList) listener.onLoadComplete(); tileList.clear(); } } public static void registerListener(ITileLoadEventListener tile) { tileList.add(tile); } Then a Tile Entity can just register itself as interested in an onLoadComplete event by calling registerListener(this) in either it's constructors, readFromNBT or validate(). This way, I only have one method calling every tick, instead of thousands
  10. Hello, I was just wondering if there is some onLoaded event for Tile Entities that are called AFTER the chunk they are on is loaded? I have a Tile Entity that needs to be aware of any neighbor TileEntities, and while onNeighborChange works great for detecting TileEntities being placed placed and removed, it does not help with the initial scan on Chunk load. So far I have looked at: class constructor - No point, world is not yet loaded. readFromNBT - World/chunk not yet loaded in most cases. validate - Called while chunk is loading, so calling getTileEntity causes infinite loop and crash. onChunkLoad event - Not even close, would be too much work to listen to every Chunk load event and go through every tile entity. So I'm just doing a final check here. Is there any method or event called on a TileEntity after it and it's chunk has been loaded?(I.e, I can call getTileEntity on it's location) I see that normal entities has onChunkLoad called on every entity in the chunk, but not TileEntities? I know I can just use updateEntity() with a flag or something, but I will potentially have thousands of these TileEntities loaded at once, and currently don't have a updateEntity() on them. Would rather try to avoid it. Thank you for your time =)
  11. The mod is on a modpack, which is still running 1.6.4 I just want to provide some bug fixes while people are still playing it. I understand that 1.6.4 is no longer supported, but I still want to find a way to fix this on my end. Thus I'm asking if there was any way to override NetworkModHandler for a mod in 1.6.4
  12. Hey, I'm trying to fix a bug in a 1.6.4 mod, which cases a client crash if the mod is loaded on the client, but not on the server(Dynamic ID allocation messing up). My first attempt was to simply set serverSideRequired = true in @NetworkMod. However, that simply prints a warning to the console and is thus practically useless. Then I figured I'd just check the server's mod list during player login. However, this list is not made available on the client side. The only way I see to do this now, is to override the NetworkModHandler's requiresServerSide() and disconnect when called. But I can't see any way to provide a custom NetworkModHandler. Is this possible? Is there some other method I have overlooked? Using Forge 9.11.1.965
×
×
  • Create New...

Important Information

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