
Monstrous_Apple
Members-
Posts
217 -
Joined
-
Last visited
Everything posted by Monstrous_Apple
-
[1.8.9] Custom Mob Drops Only With Specific Item?
Monstrous_Apple replied to Monstrous_Apple's topic in Modder Support
So if D7 was wrong what should I do? -
[1.8.9] Custom Mob Drops Only With Specific Item?
Monstrous_Apple replied to Monstrous_Apple's topic in Modder Support
So if D7 was wrong what should I do? -
[1.8.9] Custom Mob Drops Only With Specific Item?
Monstrous_Apple replied to Monstrous_Apple's topic in Modder Support
What do I add to this exact code to make it so that the pig will only drop a "pig soul" when holding (a.k.a killing the pig with) a certain sword? //Pig Soul @SubscribeEvent public void addEntityDrop5 (LivingDropsEvent event) { if (event.entity instanceof EntityPig) { ItemStack itemstack = new ItemStack(MASouls.PigSoul, 1); event.drops.add(new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY, event.entity.posZ, itemstack)); } } -
What do I add to this exact code to make it so that the pig will only drop a "pig soul" when holding (a.k.a killing the pig with) a certain sword? //Pig Soul @SubscribeEvent public void addEntityDrop5 (LivingDropsEvent event) { if (event.entity instanceof EntityPig) { ItemStack itemstack = new ItemStack(MASouls.PigSoul, 1); event.drops.add(new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY, event.entity.posZ, itemstack)); } }
-
I only have one block state but in models blocks I have them all, do I need to make the block states for the rest too? I also have this as the one block state: { "variants": { "type=wood": { "model": "ma:wood_block_breaker" }, "type=stone": { "model": "ma:stone_block_breaker" }, "type=iron": { "model": "ma:iron_block_breaker" }, "type=gold": { "model": "ma:gold_block_breaker" }, "type=diamond": { "model": "ma:diamond_block_breaker" }, "type=copper": { "model": "ma:copper_block_breaker" } } }
-
I only have one block state but in models blocks I have them all, do I need to make the block states for the rest too? I also have this as the one block state: { "variants": { "type=wood": { "model": "ma:wood_block_breaker" }, "type=stone": { "model": "ma:stone_block_breaker" }, "type=iron": { "model": "ma:iron_block_breaker" }, "type=gold": { "model": "ma:gold_block_breaker" }, "type=diamond": { "model": "ma:diamond_block_breaker" }, "type=copper": { "model": "ma:copper_block_breaker" } } }
-
Well I managed to get the textures working... well sort of, they load in creative tabs and in my hand, but when I place down the stone, iron, gold, diamond or copper blocks they still have the wood blocks texture? If you have a look at the above code you'll understand what I mean
-
Well I managed to get the textures working... well sort of, they load in creative tabs and in my hand, but when I place down the stone, iron, gold, diamond or copper blocks they still have the wood blocks texture? If you have a look at the above code you'll understand what I mean
-
The strange thing is, my gears textures load it's my block breaker textures that don't?
-
The strange thing is, my gears textures load it's my block breaker textures that don't?
-
Okay I got that error sorted, but now my textures don't load, can anyone tell why from this?:
-
Okay I got that error sorted, but now my textures don't load, can anyone tell why from this?:
-
I was passing it to MAMetaBlocks, is there something wrong I did in there? Client Proxy: package com.MonstrousApple.mod.proxy; import com.MonstrousApple.mod.blocks.MABlocks; import com.MonstrousApple.mod.blocks.MAMetaBlocks; import com.MonstrousApple.mod.items.MAItems; import com.MonstrousApple.mod.metadataitems.MAMetadataItems; import com.MonstrousApple.mod.render.MABlockRender; import com.MonstrousApple.mod.render.MAGemRender; import com.MonstrousApple.mod.render.MAGemstoneRender; import com.MonstrousApple.mod.render.MAItemRender; import com.MonstrousApple.mod.render.MAMetadataItemRender; import com.MonstrousApple.mod.render.MAOreRender; import com.MonstrousApple.mod.render.MASoulRender; import net.minecraft.client.resources.model.ModelBakery; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; public class ClientProxy extends CommonProxy { public void preInit(FMLPreInitializationEvent preEvent) { super.preInit(preEvent); } public void init(FMLInitializationEvent event) { super.init(event); MABlockRender.registerBlockRender(); MAItemRender.registerItemRender(); MAOreRender.registerOreRender(); MAGemRender.registerGemRender(); MASoulRender.registerSoulRender(); MAGemstoneRender.registerGemstoneRender(); MAMetadataItemRender.registerMetadataItemRender(); } @Override public void registerModelBakery() { //Gears ModelBakery.registerItemVariants(MAMetadataItems.Gear, new ResourceLocation("ma:WoodGear")); ModelBakery.registerItemVariants(MAMetadataItems.Gear, new ResourceLocation("ma:StoneGear")); ModelBakery.registerItemVariants(MAMetadataItems.Gear, new ResourceLocation("ma:IronGear")); ModelBakery.registerItemVariants(MAMetadataItems.Gear, new ResourceLocation("ma:GoldGear")); ModelBakery.registerItemVariants(MAMetadataItems.Gear, new ResourceLocation("ma:DiamondGear")); ModelBakery.registerItemVariants(MAMetadataItems.Gear, new ResourceLocation("ma:CopperGear")); //Block Breakers ModelBakery.registerItemVariants(Item.getItemFromBlock(MAMetaBlocks.block_breaker), new ResourceLocation ("ma:wood_block_breaker")); ModelBakery.registerItemVariants(Item.getItemFromBlock(MAMetaBlocks.block_breaker), new ResourceLocation ("ma:stone_block_breaker")); ModelBakery.registerItemVariants(Item.getItemFromBlock(MAMetaBlocks.block_breaker), new ResourceLocation ("ma:iron_block_breaker")); ModelBakery.registerItemVariants(Item.getItemFromBlock(MAMetaBlocks.block_breaker), new ResourceLocation ("ma:gold_block_breaker")); ModelBakery.registerItemVariants(Item.getItemFromBlock(MAMetaBlocks.block_breaker), new ResourceLocation ("ma:diamond_block_breaker")); ModelBakery.registerItemVariants(Item.getItemFromBlock(MAMetaBlocks.block_breaker), new ResourceLocation ("ma:copper_block_breaker")); } public void postInit(FMLPostInitializationEvent postEvent) { super.postInit(postEvent); } } MAMetaBlocks: package com.MonstrousApple.mod.blocks; import com.MonstrousApple.mod.MAGlobal; import com.MonstrousApple.mod.handler.EnumHandler; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraftforge.fml.common.registry.GameRegistry; public class MAMetaBlocks { public static Block block_breaker; public static void init() { block_breaker = new BlockBlockBreaker("block_breaker"); } public static void register() { GameRegistry.registerBlock(block_breaker, ItemBlockMeta.class, "block_breaker"); } public static void registerRenders() { for(int i = 0; i < EnumHandler.BlockBreakerTypes.values().length; i++) { registerRender(block_breaker, i, EnumHandler.BlockBreakerTypes.values()[i].getName() + "_block_breaker"); } } public static void registerBlock(Block block) { GameRegistry.registerBlock(block, block.getUnlocalizedName().substring(5)); System.out.println("Registered Block: " + block.getUnlocalizedName().substring(5)); } public static void registerRender(Block block, int meta, String fileName) { Item item = Item.getItemFromBlock(block); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, meta, new ModelResourceLocation(MAGlobal.MOD_ID + ":" + fileName, "inventory")); } }
-
I was passing it to MAMetaBlocks, is there something wrong I did in there? Client Proxy: package com.MonstrousApple.mod.proxy; import com.MonstrousApple.mod.blocks.MABlocks; import com.MonstrousApple.mod.blocks.MAMetaBlocks; import com.MonstrousApple.mod.items.MAItems; import com.MonstrousApple.mod.metadataitems.MAMetadataItems; import com.MonstrousApple.mod.render.MABlockRender; import com.MonstrousApple.mod.render.MAGemRender; import com.MonstrousApple.mod.render.MAGemstoneRender; import com.MonstrousApple.mod.render.MAItemRender; import com.MonstrousApple.mod.render.MAMetadataItemRender; import com.MonstrousApple.mod.render.MAOreRender; import com.MonstrousApple.mod.render.MASoulRender; import net.minecraft.client.resources.model.ModelBakery; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; public class ClientProxy extends CommonProxy { public void preInit(FMLPreInitializationEvent preEvent) { super.preInit(preEvent); } public void init(FMLInitializationEvent event) { super.init(event); MABlockRender.registerBlockRender(); MAItemRender.registerItemRender(); MAOreRender.registerOreRender(); MAGemRender.registerGemRender(); MASoulRender.registerSoulRender(); MAGemstoneRender.registerGemstoneRender(); MAMetadataItemRender.registerMetadataItemRender(); } @Override public void registerModelBakery() { //Gears ModelBakery.registerItemVariants(MAMetadataItems.Gear, new ResourceLocation("ma:WoodGear")); ModelBakery.registerItemVariants(MAMetadataItems.Gear, new ResourceLocation("ma:StoneGear")); ModelBakery.registerItemVariants(MAMetadataItems.Gear, new ResourceLocation("ma:IronGear")); ModelBakery.registerItemVariants(MAMetadataItems.Gear, new ResourceLocation("ma:GoldGear")); ModelBakery.registerItemVariants(MAMetadataItems.Gear, new ResourceLocation("ma:DiamondGear")); ModelBakery.registerItemVariants(MAMetadataItems.Gear, new ResourceLocation("ma:CopperGear")); //Block Breakers ModelBakery.registerItemVariants(Item.getItemFromBlock(MAMetaBlocks.block_breaker), new ResourceLocation ("ma:wood_block_breaker")); ModelBakery.registerItemVariants(Item.getItemFromBlock(MAMetaBlocks.block_breaker), new ResourceLocation ("ma:stone_block_breaker")); ModelBakery.registerItemVariants(Item.getItemFromBlock(MAMetaBlocks.block_breaker), new ResourceLocation ("ma:iron_block_breaker")); ModelBakery.registerItemVariants(Item.getItemFromBlock(MAMetaBlocks.block_breaker), new ResourceLocation ("ma:gold_block_breaker")); ModelBakery.registerItemVariants(Item.getItemFromBlock(MAMetaBlocks.block_breaker), new ResourceLocation ("ma:diamond_block_breaker")); ModelBakery.registerItemVariants(Item.getItemFromBlock(MAMetaBlocks.block_breaker), new ResourceLocation ("ma:copper_block_breaker")); } public void postInit(FMLPostInitializationEvent postEvent) { super.postInit(postEvent); } } MAMetaBlocks: package com.MonstrousApple.mod.blocks; import com.MonstrousApple.mod.MAGlobal; import com.MonstrousApple.mod.handler.EnumHandler; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraftforge.fml.common.registry.GameRegistry; public class MAMetaBlocks { public static Block block_breaker; public static void init() { block_breaker = new BlockBlockBreaker("block_breaker"); } public static void register() { GameRegistry.registerBlock(block_breaker, ItemBlockMeta.class, "block_breaker"); } public static void registerRenders() { for(int i = 0; i < EnumHandler.BlockBreakerTypes.values().length; i++) { registerRender(block_breaker, i, EnumHandler.BlockBreakerTypes.values()[i].getName() + "_block_breaker"); } } public static void registerBlock(Block block) { GameRegistry.registerBlock(block, block.getUnlocalizedName().substring(5)); System.out.println("Registered Block: " + block.getUnlocalizedName().substring(5)); } public static void registerRender(Block block, int meta, String fileName) { Item item = Item.getItemFromBlock(block); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, meta, new ModelResourceLocation(MAGlobal.MOD_ID + ":" + fileName, "inventory")); } }
-
Anyone know what the error is? Because I have no actual errors showing but it crashes when I try to load the game up?
-
Anyone know what the error is? Because I have no actual errors showing but it crashes when I try to load the game up?
-
Well I thought I did... here's my class's: MAEnumHandler: package com.MonstrousApple.mod.handler; import net.minecraft.util.IStringSerializable; public class MAEnumHandler { public enum BlockBreakerTypes implements IStringSerializable { Wood(0, "Wood"), Stone(1, "Stone"), Iron(2, "Iron"), Gold(3, "Gold"), Diamond(4, "Diamond"), Copper(5, "Copper"); private int ID; private String name; private BlockBreakerTypes(int ID, String name) { this.ID = ID; this.name= name; } public String getName(){ return name; } public int getID() { return ID; } @Override public String toString() { return getName(); } } } MABlocks: package com.MonstrousApple.mod.blocks; import com.MonstrousApple.mod.blocks.crops.MABananaCropDrop; import com.MonstrousApple.mod.blocks.crops.MACherryCropDrop; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.world.IBlockAccess; import net.minecraftforge.fml.common.registry.GameRegistry; public class MABlocks { //Blocks public static Block CompressedStone; public static Block BlockBreaker; public static void initBlocks() { //Blocks; GameResistry.registerBlock (Name of Block = new MABlock("Name of Block", Material.rock, hardness, resistance), "Name of Block"); //Harvest Levels; 0 = Wooden/Gold Can Mine || 1 = Stone Can Mine || 2 = Iron Can Mine || 3 = Diamond Can Mine. GameRegistry.registerBlock(CompressedStone = new MABlock("CompressedStone", Material.rock, 3, 20), "CompressedStone"); CompressedStone.setHarvestLevel("pickaxe", 0); GameRegistry.registerBlock(BlockBreaker, MAMetaBlocks.class, "BlockBreaker"); } } MABlockBreaker: package com.MonstrousApple.mod.blocks; import java.util.List; import com.MonstrousApple.mod.MAGlobal; import com.MonstrousApple.mod.handler.MAEnumHandler; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockState; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockPos; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; public class MABlockBreaker extends Block implements IMetaBlockName { public static final PropertyEnum TYPE = PropertyEnum.create("TYPE", MAEnumHandler.BlockBreakerTypes.class); public MABlockBreaker(String unlocalizedName) { super(Material.rock); this.setUnlocalizedName(unlocalizedName); this.setCreativeTab(MAGlobal.maCreativeTabBlocks); this.setDefaultState(this.blockState.getBaseState().withProperty(TYPE, MAEnumHandler.BlockBreakerTypes.Wood)); } @Override public void getSubBlocks(Item item, CreativeTabs tab, List<ItemStack> list) { list.add(new ItemStack(item, 1, 0)); list.add(new ItemStack(item, 1, 1)); list.add(new ItemStack(item, 1, 2)); list.add(new ItemStack(item, 1, 3)); list.add(new ItemStack(item, 1, 4)); list.add(new ItemStack(item, 1, 5)); } @Override protected BlockState createBlockState() { return new BlockState(this, new IProperty[] { TYPE }); } @Override public IBlockState getStateFromMeta(int meta) { if(meta == 0) { return this.getDefaultState().withProperty(TYPE, MAEnumHandler.BlockBreakerTypes.Wood); } if(meta == 1) { return this.getDefaultState().withProperty(TYPE, MAEnumHandler.BlockBreakerTypes.Stone); } if(meta == 2) { return this.getDefaultState().withProperty(TYPE, MAEnumHandler.BlockBreakerTypes.Iron); } if(meta == 3) { return this.getDefaultState().withProperty(TYPE, MAEnumHandler.BlockBreakerTypes.Gold); } if(meta == 4) { return this.getDefaultState().withProperty(TYPE, MAEnumHandler.BlockBreakerTypes.Diamond); } if(meta == 5) { return this.getDefaultState().withProperty(TYPE, MAEnumHandler.BlockBreakerTypes.Copper); } return this.getDefaultState().withProperty(TYPE, MAEnumHandler.BlockBreakerTypes.Wood); } @Override public int getMetaFromState(IBlockState state) { MAEnumHandler.BlockBreakerTypes type = (MAEnumHandler.BlockBreakerTypes) state.getValue(TYPE); return type.getID(); } @Override public int damageDropped(IBlockState state) { return this.getMetaFromState(state); } @Override public String getSpecialName(ItemStack stack) { if(stack.getItemDamage() == 0) { return "Wood"; } if(stack.getItemDamage() == 1) { return "Stone"; } if(stack.getItemDamage() == 2) { return "Iron"; } if(stack.getItemDamage() == 3) { return "Gold"; } if(stack.getItemDamage() == 4) { return "Diamond"; } if(stack.getItemDamage() == 5) { return "Copper"; } return "Wood"; } @Override public ItemStack getPickBlock(MovingObjectPosition target, World world, BlockPos pos, EntityPlayer player) { return new ItemStack(Item.getItemFromBlock(this), 1, this.getMetaFromState(world.getBlockState(pos))); } } IMetaBlockName: package com.MonstrousApple.mod.blocks; import net.minecraft.item.ItemStack; public interface IMetaBlockName { String getSpecialName(ItemStack stack); } MAMetaBlocks: package com.MonstrousApple.mod.blocks; import net.minecraft.block.Block; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; public class MAMetaBlocks extends ItemBlock { public MAMetaBlocks(Block block) { super(block); if(!(block instanceof IMetaBlockName)) { throw new IllegalArgumentException(String.format("The given Block %s is not an instance of IMetaBlockName", block.getUnlocalizedName())); } this.setMaxDamage(0); this.setHasSubtypes(true); } public int getMetaData(int damage) { return damage; } @Override public String getUnlocalizedName(ItemStack stack) { return super.getUnlocalizedName(stack) + "." + ((IMetaBlockName)this.block).getSpecialName(stack); } } MAMetaBlockRender: package com.MonstrousApple.mod.render; import com.MonstrousApple.mod.MAGlobal; import com.MonstrousApple.mod.blocks.MABlocks; import com.MonstrousApple.mod.handler.MAEnumHandler; import com.MonstrousApple.mod.ores.MAOres; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraftforge.fml.common.registry.GameRegistry; public class MAMetablockRender { public static void registerBlockRender() { //Meta Blocks for(int i = 0; i < MAEnumHandler.BlockBreakerTypes.values().length; i++) { regBlock(BlockBreaker, i, MAEnumHandler.BlockBreakerTypes.values()[i].getName() + "BlockBreaker"); } } public static void regBlock(Block block, int meta, String fileName) { Item item = Item.getItemFromBlock(block); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, meta, new ModelResourceLocation(MAGlobal.MOD_ID + ":" + fileName, "inventory")); } }
-
Well I thought I did... here's my class's: MAEnumHandler: package com.MonstrousApple.mod.handler; import net.minecraft.util.IStringSerializable; public class MAEnumHandler { public enum BlockBreakerTypes implements IStringSerializable { Wood(0, "Wood"), Stone(1, "Stone"), Iron(2, "Iron"), Gold(3, "Gold"), Diamond(4, "Diamond"), Copper(5, "Copper"); private int ID; private String name; private BlockBreakerTypes(int ID, String name) { this.ID = ID; this.name= name; } public String getName(){ return name; } public int getID() { return ID; } @Override public String toString() { return getName(); } } } MABlocks: package com.MonstrousApple.mod.blocks; import com.MonstrousApple.mod.blocks.crops.MABananaCropDrop; import com.MonstrousApple.mod.blocks.crops.MACherryCropDrop; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.world.IBlockAccess; import net.minecraftforge.fml.common.registry.GameRegistry; public class MABlocks { //Blocks public static Block CompressedStone; public static Block BlockBreaker; public static void initBlocks() { //Blocks; GameResistry.registerBlock (Name of Block = new MABlock("Name of Block", Material.rock, hardness, resistance), "Name of Block"); //Harvest Levels; 0 = Wooden/Gold Can Mine || 1 = Stone Can Mine || 2 = Iron Can Mine || 3 = Diamond Can Mine. GameRegistry.registerBlock(CompressedStone = new MABlock("CompressedStone", Material.rock, 3, 20), "CompressedStone"); CompressedStone.setHarvestLevel("pickaxe", 0); GameRegistry.registerBlock(BlockBreaker, MAMetaBlocks.class, "BlockBreaker"); } } MABlockBreaker: package com.MonstrousApple.mod.blocks; import java.util.List; import com.MonstrousApple.mod.MAGlobal; import com.MonstrousApple.mod.handler.MAEnumHandler; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockState; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockPos; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; public class MABlockBreaker extends Block implements IMetaBlockName { public static final PropertyEnum TYPE = PropertyEnum.create("TYPE", MAEnumHandler.BlockBreakerTypes.class); public MABlockBreaker(String unlocalizedName) { super(Material.rock); this.setUnlocalizedName(unlocalizedName); this.setCreativeTab(MAGlobal.maCreativeTabBlocks); this.setDefaultState(this.blockState.getBaseState().withProperty(TYPE, MAEnumHandler.BlockBreakerTypes.Wood)); } @Override public void getSubBlocks(Item item, CreativeTabs tab, List<ItemStack> list) { list.add(new ItemStack(item, 1, 0)); list.add(new ItemStack(item, 1, 1)); list.add(new ItemStack(item, 1, 2)); list.add(new ItemStack(item, 1, 3)); list.add(new ItemStack(item, 1, 4)); list.add(new ItemStack(item, 1, 5)); } @Override protected BlockState createBlockState() { return new BlockState(this, new IProperty[] { TYPE }); } @Override public IBlockState getStateFromMeta(int meta) { if(meta == 0) { return this.getDefaultState().withProperty(TYPE, MAEnumHandler.BlockBreakerTypes.Wood); } if(meta == 1) { return this.getDefaultState().withProperty(TYPE, MAEnumHandler.BlockBreakerTypes.Stone); } if(meta == 2) { return this.getDefaultState().withProperty(TYPE, MAEnumHandler.BlockBreakerTypes.Iron); } if(meta == 3) { return this.getDefaultState().withProperty(TYPE, MAEnumHandler.BlockBreakerTypes.Gold); } if(meta == 4) { return this.getDefaultState().withProperty(TYPE, MAEnumHandler.BlockBreakerTypes.Diamond); } if(meta == 5) { return this.getDefaultState().withProperty(TYPE, MAEnumHandler.BlockBreakerTypes.Copper); } return this.getDefaultState().withProperty(TYPE, MAEnumHandler.BlockBreakerTypes.Wood); } @Override public int getMetaFromState(IBlockState state) { MAEnumHandler.BlockBreakerTypes type = (MAEnumHandler.BlockBreakerTypes) state.getValue(TYPE); return type.getID(); } @Override public int damageDropped(IBlockState state) { return this.getMetaFromState(state); } @Override public String getSpecialName(ItemStack stack) { if(stack.getItemDamage() == 0) { return "Wood"; } if(stack.getItemDamage() == 1) { return "Stone"; } if(stack.getItemDamage() == 2) { return "Iron"; } if(stack.getItemDamage() == 3) { return "Gold"; } if(stack.getItemDamage() == 4) { return "Diamond"; } if(stack.getItemDamage() == 5) { return "Copper"; } return "Wood"; } @Override public ItemStack getPickBlock(MovingObjectPosition target, World world, BlockPos pos, EntityPlayer player) { return new ItemStack(Item.getItemFromBlock(this), 1, this.getMetaFromState(world.getBlockState(pos))); } } IMetaBlockName: package com.MonstrousApple.mod.blocks; import net.minecraft.item.ItemStack; public interface IMetaBlockName { String getSpecialName(ItemStack stack); } MAMetaBlocks: package com.MonstrousApple.mod.blocks; import net.minecraft.block.Block; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; public class MAMetaBlocks extends ItemBlock { public MAMetaBlocks(Block block) { super(block); if(!(block instanceof IMetaBlockName)) { throw new IllegalArgumentException(String.format("The given Block %s is not an instance of IMetaBlockName", block.getUnlocalizedName())); } this.setMaxDamage(0); this.setHasSubtypes(true); } public int getMetaData(int damage) { return damage; } @Override public String getUnlocalizedName(ItemStack stack) { return super.getUnlocalizedName(stack) + "." + ((IMetaBlockName)this.block).getSpecialName(stack); } } MAMetaBlockRender: package com.MonstrousApple.mod.render; import com.MonstrousApple.mod.MAGlobal; import com.MonstrousApple.mod.blocks.MABlocks; import com.MonstrousApple.mod.handler.MAEnumHandler; import com.MonstrousApple.mod.ores.MAOres; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraftforge.fml.common.registry.GameRegistry; public class MAMetablockRender { public static void registerBlockRender() { //Meta Blocks for(int i = 0; i < MAEnumHandler.BlockBreakerTypes.values().length; i++) { regBlock(BlockBreaker, i, MAEnumHandler.BlockBreakerTypes.values()[i].getName() + "BlockBreaker"); } } public static void regBlock(Block block, int meta, String fileName) { Item item = Item.getItemFromBlock(block); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, meta, new ModelResourceLocation(MAGlobal.MOD_ID + ":" + fileName, "inventory")); } }
-
I get an error on BlockBreaker saying that "BlockBreaker cannot be resolved to a varieable", does anyone know how to fix this? package com.MonstrousApple.mod.render; import com.MonstrousApple.mod.MAGlobal; import com.MonstrousApple.mod.blocks.MABlocks; import com.MonstrousApple.mod.handler.MAEnumHandler; import com.MonstrousApple.mod.ores.MAOres; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraftforge.fml.common.registry.GameRegistry; public class MAMetablockRender { public static void registerBlockRender() { //Meta Blocks for(int i = 0; i < MAEnumHandler.BlockBreakerTypes.values().length; i++) { regBlock(BlockBreaker, i, MAEnumHandler.BlockBreakerTypes.values()[i].getName() + "BlockBreaker"); } } public static void regBlock(Block block, int meta, String fileName) { Item item = Item.getItemFromBlock(block); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, meta, new ModelResourceLocation(MAGlobal.MOD_ID + ":" + fileName, "inventory")); } }
-
I get an error on BlockBreaker saying that "BlockBreaker cannot be resolved to a varieable", does anyone know how to fix this? package com.MonstrousApple.mod.render; import com.MonstrousApple.mod.MAGlobal; import com.MonstrousApple.mod.blocks.MABlocks; import com.MonstrousApple.mod.handler.MAEnumHandler; import com.MonstrousApple.mod.ores.MAOres; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraftforge.fml.common.registry.GameRegistry; public class MAMetablockRender { public static void registerBlockRender() { //Meta Blocks for(int i = 0; i < MAEnumHandler.BlockBreakerTypes.values().length; i++) { regBlock(BlockBreaker, i, MAEnumHandler.BlockBreakerTypes.values()[i].getName() + "BlockBreaker"); } } public static void regBlock(Block block, int meta, String fileName) { Item item = Item.getItemFromBlock(block); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, meta, new ModelResourceLocation(MAGlobal.MOD_ID + ":" + fileName, "inventory")); } }
-
[1.8.9] While Holding Item Get Potion Effect?
Monstrous_Apple replied to Monstrous_Apple's topic in Modder Support
I did post my code on post #9 I'll post it again here: package com.MonstrousApple.mod.gemstones; import com.MonstrousApple.mod.MAGlobal; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityArrow; import net.minecraft.init.Items; import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.Item.ToolMaterial; import net.minecraft.item.ItemPickaxe; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.stats.StatList; import net.minecraft.world.World; public class MAVitalityGemstone extends Item { public MAVitalityGemstone(String unlocalizedName) { super(); this.setUnlocalizedName(unlocalizedName); this.setCreativeTab(MAGlobal.maCreativeTabGemstones); this.setMaxStackSize(1); } public void onUpdate(ItemStack itemstack, World world, Entity entity, int i, boolean flag) { if (entity instanceof EntityPlayer) { EntityPlayer Player = (EntityPlayer) entity; if(Player.getCurrentEquippedItem() != null && Player.getCurrentEquippedItem().getItem() instanceof MAVitalityGemstone) { Player.addPotionEffect(new PotionEffect(Potion.regeneration.id, 50, 1 - 1)); } else { Player.removePotionEffect(i); } } } } } -
[1.8.9] While Holding Item Get Potion Effect?
Monstrous_Apple replied to Monstrous_Apple's topic in Modder Support
I did post my code on post #9 I'll post it again here: package com.MonstrousApple.mod.gemstones; import com.MonstrousApple.mod.MAGlobal; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityArrow; import net.minecraft.init.Items; import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.Item.ToolMaterial; import net.minecraft.item.ItemPickaxe; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.stats.StatList; import net.minecraft.world.World; public class MAVitalityGemstone extends Item { public MAVitalityGemstone(String unlocalizedName) { super(); this.setUnlocalizedName(unlocalizedName); this.setCreativeTab(MAGlobal.maCreativeTabGemstones); this.setMaxStackSize(1); } public void onUpdate(ItemStack itemstack, World world, Entity entity, int i, boolean flag) { if (entity instanceof EntityPlayer) { EntityPlayer Player = (EntityPlayer) entity; if(Player.getCurrentEquippedItem() != null && Player.getCurrentEquippedItem().getItem() instanceof MAVitalityGemstone) { Player.addPotionEffect(new PotionEffect(Potion.regeneration.id, 50, 1 - 1)); } else { Player.removePotionEffect(i); } } } } } -
[1.8.9] While Holding Item Get Potion Effect?
Monstrous_Apple replied to Monstrous_Apple's topic in Modder Support
Removed my code and tried yours, doesn't work, says I get an error at ".addPotionEffect" saying that "The method addPotionEffect(PotionEffect) is undefined for the type player"? -
[1.8.9] While Holding Item Get Potion Effect?
Monstrous_Apple replied to Monstrous_Apple's topic in Modder Support
Removed my code and tried yours, doesn't work, says I get an error at ".addPotionEffect" saying that "The method addPotionEffect(PotionEffect) is undefined for the type player"? -
[1.8.9] While Holding Item Get Potion Effect?
Monstrous_Apple replied to Monstrous_Apple's topic in Modder Support
Okay I'll say what I need to do at this moment, I need it so that when I am not holding the item, the potion effect goes completely, even if it starts at 4 seconds, ends at 0 seconds, and currently is on 2 seconds duration left, it will disappear. I also need it so that when holding the item the duration of the potion effect still ticks even while holding the item, so that regeneration will work, so for example I hold the gem it gives 4 seconds of regeneration, it ticks down to 0 and then refreshes to 4 again, but of course if the item is not held at any point, the regeneration effect completely goes even if it's not reached 0 seconds yet. This is what my code looks like at the moment: package com.MonstrousApple.mod.gemstones; import com.MonstrousApple.mod.MAGlobal; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityArrow; import net.minecraft.init.Items; import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.Item.ToolMaterial; import net.minecraft.item.ItemPickaxe; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.stats.StatList; import net.minecraft.world.World; public class MAVitalityGemstone extends Item { public MAVitalityGemstone(String unlocalizedName) { super(); this.setUnlocalizedName(unlocalizedName); this.setCreativeTab(MAGlobal.maCreativeTabGemstones); this.setMaxStackSize(1); } public void onUpdate(ItemStack itemstack, World world, Entity entity, int i, boolean flag) { if (entity instanceof EntityPlayer) { EntityPlayer Player = (EntityPlayer) entity; if(Player.getCurrentEquippedItem() != null && Player.getCurrentEquippedItem().getItem() instanceof MAVitalityGemstone) { Player.addPotionEffect(new PotionEffect(Potion.regeneration.id, 50, 1 - 1)); } else { Player.removePotionEffect(i); } } } } }