Jump to content

Choonster

Moderators
  • Posts

    5160
  • Joined

  • Last visited

  • Days Won

    76

Everything posted by Choonster

  1. The question doesn't make any sense, you can't cast between unrelated types. An Item is a type of item, an ItemStack is a stack of an item. A TileEntity is linked to a block in the world. A TileEntity can store ItemStack s in it, but these ItemStack s don't know anything about where they're being stored. What is it you're trying to achieve?
  2. The IInventory you passed to the Slot constructor is null . I suspect this is because you haven't overridden Block#hasTileEntity to return true , so your TileEntity isn't being created.
  3. Forge recently added an animation system for models. You can see an example of it here (assets).
  4. setupDecompWorkspace gives you the source, setupDevWorkspace doesn't.
  5. So it's definitely still throwing a NullPointerException on line 654 of NetHandlerPlayServer ? Does this happen directly after resuming from the breakpoint on this line when none of the values are null ?
  6. There are doc comments in the Forge/Minecraft code, but I don't think Forge actually compiles Javadoc pages. If you've set up your workspace properly, you should be able to view this code from your IDE.
  7. I don't understand what you mean, sorry. The only values that could cause this crash are this.playerEntity , this.playerEntity.openContainer , slot and this.playerEntity.inventory . Which of these is null ?
  8. I'm not familiar with Eclipse's debugger. Does it not show the values of all current variables somewhere? Does it tell you the value of a variable if you mouseover it? IntelliJ IDEA's debugger looks like this:
  9. I explained how to do this here.
  10. You installed a client-only mod (Resource Loader) on the server.
  11. World#spawnParticle calls IWorldAccess#spawnParticle for every registered IWorldAccess . RenderGlobal (the client-side IWorldAccess ) spawns a particle in its implementation of this method, WorldManager (the server-side IWorldAccess ) does nothing. WorldServer#func_147487_a(String particleName, double x, double y, double z, int numParticles, double displacementX, double displacementY, double displacementZ, double velocity) sends a packet from the server to the clients of the players within 256 blocks of the specified position telling them to spawn particles there. Look at RenderGlobal#doSpawnParticle to see which particle names you can use. Use your IDE to find usages of these methods to see how they're used.
  12. I can't help you much with models or animation myself, but Forge recently added an animation system for models. You can see an example of it here (assets).
  13. That's the crash report rather than the FML log, but it does reveal the issue. The EAQ has a bullet point for this crash, the solution is to lower your view distance.
  14. Like LexManos said, post the FML log. Even the EAQ (which you're supposed to read before posting) tells you to do this. The log will tell us what's actually happening, we can't do much more than guess without it.
  15. Put a breakpoint on the line that the exception is thrown from (line 654 of NetHandlerPlayServer ) and run Minecraft in debug mode. When the breakpoint is hit, look at what's null and having a method called on it or a field access from it.
  16. You need to AND the position index with 2 before you look it up in the values array.
  17. Override Item#onEntityItemUpdate . This is called once per tick by every EntityItem containing an ItemStack of your Item . In your override of this method, check that the entity is on the ground (its onGround field is true ), the block at the entity's position isn't fire and fire can be placed at the entity's position ( Block#canPlaceBlockAt returned true ). If this condition is met, set the block at the entity's position to fire. In 1.7.10, use World#getBlock and World#setBlock to get and set the Block at the specified position. Use the posX , posY and posZ fields of Entity to get an entity's position and MathHelper.floor_double to convert them to integers. In 1.8.x, use World#getBlockState and World#setBlockState to get and set the IBlockState at the specified position. Use IBlockState#getBlock to get the state's Block . Use the BlockPos(Entity) constructor to get an entity's position as a BlockPos .
  18. Call EntityPlayer#setItemInUse from Item#onItemRightClick like ItemBow does.
  19. That looks correct, yes.
  20. If you set the item in use from Item#onItemRightClick , the pulling models returned by Item#getModel will be used (you can adjust the timings for each model in that method). Just make sure you override Item#onItemUseStopped to do nothing.
  21. Just register a model for the bow like you would any other item ( ModelBakery.registerItemVariants and ModelLoader.setCustomModelResourceLocation or ModelLoader.setCustomMeshDefinition ). Since it's never set in use, the pulling models will never be used.
  22. Since the player doesn't actually draw back your bow like they do with the vanilla one, I'd just use a fixed charge value.
  23. I suggest storing the FACING values's horizontal index ( EnumFacing#getHorizontalIndex , an integer in the range [0,3] ) in the lower two bits of the metadata and the POSITION value's ordinal ( Position#ordinal , an integer in the range [0,2] ) or a similar index field in the higher two bits of the metadata. Shift the POSITION index left 2 bits ( << ) then OR ( | ) it with the FACING index. To get the FACING value from the metadata, AND ( & ) it with 3 (the maximum index) and use EnumFacing.getHorizontal to convert it to an EnumFacing . To get the POSITION value from the metadata, shift it right 2 bits ( >> ), AND it with 2 (the maximum index) and get the Position at that index of the array returned by Potion#values . I'll try to implement this myself to provide an example of how it's done. Edit: Correctly capitalised AND.
  24. That should be suitable, but you still need to create the BlockState and convert between state and metadata.
  25. Note that if NEI is running, ItemTooltipEvent won't be fired. To modify NEI's tooltips, you need to implement IContainerTooltipHandler and register it using GuiContainerManager.addTooltipHandler instead.
×
×
  • Create New...

Important Information

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