Jump to content

Choonster

Moderators
  • Posts

    5170
  • Joined

  • Last visited

  • Days Won

    77

Everything posted by Choonster

  1. IBlockState s are converted to and from their IDs using Block.BLOCK_STATE_IDS . This is populated each time a Block is registered: The registry iterates through all of the possible states and adds each one to the map using blockId << 4 | block.getMetaFromState(state) as the ID. If multiple states share an ID, whichever one was added last will be returned from ObjectIntIdentityMap#getByValue .
  2. Minecraft uses Netty to send data between the client and server. Netty doesn't know how to send complex objects like IBlockState s over the network and recreate them on the other side, so they need to be broken down into simpler types that Netty does know about (this is a similar concept to storing data in NBT, both are forms of serialisation). In this case Minecraft sends the ID of the IBlockState , which is just an int derived from the Block 's ID and the state's metadata.
  3. I'm not an expert on log4j, but I don't think it's possible to configure an individual Logger . You can include a log4j config file in your mod, but this overwrites the existing configuration provided by Forge.
  4. I'm pretty sure that doc comment is outdated, the method that loads logging configuration files was removed when Minecraft and Forge/FML switched to log4j from Java's Logging API.
  5. This page explains the block model format. For a full cube model with a single texture, just use minecraft:block/cube_all as the parent and set the all texture.
  6. The error tells you exactly what's wrong: Your block model has no elements or parent and your item model has a syntax error.
  7. Post the full error message or upload the full FML log to Gist and link it here.
  8. CodeChickenCore doesn't support 1.8.9.
  9. You need to check that the state's Block ( IBlockState#getBlock ) is Blocks.log , then use IBlockState#getValue to get the value of the BlockOldLog.VARIANT property. If it's BlockPlanks.EnumType.SPRUCE , the log is a Spruce log.
  10. Mojang's Minecraft launcher comes with its own JRE (Java Runtime Environment, the program that actually runs Java code), it doesn't rely on you having Java installed system-wide. I suspect you actually did have Java installed, it just wasn't set as the default program for JAR files. Forge's Windows installer bypasses this by being an EXE (Windows executable) that launches Java itself instead of relying on you to open it with Java. Once a launcher is running, it also knows how to launch Java itself when you run Minecraft.
  11. Override TileEntity#getDescriptionPacket (called on the server to send data to nearby players) to write the data that needs syncing to NBT and return a new S35PacketUpdateTileEntity with that NBT. Override TileEntity#onDataPacket (called when the client receives an S35PacketUpdateTileEntity ) to read data from the packet's NBT.
  12. What you're downloading is a JAR (i.e. a ZIP archive of compiled Java code), not a RAR (a different general-purpose archive format). You've just set WinRAR as the default program to open JAR files, so it's showing you the contents of the JAR instead of executing it. Either set Java as the default program for JAR files (right click on the file, select Open With -> Choose Another App -> Java) or download the Windows installer instead of the cross-platform one.
  13. Are all of your resources in src/main/resources, with assets being in src/main/resources/assets/<modid>?
  14. It's worth noting that IEEP has been deprecated in favour of the Capability system and may eventually be removed.
  15. If you want to fire arrows continuously but still have the player draw back the bow, it may be better to fire them from Item#onItemUseFinish and Item#onPlayerStoppedUsing instead of from Item#onItemRightClick with a cooldown. I've written an example of this here (parent class).
  16. DrZhark's CustomSpawner is for 1.6.2, it can't be used in 1.7.10.
  17. You've mixed up the slash and the colon in your model's texture path. The colon separates the resource domain (your mod ID) from the resource path (the path of the texture relative to assets/<modid>/textures), the slash separates directories within the resource path (like in regular file paths). Use "firstmod:items/key" instead of "firstmod/items:key" . You should use the sided proxy system (i.e. the @SidedProxy annotation) to register your models rather than checking for the client side in your @Mod class. You should also use Forge's ModelLoader.setCustomModelResourceLocation / ModelLoader.setCustomMeshDefinition in preInit instead of Minecraft's ItemModelMesher#register overloads in init/postInit.
  18. When the server sends a block change to the client, the IBlockState is serialised to its ID in the packet. The ID of a state is derived from the Block 's ID and the metadata for that state. If a property doesn't affect metadata, its value won't be synced to clients. If your block requires a property that's not stored in the metadata (e.g. the property is stored in a TileEntity , derived from the other properties or derived from surrounding blocks) to render properly, override Block#getActualState to return an IBlockState with that property set.
  19. World#setBlockState(BlockPos pos, IBlockState newState, int flags) will send the change to the client if flag 2 is present (i.e. (flags & 2) != 0 ). World#setBlockState(BlockPos, IBlockState) calls the other overload with 3 as the flags argument, which means flag 1 (notify neighbours) + flag 2 (send change to client).
  20. You're trying to call AphexMod.addRecipes ; but AphexMod doesn't have an addRecipes method, AphexRecipe does.
  21. This Gist appears to explain the grammar of the animation state machine JSON. I haven't seen any other documentation of it.
  22. I've just compiled and uploaded the latest version of the code here.
  23. You can run the dedicated server and a client on the same computer, I did this myself for quite a while when I last played Minecraft.
  24. You could run a dedicated server and use the /setidletimeout command to set the idle timeout to 0. My mod is under the MIT License (see the LICENSE.txt file), which means you can do pretty much whatever you want with it as long as you retain the license/copyright info. To compile my mod, you'll first need to install the JDK and set the JAVA_HOME environment variable to its location. You can then download or clone my mod from GitHub and run gradlew setupDecompWorkspace to set up the workspace (this only needs to be done once) and gradlew build to build it (the compiled mod will be in build/libs). If you want to edit it, you can install Eclipse or IntelliJ IDEA and follow steps 5 and 6 of this tutorial to set up an IDE project for it. I personally use IDEA, but either will work. Like the name suggests, TestMod3 is just a test mod. I make no guarantees that it's stable or balanced (pretty much everything is creative-only), but things should generally work as they're intended to. If you do encounter an issue, please report it on GitHub.
  25. Are you looking at an old version of the README? The latest MDK's README tells you to use setupDecompWorkspace and only suggests using setupDevWorkspace if you don't need the source code. Even Forge's README suggests using setupDecompWorkspace if you want the decompiled classes.
×
×
  • Create New...

Important Information

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