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

Two

Members
  • Posts

    58
  • Joined

  • Last visited

Converted

  • Gender
    Male

Two's Achievements

Stone Miner

Stone Miner (3/8)

4

Reputation

  1. The error occurred again yesterday, and I can now say for sure that it is a re-obfuscation failure. I had just finished an update, did clean & build, tested the result in the IDE (non-obfuscated) and everything was working fine. So I copied the lib from that build to a real MC environment and it failed with the rock issue. I hit clean & build again, copied the lib again and then everything was working fine.
  2. I had this issue starting with at least Forge version 1277 and I still have the issue with 1481. You can find my mods here: https://github.com/twothe/ Affected are all mods that somehow use stone/rock as written above. I could not yet find any pattern to this, it seems to happen just randomly and does not seem to be associated to my code.
  3. I am not sure if there is even any other way. So yes: I am using the standard gradle tasks like clean and build.
  4. Whenever I have a block in my mod that uses Blocks.stone or Materials.rock reobfuscation completely randomly fails sometimes. That is: the code works, then (without any change) I do a re-compile, and the game crashes with Then I recompile the exact same code-base (without any changes) and the crash is gone. I have not seen this happen with anything but Materials.rock / Blocks.stone. This is really annoying when you do a quick recompile to change something like version number after extensive testing, upload the mod just to realize that it is crashing because of this.
  5. I managed to find your topic: http://www.minecraftforge.net/forum/index.php/topic,20135.0.html After some more fiddling with the way Minecraft handles worlds, I realized that the TileEntity (probably) needs to be requested as follows: - On the server: DimensionManager.getWorld(message.dimensionID) - On the client: Minecraft.getMinecraft().theWorld (not sure about this one) The client often re-creates the world around the player, i.E. if he dies, which will cause the tile entity to be re-created as well, which however - to complicate things further - is NOT the tile that is actually used in the world. Also it is unclear to me what happens if the player is in a different dimension (there is only one theWorld) and the server sends an update for that tile entity, which makes me speculate that there is a better way to do this. I'd love to get some more feedback on this if you have the time.
  6. Ok, I will have a look at them. Thank you.
  7. From the corresponding block to the tile entity code above: @Override public boolean onBlockActivated(final World world, final int x, final int y, final int z, final EntityPlayer player, final int side, final float hitX, final float hitY, final float hitZ) { if (world.isRemote == false) { final TileEntity tileEntity = world.getTileEntity(x, y, z); if (tileEntityClass.isInstance(tileEntity)) { tileEntityClass.cast(tileEntity).giveItemsToPlayer(player); } else { FMLLog.severe("Grave TileEntity expected %s, but found %s", tileEntityClass.getName(), tileEntity == null ? "null" : tileEntity.getClass().getName()); } } return true; }
  8. The code that adds the items. Log output tells me that all items are properly added on the server: public void giveItemsToPlayer(final EntityPlayer player) { int count = GravesAssets.itemsPerSecond >= 0 ? GravesAssets.itemsPerSecond / TICKS_PER_SECOND : Integer.MAX_VALUE; FMLLog.info("Giving %d of %d items back to %s...", count, this.inventoryContent.size(), player.getDisplayName()); if (count == 0) { return; } InventoryContent content; final Deque<InventoryContent> notAdded = new LinkedList<InventoryContent>(); while ((count-- > 0) && ((content = this.inventoryContent.poll()) != null)) { FMLLog.info("Returning %s...", content.toString()); try { switch (content.inventoryID) { case INVENTORY_ID_VANILLA: if (player.inventory.getStackInSlot(content.slot) == null) { player.inventory.setInventorySlotContents(content.slot, content.itemStack); } else { notAdded.add(content); FMLLog.info("Failed."); } break; } } catch (Exception e) { FMLLog.warning("Failed to add item to inventory: %s\n%s", e.toString(), content.toString()); } } for (InventoryContent item : notAdded) { FMLLog.info("Adding %s...", item.toString()); if (player.inventory.addItemStackToInventory(item.itemStack) == false) { this.inventoryContent.add(item); FMLLog.info("Failed"); } } if (this.inventoryContent.isEmpty()) { FMLLog.info("All items have been returned"); this.worldObj.setBlockToAir(this.xCoord, this.yCoord, this.zCoord); } else { FMLLog.info("Items remain in grave"); this.markDirty(); } } Neither setInventorySlotContents nor addItemStackToInventory synchronize to the client.
  9. That is what I am doing. The client inventory however stays empty until relogging, then the items magically appear.
  10. I am currently trying to write a mod that sets items to specific player inventory slots (like armor) without using any containers or similar. I got that working so far using player.inventory.setInventorySlotContents(...), however the items are only visible after relogging, which tells me that I am missing something to synchronize that change to the player. How do I properly synchronize a batch change to the player's inventory?
  11. In theory - that's as far as I could figure out - there needs to be a log4j.xml file somewhere, in which some handler needs to be reconfigured in some way to output trace/debug log entries on the IDE console. Italic font parts are those I wasn't able to figure out yet.
  12. The benefit of not doing that is that you can leave important debug output inside the code, but have it hidden in release mode until you need it. System.out will just pollute the output.
  13. I've been searching through the logging configuration for a while but can't seem to figure out how to get the trace/debug output of my mod to log on the console output (what you see when hitting 'run' in your IDE). I can see that the stuff is logged properly to the file, just not to my console. Any help would be appreciated.
  14. I got a fast PC with a fast SSD and it still feels like it takes ages to start Minecraft with Forge and a few mods.
×
×
  • Create New...

Important Information

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