Jump to content

Choonster

Moderators
  • Posts

    5160
  • Joined

  • Last visited

  • Days Won

    76

Everything posted by Choonster

  1. Use Block#getMaterial to get a Block's Material or use Block#isWood to check if a Block is wood.
  2. Do you have CCC and NEI in your Eclipse project anyway or are they missing? They may have been already been downloaded.
  3. You can use StatCollector.translateToLocal to translate a key (e.g. "translation.test.none") to the current language.
  4. Ah, I wasn't entirely sure what ObfuscationReflectionHelper was for. Thanks for informing me. ReflectionHelper won't automatically obfuscate/deobfuscate names for you, but it does let you provide both the MCP and SRG names of a field/method to save you the trouble of using reflection on both names individually.
  5. AbstractClientPlayer#getSkinType will return "slim" or "default" depending on whether the player is using the Alex or Steve skin type, respectively. To change a player's skin, call AbstractClientPlayer#getPlayerInfo using reflection to get the player's NetworkPlayerInfo then use reflection to set the NetworkPlayerInfo#locationSkin field.
  6. Your @SidedProxy annotation doesn't match the actual location of your proxy classes. Namespaces are case-sensitive, com.Northcraft.mod is not the same as com.northcraft.mod.
  7. Which line is 150? Your reflection probably won't work on obfuscated clients since the method is present with its SRG name (EntityRenderer#func_175069_a) rather than its MCP (deobfuscated) name. FML's ReflectionHelper and ObfuscationReflectionHelper will help with this.
  8. ChunkProviderGenerate has a fixed number of fields containing the vanilla structures to generate, but you can replace them with your own using InitMapGenEvent. You may be able to extend MapGenVillage to generate both vanilla villages and your own villages, but it would probably be a fairly hackish solution.
  9. Override Item#onItemRightClick to toggle the EntityPlayer's flight ability using the fields I described in my original post. You'll probably want to do this on the server and call EntityPlayer#sendPlayerAbilities to sync it with the client (I haven't tried to implement this, so I'm not entirely sure).
  10. The EntityPlayer#capabilities field holds the player's PlayerCapabilities instance. The PlayerCapabilities#allowFlying field controls whether or not the player can fly.
  11. It seems that IRecipe#getRemainingItems was only added in 1.8. I'm not sure it's possible to do this with vanilla items in 1.7.10. For your own items, you can use the container item system to damage the item with each craft. I have an example of this here.
  12. To use ore dictionary ingredients, you need to create a ShapedOreRecipe or ShapelessOreRecipe and add it with GameRegistry.addRecipe. To make a recipe that damages an axe, you need to create your own recipe class. I wrote a class here that does exactly that (I add an instance of it here). This doesn't support ore dictionary ingredients, but you could adapt it to extend ShapelessOreRecipe instead of ShapelessRecipes.
  13. Do you want to add buildings to existing villages or create your own villages from scratch? If it's the former, I explain how to do that briefly here. If it's the latter, you may be able to use FML's IWorldGenerator as a wrapper for your MapGenStructure class (since MapGenStructure sets blocks in the World directly rather than using the Block array like other MapGen classes).
  14. Do you have a blockstates file for the new block? Try following The Grey Ghost's blog post on troubleshooting model errors.
  15. If you look at the usages of CreativeTabs#getBackgroundImageName, you'll see that it's only used on this line of GuiContainerCreative: this.mc.getTextureManager().bindTexture(new ResourceLocation("textures/gui/container/creative_inventory/tab_" + creativetabs.getBackgroundImageName())); So your texture needs to be in assets/minecraft/textures/gui/container/creative_inventory/tab_<name> rather than your mod's regular assets folder.
  16. LivingAttackEvent would indeed be a better choice for this. For some reason I thought it was fired when a living entity attacked something rather than when a living entity is attacked by something. You should be able to use e.source.getSourceOfDamage() to get the attacking Entity (like your original code), Entity#attackEntityFrom to attack the mob and Event#cancel to cancel the event (preventing the damage to the entity with the potion effect). instanceof will simply return false if used with a null value, so you don't need to explicitly check for null before using it.
  17. You don't need to include water in your model, just set the block's Material to water and add the BlockLiquid.LEVEL property to your BlockState with a default value of 15. You'll also need to register a custom StateMapper to ignore this property when looking for the model. You can see how BoP does this here and how I do it here.
  18. In your blockstates file you have "particle": "blocks/wool_colored_light_blue", this is wrong because Minecraft expects each value in the "variants" object to be an array or an object but you've used a string. Particles are only defined in models anyway, so you should delete the line entirely.
  19. LivingUpdateEvent doesn't have a DamageSource source field (because it's not at all related to an Entity taking damage). You shouldn't need to manually remove the PotionEffect when it runs out, EntityLivingBase will do that automatically. If you want to react to and cancel damage received by an EntityLivingBase, subscribe to LivingHurtEvent instead.
  20. Your preInit method has FMLInitializationEvent as its parameter instead of FMLPreInitializationEvent. This means it's still being called during init instead of preInit.
  21. You can replace vanilla's block models with a resource pack.
×
×
  • Create New...

Important Information

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