diff --git a/src/main/java/com/bernard/torch/IVariant.java b/src/main/java/com/bernard/torch/IVariant.java new file mode 100644 index 0000000..536625c --- /dev/null +++ b/src/main/java/com/bernard/torch/IVariant.java @@ -0,0 +1,30 @@ +package com.bernard.torch; + +import net.minecraft.util.IStringSerializable; + +public interface IVariant { + + /* + * Classe d'aide à la création d'Enum pour les items à multiples variantes + */ + public interface IEnumVariant extends IStringSerializable { + + /* + * Permet de récupérer la metadata d'une variante + * @Return la metadata + */ + int getMeta(); + } + + /* + * Classe d'aide à la création d'items à multiples variantes + */ + public interface IItemVariant { + + /* + * Permet de récuperer les valeurs des variantes + * @Return le tableau comprenant les valeurs des variantes + */ + T[] getValues(); + } +} diff --git a/src/main/java/com/bernard/torch/TorchMod.java b/src/main/java/com/bernard/torch/TorchMod.java index 94c0fc1..d8bf897 100644 --- a/src/main/java/com/bernard/torch/TorchMod.java +++ b/src/main/java/com/bernard/torch/TorchMod.java @@ -5,109 +5,128 @@ import com.bernard.torch.init.CoalStickAndTorchesRegister; import com.bernard.torch.init.CommonProxy; import com.bernard.torch.init.TorchBlocks; import com.bernard.torch.init.TorchItems; -import cpw.mods.fml.common.Mod; -import cpw.mods.fml.common.Mod.EventHandler; -import cpw.mods.fml.common.Mod.Instance; -import cpw.mods.fml.common.SidedProxy; -import cpw.mods.fml.common.event.FMLInitializationEvent; -import cpw.mods.fml.common.event.FMLPostInitializationEvent; -import cpw.mods.fml.common.event.FMLPreInitializationEvent; -import cpw.mods.fml.common.network.NetworkRegistry; -import cpw.mods.fml.common.registry.GameRegistry; -import java.io.PrintStream; + import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.SidedProxy; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import net.minecraftforge.fml.common.network.NetworkRegistry; +import net.minecraftforge.fml.common.registry.GameRegistry; -@Mod(modid="torch_mod", name="Torch mod", version="beta") -public class TorchMod -{ - public static final String MODID = "torch_mod"; - @Mod.Instance("torch_mod") - public static TorchMod MOD_INSTANCE; - @SidedProxy(clientSide="com.bernard.torch.init.ClientProxy", serverSide="com.bernard.torch.init.CommonProxy") - public static CommonProxy proxy; - - @Mod.EventHandler - public void preInit(FMLPreInitializationEvent event) - { - CoalStickAndTorchesRegister c = new CoalStickAndTorchesRegister(); - CoalStickAndTorchesRegister.registerCoal(Items.coal, 4); - CoalStickAndTorchesRegister.registerCoal(Blocks.coal_block, 36); - CoalStickAndTorchesRegister.registerCoal(Blocks.coal_ore, 8); - - CoalStickAndTorchesRegister.registerStick(Items.stick, 4); - CoalStickAndTorchesRegister.registerStick(Blocks.planks, 8); - CoalStickAndTorchesRegister.registerStick(Blocks.log, 32); - CoalStickAndTorchesRegister.registerStick(Blocks.log2, 32); - CoalStickAndTorchesRegister.registerStick(Blocks.deadbush, 3); - - CoalStickAndTorchesRegister.registerTorch(Blocks.torch, 1); - CoalStickAndTorchesRegister.registerTorch(Blocks.glowstone, 4); - - TorchItems.init(); - TorchBlocks.init(); - - Item i = Items.coal; - System.out.println(CoalStickAndTorchesRegister.isStick(i)); - System.out.println(CoalStickAndTorchesRegister.isCoal(i)); - System.out.println(CoalStickAndTorchesRegister.isTorch(i)); - } - - @Mod.EventHandler - public void init(FMLInitializationEvent event) - { - NetworkRegistry.INSTANCE.registerGuiHandler(MOD_INSTANCE, new TorchGuiHandler()); - } - - @Mod.EventHandler - public void postInit(FMLPostInitializationEvent event) { - GameRegistry.addShapedRecipe(new ItemStack(TorchItems.torchAmulet, 1, 0), new Object[] { " MM", "M M", "TM ", Character.valueOf('M'), Items.string, - Character.valueOf('T'), Blocks.torch }); - GameRegistry.addShapedRecipe(new ItemStack(TorchItems.torchAmulet, 1, 1), new Object[] { " MM", "MIM", "TM ", Character.valueOf('M'), Items.coal, - Character.valueOf('T'), Blocks.torch, Character.valueOf('I'), new ItemStack(TorchItems.torchAmulet, 1, 0) }); - GameRegistry.addShapedRecipe(new ItemStack(TorchItems.torchAmulet, 1, 2), new Object[] { " MM", "MIM", "TM ", Character.valueOf('M'), Items.iron_ingot, - Character.valueOf('T'), Blocks.torch, Character.valueOf('I'), new ItemStack(TorchItems.torchAmulet, 1, 1) }); - GameRegistry.addShapedRecipe(new ItemStack(TorchItems.torchAmulet, 1, 3), new Object[] { " MM", "MIM", "TM ", Character.valueOf('M'), Items.quartz, - Character.valueOf('T'), Blocks.torch, Character.valueOf('I'), new ItemStack(TorchItems.torchAmulet, 1, 2) }); - GameRegistry.addShapedRecipe(new ItemStack(TorchItems.torchAmulet, 1, 4), new Object[] { " MM", "MIM", "TM ", Character.valueOf('M'), Items.gold_ingot, - Character.valueOf('T'), Blocks.torch, Character.valueOf('I'), new ItemStack(TorchItems.torchAmulet, 1, 3) }); - GameRegistry.addShapedRecipe(new ItemStack(TorchItems.torchAmulet, 1, 5), new Object[] { " MM", "MIM", "TM ", Character.valueOf('M'), Items.redstone, - Character.valueOf('T'), Blocks.torch, Character.valueOf('I'), new ItemStack(TorchItems.torchAmulet, 1, 4) }); - GameRegistry.addShapedRecipe(new ItemStack(TorchItems.torchAmulet, 1, 6), new Object[] { " MM", "MIM", "TM ", Character.valueOf('M'), new ItemStack(Items.dye, 1, 4), - Character.valueOf('T'), Blocks.torch, Character.valueOf('I'), new ItemStack(TorchItems.torchAmulet, 1, 5) }); - GameRegistry.addShapedRecipe(new ItemStack(TorchItems.torchAmulet, 1, 7), new Object[] { " MM", "MIM", "TM ", Character.valueOf('M'), Items.diamond, - Character.valueOf('T'), Blocks.torch, Character.valueOf('I'), new ItemStack(TorchItems.torchAmulet, 1, 6) }); - GameRegistry.addShapedRecipe(new ItemStack(TorchItems.torchAmulet, 1, 8), new Object[] { " MM", "MIM", "TM ", Character.valueOf('M'), Items.emerald, - Character.valueOf('T'), Blocks.torch, Character.valueOf('I'), new ItemStack(TorchItems.torchAmulet, 1, 7) }); - - GameRegistry.addShapedRecipe(new ItemStack(TorchBlocks.torchRecharger, 1, 0), new Object[] { "T T", "CFC", "CMC", Character.valueOf('T'), Blocks.torch, - Character.valueOf('C'), Blocks.cobblestone, Character.valueOf('F'), Blocks.furnace, Character.valueOf('M'), Blocks.cobblestone }); - GameRegistry.addShapedRecipe(new ItemStack(TorchBlocks.torchRecharger, 1, 1), new Object[] { "T T", "CFC", "CMC", Character.valueOf('T'), Blocks.torch, - Character.valueOf('C'), Blocks.cobblestone, Character.valueOf('F'), new ItemStack(TorchBlocks.torchRecharger, 1, 0), Character.valueOf('M'), Blocks.coal_block }); - - GameRegistry.addShapedRecipe(new ItemStack(TorchBlocks.torchRecharger, 1, 2), new Object[] { "T T", "CFC", "CMC", Character.valueOf('T'), Blocks.torch, - Character.valueOf('C'), Blocks.cobblestone, Character.valueOf('F'), new ItemStack(TorchBlocks.torchRecharger, 1, 1), Character.valueOf('M'), Blocks.iron_block }); - - GameRegistry.addShapedRecipe(new ItemStack(TorchBlocks.torchRecharger, 1, 3), new Object[] { "T T", "CFC", "CMC", Character.valueOf('T'), Blocks.torch, - Character.valueOf('C'), Blocks.cobblestone, Character.valueOf('F'), new ItemStack(TorchBlocks.torchRecharger, 1, 2), Character.valueOf('M'), Blocks.quartz_block }); - - GameRegistry.addShapedRecipe(new ItemStack(TorchBlocks.torchRecharger, 1, 4), new Object[] { "T T", "CFC", "CMC", Character.valueOf('T'), Blocks.torch, - Character.valueOf('C'), Blocks.cobblestone, Character.valueOf('F'), new ItemStack(TorchBlocks.torchRecharger, 1, 3), Character.valueOf('M'), Blocks.gold_block }); - - GameRegistry.addShapedRecipe(new ItemStack(TorchBlocks.torchRecharger, 1, 5), new Object[] { "T T", "CFC", "CMC", Character.valueOf('T'), Blocks.torch, - Character.valueOf('C'), Blocks.cobblestone, Character.valueOf('F'), new ItemStack(TorchBlocks.torchRecharger, 1, 4), Character.valueOf('M'), Blocks.redstone_block }); - - GameRegistry.addShapedRecipe(new ItemStack(TorchBlocks.torchRecharger, 1, 6), new Object[] { "T T", "CFC", "CMC", Character.valueOf('T'), Blocks.torch, - Character.valueOf('C'), Blocks.cobblestone, Character.valueOf('F'), new ItemStack(TorchBlocks.torchRecharger, 1, 5), Character.valueOf('M'), Blocks.lapis_block }); - - GameRegistry.addShapedRecipe(new ItemStack(TorchBlocks.torchRecharger, 1, 7), new Object[] { "T T", "CFC", "CMC", Character.valueOf('T'), Blocks.torch, - Character.valueOf('C'), Blocks.cobblestone, Character.valueOf('F'), new ItemStack(TorchBlocks.torchRecharger, 1, 6), Character.valueOf('M'), Blocks.diamond_block }); - - GameRegistry.addShapedRecipe(new ItemStack(TorchBlocks.torchRecharger, 1, 8), new Object[] { "T T", "CFC", "CMC", Character.valueOf('T'), Blocks.torch, - Character.valueOf('C'), Blocks.cobblestone, Character.valueOf('F'), new ItemStack(TorchBlocks.torchRecharger, 1, 7), Character.valueOf('M'), Blocks.emerald_block }); - } -} +@Mod(modid = "torch_mod", name = "Torch mod", version = "beta") +public class TorchMod { + public static final String MODID = "torch_mod"; + @Mod.Instance("torch_mod") + public static TorchMod MOD_INSTANCE; + @SidedProxy(clientSide = "com.bernard.torch.init.ClientProxy", serverSide = "com.bernard.torch.init.CommonProxy") + public static CommonProxy proxy; + @Mod.EventHandler + public void preInit(FMLPreInitializationEvent event) { + CoalStickAndTorchesRegister c = new CoalStickAndTorchesRegister(); + CoalStickAndTorchesRegister.registerCoal(Items.COAL, 4); + CoalStickAndTorchesRegister.registerCoal(Blocks.COAL_BLOCK, 36); + CoalStickAndTorchesRegister.registerCoal(Blocks.COAL_ORE, 8); + CoalStickAndTorchesRegister.registerStick(Items.STICK, 4); + CoalStickAndTorchesRegister.registerStick(Blocks.PLANKS, 8); + CoalStickAndTorchesRegister.registerStick(Blocks.LOG, 32); + CoalStickAndTorchesRegister.registerStick(Blocks.LOG2, 32); + CoalStickAndTorchesRegister.registerStick(Blocks.DEADBUSH, 3); + + CoalStickAndTorchesRegister.registerTorch(Blocks.TORCH, 1); + CoalStickAndTorchesRegister.registerTorch(Blocks.GLOWSTONE, 4); + + TorchItems.init(); + TorchBlocks.init(); + } + + @Mod.EventHandler + public void init(FMLInitializationEvent event) { + System.out.println("Registeration en cours"); + NetworkRegistry.INSTANCE.registerGuiHandler(MOD_INSTANCE, new TorchGuiHandler()); + } + + @Mod.EventHandler + public void postInit(FMLPostInitializationEvent event) { + + /* OLD RECIPES + GameRegistry.addShapedRecipe(new ItemStack(TorchItems.torchAmulet, 1, 0), new Object[] { " MM", "M M", "TM ", + Character.valueOf('M'), Items.STRING, Character.valueOf('T'), Blocks.TORCH }); + GameRegistry.addShapedRecipe(new ItemStack(TorchItems.torchAmulet, 1, 1), + new Object[] { " MM", "MIM", "TM ", Character.valueOf('M'), Items.COAL, Character.valueOf('T'), + Blocks.TORCH, Character.valueOf('I'), new ItemStack(TorchItems.torchAmulet, 1, 0) }); + GameRegistry.addShapedRecipe(new ItemStack(TorchItems.torchAmulet, 1, 2), + new Object[] { " MM", "MIM", "TM ", Character.valueOf('M'), Items.IRON_INGOT, Character.valueOf('T'), + Blocks.TORCH, Character.valueOf('I'), new ItemStack(TorchItems.torchAmulet, 1, 1) }); + GameRegistry.addShapedRecipe(new ItemStack(TorchItems.torchAmulet, 1, 3), + new Object[] { " MM", "MIM", "TM ", Character.valueOf('M'), Items.QUARTZ, Character.valueOf('T'), + Blocks.TORCH, Character.valueOf('I'), new ItemStack(TorchItems.torchAmulet, 1, 2) }); + GameRegistry.addShapedRecipe(new ItemStack(TorchItems.torchAmulet, 1, 4), + new Object[] { " MM", "MIM", "TM ", Character.valueOf('M'), Items.GOLD_INGOT, Character.valueOf('T'), + Blocks.TORCH, Character.valueOf('I'), new ItemStack(TorchItems.torchAmulet, 1, 3) }); + GameRegistry.addShapedRecipe(new ItemStack(TorchItems.torchAmulet, 1, 5), + new Object[] { " MM", "MIM", "TM ", Character.valueOf('M'), Items.REDSTONE, Character.valueOf('T'), + Blocks.TORCH, Character.valueOf('I'), new ItemStack(TorchItems.torchAmulet, 1, 4) }); + GameRegistry.addShapedRecipe(new ItemStack(TorchItems.torchAmulet, 1, 6), + new Object[] { " MM", "MIM", "TM ", Character.valueOf('M'), new ItemStack(Items.DYE, 1, 4), + Character.valueOf('T'), Blocks.TORCH, Character.valueOf('I'), + new ItemStack(TorchItems.torchAmulet, 1, 5) }); + GameRegistry.addShapedRecipe(new ItemStack(TorchItems.torchAmulet, 1, 7), + new Object[] { " MM", "MIM", "TM ", Character.valueOf('M'), Items.DIAMOND, Character.valueOf('T'), + Blocks.TORCH, Character.valueOf('I'), new ItemStack(TorchItems.torchAmulet, 1, 6) }); + GameRegistry.addShapedRecipe(new ItemStack(TorchItems.torchAmulet, 1, 8), + new Object[] { " MM", "MIM", "TM ", Character.valueOf('M'), Items.EMERALD, Character.valueOf('T'), + Blocks.TORCH, Character.valueOf('I'), new ItemStack(TorchItems.torchAmulet, 1, 7) }); + + GameRegistry.addShapedRecipe(new ItemStack(TorchBlocks.torchRecharger, 1, 0), + new Object[] { "T T", "CFC", "CMC", Character.valueOf('T'), Blocks.TORCH, Character.valueOf('C'), + Blocks.COBBLESTONE, Character.valueOf('F'), Blocks.FURNACE, Character.valueOf('M'), + Blocks.COBBLESTONE }); + GameRegistry.addShapedRecipe(new ItemStack(TorchBlocks.torchRecharger, 1, 1), + new Object[] { "T T", "CFC", "CMC", Character.valueOf('T'), Blocks.TORCH, Character.valueOf('C'), + Blocks.COBBLESTONE, Character.valueOf('F'), new ItemStack(TorchBlocks.torchRecharger, 1, 0), + Character.valueOf('M'), Blocks.COAL_BLOCK }); + + GameRegistry.addShapedRecipe(new ItemStack(TorchBlocks.torchRecharger, 1, 2), + new Object[] { "T T", "CFC", "CMC", Character.valueOf('T'), Blocks.TORCH, Character.valueOf('C'), + Blocks.COBBLESTONE, Character.valueOf('F'), new ItemStack(TorchBlocks.torchRecharger, 1, 1), + Character.valueOf('M'), Blocks.IRON_BLOCK }); + + GameRegistry.addShapedRecipe(new ItemStack(TorchBlocks.torchRecharger, 1, 3), + new Object[] { "T T", "CFC", "CMC", Character.valueOf('T'), Blocks.TORCH, Character.valueOf('C'), + Blocks.COBBLESTONE, Character.valueOf('F'), new ItemStack(TorchBlocks.torchRecharger, 1, 2), + Character.valueOf('M'), Blocks.QUARTZ_BLOCK }); + + GameRegistry.addShapedRecipe(new ItemStack(TorchBlocks.torchRecharger, 1, 4), + new Object[] { "T T", "CFC", "CMC", Character.valueOf('T'), Blocks.TORCH, Character.valueOf('C'), + Blocks.COBBLESTONE, Character.valueOf('F'), new ItemStack(TorchBlocks.torchRecharger, 1, 3), + Character.valueOf('M'), Blocks.GOLD_BLOCK }); + + GameRegistry.addShapedRecipe(new ItemStack(TorchBlocks.torchRecharger, 1, 5), + new Object[] { "T T", "CFC", "CMC", Character.valueOf('T'), Blocks.TORCH, Character.valueOf('C'), + Blocks.COBBLESTONE, Character.valueOf('F'), new ItemStack(TorchBlocks.torchRecharger, 1, 4), + Character.valueOf('M'), Blocks.REDSTONE_BLOCK }); + + GameRegistry.addShapedRecipe(new ItemStack(TorchBlocks.torchRecharger, 1, 6), + new Object[] { "T T", "CFC", "CMC", Character.valueOf('T'), Blocks.TORCH, Character.valueOf('C'), + Blocks.COBBLESTONE, Character.valueOf('F'), new ItemStack(TorchBlocks.torchRecharger, 1, 5), + Character.valueOf('M'), Blocks.LAPIS_BLOCK }); + + GameRegistry.addShapedRecipe(new ItemStack(TorchBlocks.torchRecharger, 1, 7), + new Object[] { "T T", "CFC", "CMC", Character.valueOf('T'), Blocks.TORCH, Character.valueOf('C'), + Blocks.COBBLESTONE, Character.valueOf('F'), new ItemStack(TorchBlocks.torchRecharger, 1, 6), + Character.valueOf('M'), Blocks.DIAMOND_BLOCK }); + + GameRegistry.addShapedRecipe(new ItemStack(TorchBlocks.torchRecharger, 1, 8), + new Object[] { "T T", "CFC", "CMC", Character.valueOf('T'), Blocks.TORCH, Character.valueOf('C'), + Blocks.COBBLESTONE, Character.valueOf('F'), new ItemStack(TorchBlocks.torchRecharger, 1, 7), + Character.valueOf('M'), Blocks.EMERALD_BLOCK }); + */ + } +} \ No newline at end of file diff --git a/src/main/java/com/bernard/torch/api/ITorchRechargable.java b/src/main/java/com/bernard/torch/api/ITorchRechargable.java index 59dfce2..dbf7bd4 100644 --- a/src/main/java/com/bernard/torch/api/ITorchRechargable.java +++ b/src/main/java/com/bernard/torch/api/ITorchRechargable.java @@ -2,11 +2,8 @@ package com.bernard.torch.api; import net.minecraft.item.ItemStack; -public abstract interface ITorchRechargable -{ - public abstract void recharge(ItemStack paramItemStack, int paramInt); - - public abstract int getLuxNedded(ItemStack paramItemStack); +public abstract interface ITorchRechargable { + public abstract void recharge(ItemStack paramItemStack, int paramInt); + + public abstract int getLuxNedded(ItemStack paramItemStack); } - - diff --git a/src/main/java/com/bernard/torch/blocks/EnumTorchRecharger.java b/src/main/java/com/bernard/torch/blocks/EnumTorchRecharger.java new file mode 100644 index 0000000..f259300 --- /dev/null +++ b/src/main/java/com/bernard/torch/blocks/EnumTorchRecharger.java @@ -0,0 +1,94 @@ +package com.bernard.torch.blocks; + +import com.bernard.torch.IVariant; +import com.bernard.torch.items.EnumTorchAmulet; + +public enum EnumTorchRecharger implements IVariant.IEnumVariant{ + //Coal { 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768 }; + //Stick { 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768 }; + //Torch { 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536 }; + BASE(0,"base",128,128,256), + COAL(1,"coal",256,256,512) + ; + + private static final EnumTorchRecharger[] META_LOOKUP = new EnumTorchRecharger[values().length]; + private final int meta; + private final String name; + private final int maxCoal; + private final int maxStick; + private final int maxTorch; + + /* + * Crée une nouvelle variante + * + * @Param metaIn la meta de la variante + * + * @Param nameIn le nom + * + * @Param chatColorIn la couleur du texte + */ + private EnumTorchRecharger(int metaIn, String nameIn,int maxCoal,int maxStick,int maxTorch) { + + this.meta = metaIn; + this.name = nameIn; + this.maxCoal = maxCoal; + this.maxStick = maxStick; + this.maxTorch = maxTorch; + + } + + /* + * Retourne la meta de la variante + * + * @return meta + */ + @Override + public int getMeta() { + + return meta; + } + + /* + * Retourne le nom de la variante + * + * @return name + */ + @Override + public String getName() { + + return name; + } + + public int getMaxCoal() { + return maxCoal; + } + + public int getMaxStick() { + return maxStick; + } + + public int getMaxTorch() { + return maxTorch; + } + + /* + * Retourne la variante (l'unlocalized name) correspondant à la meta + * + * @Param la meta à chercher + * + * @return A, B ou C en fonction de la meta + */ + public static EnumTorchRecharger byMetadata(int meta) { + if (meta < 0 || meta >= META_LOOKUP.length) { + meta = 0; + } + + return META_LOOKUP[meta]; + } + + static { + for (EnumTorchRecharger enumType : values()) { + META_LOOKUP[enumType.getMeta()] = enumType; + } + } +} diff --git a/src/main/java/com/bernard/torch/blocks/TorchRechargerBlock.java b/src/main/java/com/bernard/torch/blocks/TorchRechargerBlock.java index d47c4d1..3f07d1e 100644 --- a/src/main/java/com/bernard/torch/blocks/TorchRechargerBlock.java +++ b/src/main/java/com/bernard/torch/blocks/TorchRechargerBlock.java @@ -1,146 +1,152 @@ package com.bernard.torch.blocks; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import com.bernard.torch.IVariant; import com.bernard.torch.TorchMod; import com.bernard.torch.blocks.tileentities.TorchRechargerTileEntity; -import java.util.List; -import java.util.Random; + import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.block.properties.PropertyEnum; +import net.minecraft.block.state.BlockStateContainer; +import net.minecraft.block.state.IBlockState; +import net.minecraft.command.InvalidBlockStateException; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.NonNullList; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +public class TorchRechargerBlock extends Block implements IVariant.IItemVariant{ + /* public static String[] names = { "torch_recharger", "coal_torch_recharger", "iron_torch_recharger", + "quartz_torch_recharger", "gold_torch_recharger", "redstone_torch_recharger", "lapis_torch_recharger", + "diamond_torch_recharger", "emerald_torch_recharger" }; + */ + + public final static PropertyEnum level = PropertyEnum.create("level", EnumTorchRecharger.class); + + public TorchRechargerBlock(String name) { + super(Material.IRON); + setUnlocalizedName(name); + setRegistryName(name); + setHarvestLevel("pickaxe", 2); + setHardness(10.0F); + setLightLevel(10.0F); + setResistance(1000.0F); + setDefaultState(getDefaultState().withProperty(level, EnumTorchRecharger.BASE)); + } + + @Override + public int getMetaFromState(IBlockState state) { + return state.getValue(level).getMeta(); + } + + @Override + public IBlockState getStateFromMeta(int meta) { + return super.getStateFromMeta(meta).withProperty(level, EnumTorchRecharger.byMetadata(meta)); + } + + @Override + protected BlockStateContainer createBlockState() { + return new BlockStateContainer(this, level); + } + + @Override + public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, + EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { + System.out.println("wow is "+world.isRemote); + if (!world.isRemote) { + TorchRechargerTileEntity te = (TorchRechargerTileEntity) world.getTileEntity(pos); + player.openGui(TorchMod.MOD_INSTANCE, 0, world, pos.getX(),pos.getY(),pos.getZ()); + } + return true; + } + + @Override + public void breakBlock(World world, BlockPos pos, IBlockState state) { + TileEntity te = world.getTileEntity(pos); + if ((te instanceof TorchRechargerTileEntity)) { + TorchRechargerTileEntity torchRecharger = (TorchRechargerTileEntity) te; + int torches = Math.floorDiv(torchRecharger.getTorchValue(), 4); + int sticks = Math.floorDiv(torchRecharger.getStickValue(), 4); + int coals = Math.floorDiv(torchRecharger.getCoalValue(), 4); + double dropX = pos.getX() + world.rand.nextFloat() * 0.8F + 0.1F; + double dropY = pos.getY() + world.rand.nextFloat() * 0.8F + 0.1F; + double dropZ = pos.getZ() + world.rand.nextFloat() * 0.8F + 0.1F; + while ((torches > 0) || (sticks > 0) || (coals > 0)) { + if (torches > 0) { + EntityItem item = new EntityItem(world, dropX, dropY, dropZ, + new ItemStack(Blocks.TORCH, Math.min(torches, 64), 0)); + item.motionX = ((float) world.rand.nextGaussian() * 0.05F); + item.motionY = ((float) world.rand.nextGaussian() * 0.05F + 0.2F); + item.motionZ = ((float) world.rand.nextGaussian() * 0.05F); + torches -= Math.min(torches, 64); + world.spawnEntity(item); + } + if (sticks > 0) { + EntityItem item = new EntityItem(world, dropX, dropY, dropZ, + new ItemStack(Items.STICK, Math.min(sticks, 64), 0)); + item.motionX = ((float) world.rand.nextGaussian() * 0.05F); + item.motionY = ((float) world.rand.nextGaussian() * 0.05F + 0.2F); + item.motionZ = ((float) world.rand.nextGaussian() * 0.05F); + sticks -= Math.min(sticks, 64); + world.spawnEntity(item); + } + if (coals > 0) { + EntityItem item = new EntityItem(world, dropX, dropY, dropZ, + new ItemStack(Items.COAL, Math.min(coals, 64), 0)); + item.motionX = ((float) world.rand.nextGaussian() * 0.05F); + item.motionY = ((float) world.rand.nextGaussian() * 0.05F + 0.2F); + item.motionZ = ((float) world.rand.nextGaussian() * 0.05F); + coals -= Math.min(coals, 64); + world.spawnEntity(item); + } + } + } + + super.breakBlock(world, pos, state); + } + + @Override + public boolean hasTileEntity() { + return true; + } + + @Override + public TileEntity createTileEntity(World world, IBlockState state) { + return new TorchRechargerTileEntity(); + } + + @SideOnly(Side.CLIENT) + @Override + public void getSubBlocks(final CreativeTabs tab, final NonNullList subItems) { + final List items = Stream.of(EnumTorchRecharger.values()) + .map(enumType -> new ItemStack(this, 1, enumType.getMeta())) // Pour chaque variante, on crée un itemstack en fonction de sa meta + .collect(Collectors.toList()); // Et on les mets dans une liste + + subItems.addAll(items); + } + + @Override + public int damageDropped(IBlockState state) { + return state.getBlock().getMetaFromState(state); + } -public class TorchRechargerBlock - extends Block -{ - private IIcon iconTop; - private IIcon iconBottom; - private IIcon iconFaces; - public static String[] names = { "torch_recharger", "coal_torch_recharger", "iron_torch_recharger", "quartz_torch_recharger", "gold_torch_recharger", "redstone_torch_recharger", "lapis_torch_recharger", "diamond_torch_recharger", "emerald_torch_recharger" }; - - - public IIcon[][] textures = new IIcon[names.length][3]; - - public TorchRechargerBlock() { - super(Material.iron); - setHarvestLevel("pickaxe", 2); - setHardness(10.0F); - setCreativeTab(CreativeTabs.tabDecorations); - setLightLevel(10.0F); - setResistance(1000.0F); - } - - - - - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) - { - if (!world.isRemote) { - TorchRechargerTileEntity te = (TorchRechargerTileEntity)world.getTileEntity(x, y, z); - player.openGui(TorchMod.MOD_INSTANCE, 0, world, x, y, z); - } - return true; - } - - public void breakBlock(World world, int x, int y, int z, Block block, int meta) - { - TileEntity te = world.getTileEntity(x, y, z); - if ((te instanceof TorchRechargerTileEntity)) { - TorchRechargerTileEntity torchRecharger = (TorchRechargerTileEntity)te; - int torches = Math.floorDiv(torchRecharger.getTorchValue(), 4); - int sticks = Math.floorDiv(torchRecharger.getStickValue(), 4); - int coals = Math.floorDiv(torchRecharger.getCoalValue(), 4); - double dropX = x + world.rand.nextFloat() * 0.8F + 0.1F;double dropY = y + world.rand.nextFloat() * 0.8F + 0.1F; - double dropZ = z + world.rand.nextFloat() * 0.8F + 0.1F; - while ((torches > 0) || (sticks > 0) || (coals > 0)) { - if (torches > 0) - { - EntityItem item = new EntityItem(world, dropX, dropY, dropZ, new ItemStack(Blocks.torch, Math.min(torches, 64), 0)); - item.motionX = ((float)world.rand.nextGaussian() * 0.05F); - item.motionY = ((float)world.rand.nextGaussian() * 0.05F + 0.2F); - item.motionZ = ((float)world.rand.nextGaussian() * 0.05F); - torches -= Math.min(torches, 64); - world.spawnEntityInWorld(item); - } - if (sticks > 0) - { - EntityItem item = new EntityItem(world, dropX, dropY, dropZ, new ItemStack(Items.stick, Math.min(sticks, 64), 0)); - item.motionX = ((float)world.rand.nextGaussian() * 0.05F); - item.motionY = ((float)world.rand.nextGaussian() * 0.05F + 0.2F); - item.motionZ = ((float)world.rand.nextGaussian() * 0.05F); - sticks -= Math.min(sticks, 64); - world.spawnEntityInWorld(item); - } - if (coals > 0) - { - EntityItem item = new EntityItem(world, dropX, dropY, dropZ, new ItemStack(Items.coal, Math.min(coals, 64), 0)); - item.motionX = ((float)world.rand.nextGaussian() * 0.05F); - item.motionY = ((float)world.rand.nextGaussian() * 0.05F + 0.2F); - item.motionZ = ((float)world.rand.nextGaussian() * 0.05F); - coals -= Math.min(coals, 64); - world.spawnEntityInWorld(item); - } - } - - world.updateNeighborsAboutBlockChange(x, y, z, block); - world.removeTileEntity(x, y, z); - } - - super.breakBlock(world, x, y, z, block, meta); - } - - public boolean hasTileEntity(int metadata) - { - return true; - } - - public TileEntity createTileEntity(World world, int metadata) - { - return new TorchRechargerTileEntity(); - } - - public void getSubBlocks(Item item, CreativeTabs tab, List l) - { - for (int i = 0; i < names.length; i++) { - l.add(new ItemStack(item, 1, i)); - } - } - - public void registerIcons(IIconRegister r) - { - for (int i = 0; i < this.textures.length; i++) { - this.textures[i][0] = r.registerIcon("torch_mod:" + names[i] + "_bottom"); - this.textures[i][1] = r.registerIcon("torch_mod:" + names[i] + "_top"); - this.textures[i][2] = r.registerIcon("torch_mod:" + names[i] + "_side"); - } - } - - public int damageDropped(int meta) - { - return meta; - } - - public IIcon getIcon(int side, int meta) - { - if ((meta >= this.textures.length) || (meta < 0)) - return this.textures[0][0]; - switch (side) { - case 0: - return this.textures[meta][0]; - case 1: - return this.textures[meta][1]; - } - return this.textures[meta][2]; - } -} - - + @Override + public EnumTorchRecharger[] getValues() { + return EnumTorchRecharger.values(); + } +} \ No newline at end of file diff --git a/src/main/java/com/bernard/torch/blocks/itemblocs/TorchRechargerItemBlock.java b/src/main/java/com/bernard/torch/blocks/itemblocs/TorchRechargerItemBlock.java index d3d79ef..d13037e 100644 --- a/src/main/java/com/bernard/torch/blocks/itemblocs/TorchRechargerItemBlock.java +++ b/src/main/java/com/bernard/torch/blocks/itemblocs/TorchRechargerItemBlock.java @@ -1,56 +1,48 @@ -/* */ package com.bernard.torch.blocks.itemblocs; -/* */ -/* */ import com.bernard.torch.blocks.TorchRechargerBlock; -/* */ import cpw.mods.fml.relauncher.Side; -/* */ import cpw.mods.fml.relauncher.SideOnly; -/* */ import java.util.List; -/* */ import net.minecraft.block.Block; -/* */ import net.minecraft.entity.player.EntityPlayer; -/* */ import net.minecraft.item.ItemBlock; -/* */ import net.minecraft.item.ItemStack; -/* */ import net.minecraft.util.IIcon; -/* */ -/* */ -/* */ -/* */ public class TorchRechargerItemBlock -/* */ extends ItemBlock -/* */ { -/* */ public TorchRechargerItemBlock(Block block) -/* */ { -/* 20 */ super(block); -/* 21 */ setMaxDurability(0); -/* 22 */ setHasSubtypes(true); -/* */ } -/* */ -/* */ public void addInformation(ItemStack s, EntityPlayer p, List l, boolean flag) -/* */ { -/* 27 */ super.addInformation(s, p, l, flag); -/* 28 */ if (s.getMetadata() >= TorchRechargerBlock.names.length) -/* 29 */ s.setMetadata(0); -/* 30 */ l.add("Stockage de torches :" + com.bernard.torch.blocks.tileentities.TorchRechargerTileEntity.maxTorchValueFromMeta[s.getMetadata()]); -/* 31 */ l.add("Stockage de charbon :" + com.bernard.torch.blocks.tileentities.TorchRechargerTileEntity.maxCoalValueFromMeta[s.getMetadata()]); -/* 32 */ l.add("Stockage de batons :" + com.bernard.torch.blocks.tileentities.TorchRechargerTileEntity.maxStickValueFromMeta[s.getMetadata()]); -/* */ } -/* */ -/* */ -/* */ public int getMetadata(int meta) -/* */ { -/* 38 */ return meta; -/* */ } -/* */ -/* */ @SideOnly(Side.CLIENT) -/* */ public IIcon getIconFromDamage(int meta) -/* */ { -/* 44 */ return this.blockInstance.getIcon(2, meta); -/* */ } -/* */ -/* */ public String getUnlocalizedName(ItemStack stack) -/* */ { -/* 49 */ int meta = stack.getMetadata(); -/* 50 */ if ((meta < 0) || (meta >= TorchRechargerBlock.names.length)) -/* 51 */ meta = 0; -/* 52 */ return TorchRechargerBlock.names[meta]; -/* */ } -/* */ } +package com.bernard.torch.blocks.itemblocs; +import java.util.List; +import com.bernard.torch.blocks.EnumTorchRecharger; +import com.bernard.torch.blocks.TorchRechargerBlock; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockSapling; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraft.world.biome.Biome.FlowerEntry; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +public class TorchRechargerItemBlock extends ItemBlock { + + public TorchRechargerItemBlock(Block block) { + super(block); + setRegistryName(block.getRegistryName()); + setMaxDamage(0); + setHasSubtypes(true); + } + + @Override + public void addInformation(ItemStack s, World worldIn, List l, ITooltipFlag flagIn) { + super.addInformation(s, worldIn, l, flagIn); + l.add("Stockage de torches :" + + EnumTorchRecharger.byMetadata(s.getMetadata()).getMaxTorch()); + l.add("Stockage de charbon :" + + EnumTorchRecharger.byMetadata(s.getMetadata()).getMaxCoal()); + l.add("Stockage de batons :" + + EnumTorchRecharger.byMetadata(s.getMetadata()).getMaxStick()); + } + + @Override + public int getMetadata(int meta) { + return meta; + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + return super.getUnlocalizedName() + "." + EnumTorchRecharger.byMetadata(stack.getMetadata()).getName(); + } +} \ No newline at end of file diff --git a/src/main/java/com/bernard/torch/blocks/tileentities/TorchRechargerTileEntity.java b/src/main/java/com/bernard/torch/blocks/tileentities/TorchRechargerTileEntity.java index 40bcf17..b6fe6b0 100644 --- a/src/main/java/com/bernard/torch/blocks/tileentities/TorchRechargerTileEntity.java +++ b/src/main/java/com/bernard/torch/blocks/tileentities/TorchRechargerTileEntity.java @@ -1,6 +1,10 @@ package com.bernard.torch.blocks.tileentities; +import com.bernard.torch.IVariant; +import com.bernard.torch.IVariant.IEnumVariant; + import com.bernard.torch.api.ITorchRechargable; +import com.bernard.torch.blocks.EnumTorchRecharger; import com.bernard.torch.init.CoalStickAndTorchesRegister; import java.io.PrintStream; import net.minecraft.entity.player.EntityPlayer; @@ -9,358 +13,371 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; -import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -public class TorchRechargerTileEntity extends TileEntity implements IInventory -{ - int torchValue = 0; int stickValue = 0; int coalValue = 0; - +public class TorchRechargerTileEntity extends TileEntity implements IInventory { + int torchValue = 0; + int stickValue = 0; + int coalValue = 0; + ItemStack stackStored; + ItemStack stackCharging; - public static final int[] maxCoalValueFromMeta = { 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768 }; - public static final int[] maxStickValueFromMeta = { 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768 }; - public static final int[] maxTorchValueFromMeta = { 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536 }; - ItemStack stackStored; - ItemStack stackCharging; - - public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); - this.torchValue = compound.getInteger("TorchValue"); - this.stickValue = compound.getInteger("StickValue"); - this.coalValue = compound.getInteger("CoalValue"); - if (compound.hasKey("StoredItem", 10)) { - NBTTagCompound itemCompound = compound.getCompoundTag("StoredItem"); - this.stackStored = ItemStack.loadItemStackFromNBT(itemCompound); - } - if (compound.hasKey("ChargingItem", 10)) { - NBTTagCompound itemCompound = compound.getCompoundTag("ChargingItem"); - this.stackCharging = ItemStack.loadItemStackFromNBT(itemCompound); - } - } - + public void readFromNBT(NBTTagCompound compound) { + super.readFromNBT(compound); + this.torchValue = compound.getInteger("TorchValue"); + this.stickValue = compound.getInteger("StickValue"); + this.coalValue = compound.getInteger("CoalValue"); + if (compound.hasKey("StoredItem", 10)) { + NBTTagCompound itemCompound = compound.getCompoundTag("StoredItem"); + this.stackStored = new ItemStack(itemCompound); + } + if (compound.hasKey("ChargingItem", 10)) { + NBTTagCompound itemCompound = compound.getCompoundTag("ChargingItem"); + this.stackCharging = new ItemStack(itemCompound); + } + } - public void writeToNBT(NBTTagCompound compound) - { - super.writeToNBT(compound); - compound.setInteger("TorchValue", this.torchValue); - compound.setInteger("StickValue", this.stickValue); - compound.setInteger("CoalValue", this.coalValue); - if (this.stackStored != null) { - NBTTagCompound itemCompound = new NBTTagCompound(); - this.stackStored.writeToNBT(itemCompound); - compound.setTag("StoredItem", itemCompound); - } - if (this.stackCharging != null) { - NBTTagCompound itemCompound = new NBTTagCompound(); - this.stackCharging.writeToNBT(itemCompound); - compound.setTag("ChargingItem", itemCompound); - } - } - + public NBTTagCompound writeToNBT(NBTTagCompound compound) { + super.writeToNBT(compound); + compound.setInteger("TorchValue", this.torchValue); + compound.setInteger("StickValue", this.stickValue); + compound.setInteger("CoalValue", this.coalValue); + if (this.stackStored != null) { + NBTTagCompound itemCompound = new NBTTagCompound(); + this.stackStored.writeToNBT(itemCompound); + compound.setTag("StoredItem", itemCompound); + } + if (this.stackCharging != null) { + NBTTagCompound itemCompound = new NBTTagCompound(); + this.stackCharging.writeToNBT(itemCompound); + compound.setTag("ChargingItem", itemCompound); + } + return compound; + } - public Packet getDescriptionPacket() - { - NBTTagCompound compound = new NBTTagCompound(); - writeToNBT(compound); - return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, compound); - } - - public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) - { - readFromNBT(pkt.getNbtCompound()); - } - - public boolean canUpdate() - { - return true; - } - - public void updateEntity() - { - if (this.blockMetadata == -1) - this.blockMetadata = 0; - if (this.stackStored != null) - updateStackStored(); - updateTransfers(); - updateCharging(); - markDirty(); - } - - public void updateStackStored() { - try { - if (isItemValidForSlot(0, this.stackStored)) { - if ((this.stickValue < maxStickValueFromMeta[this.blockMetadata]) && - (CoalStickAndTorchesRegister.isStick(this.stackStored.getItem()))) { - int singleValue = CoalStickAndTorchesRegister.getStickValue(this.stackStored.getItem()); - if (singleValue * this.stackStored.stackSize + this.stickValue <= maxStickValueFromMeta[this.blockMetadata]) { - this.stickValue += singleValue * this.stackStored.stackSize; - this.stackStored = null; - } else { - for (int i = 0; - this.stickValue + singleValue <= maxStickValueFromMeta[this.blockMetadata]; i++) - this.stickValue += singleValue; - this.stackStored.stackSize -= i; - if (this.stackStored.stackSize <= 0) { - this.stackStored = null; - } - } - } - if ((this.coalValue < maxCoalValueFromMeta[this.blockMetadata]) && - (CoalStickAndTorchesRegister.isCoal(this.stackStored.getItem()))) { - int singleValue = CoalStickAndTorchesRegister.getCoalValue(this.stackStored.getItem()); - if (singleValue * this.stackStored.stackSize + this.coalValue <= maxCoalValueFromMeta[this.blockMetadata]) { - this.coalValue += singleValue * this.stackStored.stackSize; - this.stackStored = null; - } else { - for (int i = 0; - this.coalValue + singleValue <= maxCoalValueFromMeta[this.blockMetadata]; i++) - this.coalValue += singleValue; - this.stackStored.stackSize -= i; - if (this.stackStored.stackSize <= 0) - this.stackStored = null; - } - } - if ((this.torchValue < maxTorchValueFromMeta[this.blockMetadata]) && - (CoalStickAndTorchesRegister.isTorch(this.stackStored.getItem()))) { - int singleValue = CoalStickAndTorchesRegister.getTorchValue(this.stackStored.getItem()); - if (singleValue * this.stackStored.stackSize + this.torchValue <= maxTorchValueFromMeta[this.blockMetadata]) { - this.torchValue += singleValue * this.stackStored.stackSize; - this.stackStored = null; - } else { - for (int i = 0; - this.torchValue + singleValue <= maxTorchValueFromMeta[this.blockMetadata]; i++) - this.torchValue += singleValue; - this.stackStored.stackSize -= i; - if (this.stackStored.stackSize <= 0) - this.stackStored = null; - } - } - } - } catch (NullPointerException e) { - System.err.println("NullPointer"); - } - } - - public void updateTransfers() { - if (this.torchValue < maxTorchValueFromMeta[this.blockMetadata]) { - int torchNedded = maxTorchValueFromMeta[this.blockMetadata] - this.torchValue; - if (torchNedded <= Math.min(this.coalValue, this.stickValue)) { - this.torchValue = maxTorchValueFromMeta[this.blockMetadata]; - this.coalValue -= torchNedded; - this.stickValue -= torchNedded; - } else { - int torchRecharged = Math.min(this.coalValue, this.stickValue); - this.coalValue -= torchRecharged; - this.stickValue -= torchRecharged; - this.torchValue += torchRecharged; - } - } - } - - public void updateCharging() { - if (isItemValidForSlot(1, this.stackCharging)) { - ITorchRechargable torchRechargable = (ITorchRechargable)this.stackCharging.getItem(); - int nedded = torchRechargable.getLuxNedded(this.stackCharging); - if (this.torchValue <= nedded) { - torchRechargable.recharge(this.stackCharging, this.torchValue); - this.torchValue = 0; - } else { - this.torchValue -= nedded; - torchRechargable.recharge(this.stackCharging, nedded); - } - } - } - - public int getSizeInventory() - { - return 2; - } - - public ItemStack getStackInSlot(int slot) - { - switch (slot) { - case 0: - return this.stackStored; - case 1: - return this.stackCharging; - } - return null; - } - + public boolean canUpdate() { + return true; + } + public void updateEntity() { + if (this.stackStored != null) + updateStackStored(); + updateTransfers(); + updateCharging(); + markDirty(); + } - public ItemStack decrStackSize(int slot, int amount) - { - switch (slot) { - case 0: - if (this.stackStored == null) - return null; - ItemStack stack; if (amount >= this.stackStored.stackSize) { - ItemStack stack = this.stackStored; - this.stackStored = null; - markDirty(); - } else { - stack = this.stackStored.splitStack(amount); - if (this.stackStored.stackSize <= 0) - this.stackStored = null; - markDirty(); - } - return stack; - case 1: - if (this.stackCharging == null) - return null; - ItemStack stack; if (amount >= this.stackCharging.stackSize) { - ItemStack stack = this.stackCharging; - this.stackCharging = null; - markDirty(); - } else { - stack = this.stackCharging.splitStack(amount); - if (this.stackCharging.stackSize <= 0) - this.stackCharging = null; - markDirty(); - } - return stack; - } - return null; - } - + public void updateStackStored() { + try { + if (isItemValidForSlot(0, this.stackStored)) { + if ((this.stickValue < EnumTorchRecharger.byMetadata(getBlockMetadata()).getMaxStick()) + && (CoalStickAndTorchesRegister.isStick(this.stackStored.getItem()))) { + int singleValue = CoalStickAndTorchesRegister.getStickValue(this.stackStored.getItem()); + if (singleValue * this.stackStored.getCount() + this.stickValue <= EnumTorchRecharger + .byMetadata(getBlockMetadata()).getMaxStick()) { + this.stickValue += singleValue * this.stackStored.getCount(); + this.stackStored = null; + } else { + int absorbed = 0; + for (int i = 0; this.stickValue + singleValue <= EnumTorchRecharger + .byMetadata(getBlockMetadata()).getMaxStick(); i++) { + this.stickValue += singleValue; + absorbed = i; + } + this.stackStored.setCount(stackStored.getCount() - absorbed); + if (this.stackStored.getCount() <= 0) { + this.stackStored = null; + } + } + } + if ((this.coalValue < EnumTorchRecharger.byMetadata(getBlockMetadata()).getMaxCoal()) + && (CoalStickAndTorchesRegister.isCoal(this.stackStored.getItem()))) { + int singleValue = CoalStickAndTorchesRegister.getCoalValue(this.stackStored.getItem()); + if (singleValue * this.stackStored.getCount() + this.coalValue <= EnumTorchRecharger + .byMetadata(getBlockMetadata()).getMaxCoal()) { + this.coalValue += singleValue * this.stackStored.getCount(); + this.stackStored = null; + } else { + int absorbed = 0; + + for (int i = 0; this.coalValue + singleValue <= EnumTorchRecharger + .byMetadata(getBlockMetadata()).getMaxCoal(); i++) { + this.coalValue += singleValue; + absorbed = i; + } + this.stackStored.setCount(stackStored.getCount() - absorbed); + if (this.stackStored.getCount() <= 0) + this.stackStored = null; + } + } + if ((this.torchValue < EnumTorchRecharger.byMetadata(getBlockMetadata()).getMaxTorch()) + && (CoalStickAndTorchesRegister.isTorch(this.stackStored.getItem()))) { + int singleValue = CoalStickAndTorchesRegister.getTorchValue(this.stackStored.getItem()); + if (singleValue * this.stackStored.getCount() + this.torchValue <= EnumTorchRecharger + .byMetadata(getBlockMetadata()).getMaxTorch()) { + this.torchValue += singleValue * this.stackStored.getCount(); + this.stackStored = null; + } else { + int absorbed = 0; + for (int i = 0; this.torchValue + singleValue <= EnumTorchRecharger + .byMetadata(getBlockMetadata()).getMaxTorch(); i++) { + this.torchValue += singleValue; + absorbed = i; + } + this.stackStored.setCount(stackStored.getCount() - absorbed); + if (this.stackStored.getCount() <= 0) + this.stackStored = null; + } + } + } + } catch (NullPointerException e) { + System.err.println("NullPointer"); + } + } + public void updateTransfers() { + if (this.torchValue < EnumTorchRecharger.byMetadata(getBlockMetadata()).getMaxTorch()) { + int torchNedded = EnumTorchRecharger.byMetadata(getBlockMetadata()).getMaxTorch() - this.torchValue; + if (torchNedded <= Math.min(this.coalValue, this.stickValue)) { + this.torchValue = EnumTorchRecharger.byMetadata(getBlockMetadata()).getMaxTorch(); + this.coalValue -= torchNedded; + this.stickValue -= torchNedded; + } else { + int torchRecharged = Math.min(this.coalValue, this.stickValue); + this.coalValue -= torchRecharged; + this.stickValue -= torchRecharged; + this.torchValue += torchRecharged; + } + } + } + public void updateCharging() { + if (isItemValidForSlot(1, this.stackCharging)) { + ITorchRechargable torchRechargable = (ITorchRechargable) this.stackCharging.getItem(); + int nedded = torchRechargable.getLuxNedded(this.stackCharging); + if (this.torchValue <= nedded) { + torchRechargable.recharge(this.stackCharging, this.torchValue); + this.torchValue = 0; + } else { + this.torchValue -= nedded; + torchRechargable.recharge(this.stackCharging, nedded); + } + } + } - public ItemStack getStackInSlotOnClosing(int slot) - { - switch (slot) { - case 0: - ItemStack stack = this.stackStored; - this.stackStored = null; - return stack; - case 1: - ItemStack stack = this.stackCharging; - this.stackCharging = null; - return stack; - } - return null; - } - + public int getSizeInventory() { + return 2; + } - public void setInventorySlotContents(int slot, ItemStack stack) - { - switch (slot) { - case 0: - this.stackStored = stack; - return; - case 1: - this.stackCharging = stack; - return; - } - } - - public String getInventoryName() - { - return "tile.torch_recharger"; - } - - public boolean isCustomInventoryName() - { - return false; - } - - public int getInventoryStackLimit() - { - return 64; - } - + public ItemStack getStackInSlot(int slot) { + switch (slot) { + case 0: + return this.stackStored; + case 1: + return this.stackCharging; + } + return null; + } - public boolean isUseableByPlayer(EntityPlayer player) - { - return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) == this; - } - + public ItemStack decrStackSize(int slot, int amount) { + ItemStack stack; + switch (slot) { + case 0: + if (this.stackStored == null) + return null; + if (amount >= this.stackStored.getCount()) { + stack = this.stackStored; + this.stackStored = null; + markDirty(); + } else { + stack = this.stackStored.splitStack(amount); + if (this.stackStored.getCount() <= 0) + this.stackStored = null; + markDirty(); + } + return stack; + case 1: + if (this.stackCharging == null) + return null; + if (amount >= this.stackCharging.getCount()) { + stack = this.stackCharging; + this.stackCharging = null; + markDirty(); + } else { + stack = this.stackCharging.splitStack(amount); + if (this.stackCharging.getCount() <= 0) + this.stackCharging = null; + markDirty(); + } + return stack; + } + return null; + } + public ItemStack getStackInSlotOnClosing(int slot) { + ItemStack stack; + switch (slot) { + case 0: + stack = this.stackStored; + this.stackStored = null; + return stack; + case 1: + stack = this.stackCharging; + this.stackCharging = null; + return stack; + } + return null; + } + public void setInventorySlotContents(int slot, ItemStack stack) { + switch (slot) { + case 0: + this.stackStored = stack; + return; + case 1: + this.stackCharging = stack; + return; + } + } + public String getInventoryName() { + return "tile.torch_recharger"; + } + public boolean isCustomInventoryName() { + return false; + } + public int getInventoryStackLimit() { + return 64; + } - public void openChest() {} - + public boolean isUseableByPlayer(EntityPlayer player) { + return this.world.getTileEntity(pos) == this; + } + public void openChest() { + } + public void closeChest() { + } + public boolean isItemValidForSlot(int slot, ItemStack stack) { + if (stack == null) + return false; + switch (slot) { + case 0: + return CoalStickAndTorchesRegister.isRegistered(stack.getItem()); + case 1: + return stack.getItem() instanceof ITorchRechargable; + } + return false; + } - public void closeChest() {} - + public int getTorchValue() { + return this.torchValue; + } + public int getStickValue() { + return this.stickValue; + } + public int getCoalValue() { + return this.coalValue; + } + public int getMaxTorchValue() { + return EnumTorchRecharger.byMetadata(getBlockMetadata()).getMaxTorch(); + } + public int getMaxStickValue() { + return EnumTorchRecharger.byMetadata(getBlockMetadata()).getMaxStick(); + } + public int getMaxCoalValue() { + return EnumTorchRecharger.byMetadata(getBlockMetadata()).getMaxCoal(); + } - public boolean isItemValidForSlot(int slot, ItemStack stack) - { - if (stack == null) - return false; - switch (slot) { - case 0: - return CoalStickAndTorchesRegister.isRegistered(stack.getItem()); - - case 1: - return stack.getItem() instanceof ITorchRechargable; - } - - return false; - } - + public ItemStack getStackStored() { + return this.stackStored; + } + + public ItemStack getStackCharging() { + return this.stackCharging; + } + + public String toString() { + return this.torchValue + ";" + this.stickValue + ";" + this.coalValue + "p=" + this.pos; + } + + @Override + public String getName() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean hasCustomName() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isEmpty() { + // TODO Auto-generated method stub + return false; + } + + @Override + public ItemStack removeStackFromSlot(int index) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean isUsableByPlayer(EntityPlayer player) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void openInventory(EntityPlayer player) { + // TODO Auto-generated method stub + + } + + @Override + public void closeInventory(EntityPlayer player) { + // TODO Auto-generated method stub + + } + + @Override + public int getField(int id) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public void setField(int id, int value) { + // TODO Auto-generated method stub + + } + + @Override + public int getFieldCount() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public void clear() { + // TODO Auto-generated method stub + + } - public int getTorchValue() - { - return this.torchValue; - } - - public int getStickValue() { - return this.stickValue; - } - - public int getCoalValue() { - return this.coalValue; - } - - public int getMaxTorchValue() { - if (this.blockMetadata == -1) { - this.blockMetadata = 0; - } - return maxTorchValueFromMeta[this.blockMetadata]; - } - - public int getMaxStickValue() { - if (this.blockMetadata == -1) { - this.blockMetadata = 0; - } - return maxStickValueFromMeta[this.blockMetadata]; - } - - public int getMaxCoalValue() { - if (this.blockMetadata == -1) { - this.blockMetadata = 0; - } - return maxCoalValueFromMeta[this.blockMetadata]; - } - - public ItemStack getStackStored() { - return this.stackStored; - } - - public ItemStack getStackCharging() { - return this.stackCharging; - } - - public String toString() - { - return this.torchValue + ";" + this.stickValue + ";" + this.coalValue + "p=" + this.xCoord + ";" + this.yCoord + ";" + this.zCoord; - } } - - diff --git a/src/main/java/com/bernard/torch/gui/TorchGuiHandler.java b/src/main/java/com/bernard/torch/gui/TorchGuiHandler.java index 9f5249b..0a3aebf 100644 --- a/src/main/java/com/bernard/torch/gui/TorchGuiHandler.java +++ b/src/main/java/com/bernard/torch/gui/TorchGuiHandler.java @@ -1,39 +1,39 @@ -/* */ package com.bernard.torch.gui; -/* */ -/* */ import com.bernard.torch.blocks.tileentities.TorchRechargerTileEntity; -/* */ import cpw.mods.fml.common.network.IGuiHandler; -/* */ import java.io.PrintStream; -/* */ import net.minecraft.entity.player.EntityPlayer; -/* */ import net.minecraft.tileentity.TileEntity; -/* */ import net.minecraft.world.World; -/* */ -/* */ public class TorchGuiHandler implements IGuiHandler -/* */ { -/* */ public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) -/* */ { -/* 14 */ if (ID == 0) { -/* 15 */ TileEntity te = world.getTileEntity(x, y, z); -/* 16 */ if ((te instanceof TorchRechargerTileEntity)) { -/* 17 */ System.out.println("S:" + te.toString()); -/* 18 */ return new TorchRechargerContainer((TorchRechargerTileEntity)te, player.inventory); -/* */ } -/* */ } -/* */ -/* 22 */ return null; -/* */ } -/* */ -/* */ public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) -/* */ { -/* 27 */ if (ID == 0) { -/* 28 */ TileEntity te = world.getTileEntity(x, y, z); -/* 29 */ if ((te instanceof TorchRechargerTileEntity)) { -/* 30 */ System.out.println("C:" + te.toString()); -/* 31 */ return new TorchRechargerGuiContainer((TorchRechargerTileEntity)te, player.inventory); -/* */ } -/* */ } -/* */ -/* 35 */ return null; -/* */ } -/* */ } +package com.bernard.torch.gui; +import com.bernard.torch.blocks.tileentities.TorchRechargerTileEntity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.fml.common.network.IGuiHandler; + +public class TorchGuiHandler implements IGuiHandler { + + @Override + public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { + if (ID == 0) { + TileEntity te = world.getTileEntity(new BlockPos(x, y, z)); + System.out.println("wow is but "+te); + if ((te instanceof TorchRechargerTileEntity)) { + System.out.println("S:" + te.toString()); + return new TorchRechargerContainer((TorchRechargerTileEntity) te, player.inventory); + } + } + + return null; + } + + @Override + public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { + if (ID == 0) { + TileEntity te = world.getTileEntity(new BlockPos(x, y, z)); + if ((te instanceof TorchRechargerTileEntity)) { + System.out.println("C:" + te.toString()); + return new TorchRechargerGuiContainer((TorchRechargerTileEntity) te, player.inventory); + } + } + + return null; + } +} \ No newline at end of file diff --git a/src/main/java/com/bernard/torch/gui/TorchRechargerContainer.java b/src/main/java/com/bernard/torch/gui/TorchRechargerContainer.java index a03487c..9aebe1d 100644 --- a/src/main/java/com/bernard/torch/gui/TorchRechargerContainer.java +++ b/src/main/java/com/bernard/torch/gui/TorchRechargerContainer.java @@ -1,102 +1,90 @@ -/* */ package com.bernard.torch.gui; -/* */ -/* */ import com.bernard.torch.api.ITorchRechargable; -/* */ import com.bernard.torch.blocks.tileentities.TorchRechargerTileEntity; -/* */ import com.bernard.torch.init.CoalStickAndTorchesRegister; -/* */ import java.util.List; -/* */ import net.minecraft.entity.player.EntityPlayer; -/* */ import net.minecraft.entity.player.InventoryPlayer; -/* */ import net.minecraft.inventory.Container; -/* */ import net.minecraft.inventory.IInventory; -/* */ import net.minecraft.inventory.Slot; -/* */ import net.minecraft.item.ItemStack; -/* */ -/* */ public class TorchRechargerContainer extends Container -/* */ { -/* */ TorchRechargerTileEntity tile; -/* */ -/* */ public TorchRechargerContainer(TorchRechargerTileEntity te, InventoryPlayer inventory) -/* */ { -/* 20 */ this.tile = te; -/* 21 */ this.tile.openChest(); -/* 22 */ addSlotToContainer(new InputSlot(this.tile, 0, 14, 33)); -/* 23 */ addSlotToContainer(new OutputSlot(this.tile, 1, 138, 33)); -/* 24 */ bindPlayerInventory(inventory); -/* */ } -/* */ -/* */ public void bindPlayerInventory(InventoryPlayer inventory) -/* */ { -/* 29 */ for (int i = 0; i < 3; i++) { -/* 30 */ for (int j = 0; j < 9; j++) { -/* 31 */ addSlotToContainer(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); -/* */ } -/* */ } -/* 34 */ for (i = 0; i < 9; i++) { -/* 35 */ addSlotToContainer(new Slot(inventory, i, 8 + i * 18, 142)); -/* */ } -/* */ } -/* */ -/* */ public boolean canInteractWith(EntityPlayer player) -/* */ { -/* 41 */ return this.tile.isUseableByPlayer(player); -/* */ } -/* */ -/* */ public void onContainerClosed(EntityPlayer player) -/* */ { -/* 46 */ super.onContainerClosed(player); -/* 47 */ this.tile.closeChest(); -/* */ } -/* */ -/* */ public ItemStack transferStackInSlot(EntityPlayer player, int slotIndex) -/* */ { -/* 52 */ ItemStack stack = null; -/* 53 */ Slot slot = (Slot)this.inventorySlots.get(slotIndex); -/* 54 */ if ((slot != null) && (slot.getHasStack())) { -/* 55 */ ItemStack stackBis = slot.getStack(); -/* 56 */ stack = stackBis.copy(); -/* 57 */ if (slotIndex < this.tile.getSizeInventory()) { -/* 58 */ if (!mergeItemStack(stackBis, this.tile.getSizeInventory(), this.inventorySlots.size(), true)) { -/* 59 */ return null; -/* */ } -/* 61 */ } else if (!mergeItemStack(stackBis, 0, this.tile.getSizeInventory(), false)) { -/* 62 */ return null; -/* */ } -/* 64 */ if (stackBis.stackSize == 0) { -/* 65 */ slot.putStack((ItemStack)null); -/* */ } else { -/* 67 */ slot.onSlotChanged(); -/* */ } -/* */ } -/* 70 */ return stack; -/* */ } -/* */ -/* */ public class InputSlot extends Slot -/* */ { -/* */ public InputSlot(IInventory inventory, int i, int j, int k) { -/* 76 */ super(i, j, k); -/* */ } -/* */ -/* */ public boolean isItemValid(ItemStack stack) -/* */ { -/* 81 */ if (stack == null) -/* 82 */ return false; -/* 83 */ return CoalStickAndTorchesRegister.isRegistered(stack.getItem()); -/* */ } -/* */ } -/* */ -/* */ public class OutputSlot extends Slot -/* */ { -/* */ public OutputSlot(IInventory inventory, int i, int j, int k) { -/* 90 */ super(i, j, k); -/* */ } -/* */ -/* */ public boolean isItemValid(ItemStack stack) -/* */ { -/* 95 */ if (stack == null) -/* 96 */ return false; -/* 97 */ return stack.getItem() instanceof ITorchRechargable; -/* */ } -/* */ } -/* */ } +package com.bernard.torch.gui; +import com.bernard.torch.api.ITorchRechargable; +import com.bernard.torch.blocks.tileentities.TorchRechargerTileEntity; +import com.bernard.torch.init.CoalStickAndTorchesRegister; +import java.util.List; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +public class TorchRechargerContainer extends Container { + TorchRechargerTileEntity tile; + + public TorchRechargerContainer(TorchRechargerTileEntity te, InventoryPlayer inventory) { + this.tile = te; + this.tile.openChest(); + addSlotToContainer(new InputSlot(this.tile, 0, 14, 33)); + addSlotToContainer(new OutputSlot(this.tile, 1, 138, 33)); + bindPlayerInventory(inventory); + } + + public void bindPlayerInventory(InventoryPlayer inventory) { + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 9; j++) { + addSlotToContainer(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + for (int i = 0; i < 9; i++) { + addSlotToContainer(new Slot(inventory, i, 8 + i * 18, 142)); + } + } + + public boolean canInteractWith(EntityPlayer player) { + return this.tile.isUseableByPlayer(player); + } + + public void onContainerClosed(EntityPlayer player) { + super.onContainerClosed(player); + this.tile.closeChest(); + } + + public ItemStack transferStackInSlot(EntityPlayer player, int slotIndex) { + ItemStack stack = null; + Slot slot = (Slot) this.inventorySlots.get(slotIndex); + if ((slot != null) && (slot.getHasStack())) { + ItemStack stackBis = slot.getStack(); + stack = stackBis.copy(); + if (slotIndex < this.tile.getSizeInventory()) { + if (!mergeItemStack(stackBis, this.tile.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else if (!mergeItemStack(stackBis, 0, this.tile.getSizeInventory(), false)) { + return null; + } + if (stackBis.getCount() == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + return stack; + } + + public class InputSlot extends Slot { + public InputSlot(IInventory inventory, int i, int j, int k) { + super(inventory, i, j, k); + } + + public boolean isItemValid(ItemStack stack) { + if (stack == null) + return false; + return CoalStickAndTorchesRegister.isRegistered(stack.getItem()); + } + } + + public class OutputSlot extends Slot { + public OutputSlot(IInventory inventory, int i, int j, int k) { + super(inventory, i, j, k); + } + + public boolean isItemValid(ItemStack stack) { + if (stack == null) + return false; + return stack.getItem() instanceof ITorchRechargable; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/bernard/torch/gui/TorchRechargerGuiContainer.java b/src/main/java/com/bernard/torch/gui/TorchRechargerGuiContainer.java index 1708b23..caead97 100644 --- a/src/main/java/com/bernard/torch/gui/TorchRechargerGuiContainer.java +++ b/src/main/java/com/bernard/torch/gui/TorchRechargerGuiContainer.java @@ -11,111 +11,76 @@ import net.minecraft.inventory.IInventory; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; +public class TorchRechargerGuiContainer extends GuiContainer { + private static final ResourceLocation background = new ResourceLocation("torch_mod", + "textures/guis/torch_recharger.png"); -public class TorchRechargerGuiContainer - extends GuiContainer -{ - private static final ResourceLocation background = new ResourceLocation("torch_mod", "textures/guis/torch_recharger.png"); - - public TorchRechargerTileEntity tile; - public IInventory playerInventory; - private float mouseX = 0.0F; private float mouseY = 0.0F; - - public TorchRechargerGuiContainer(TorchRechargerTileEntity te, InventoryPlayer inventory) { - super(new TorchRechargerContainer(te, inventory)); - this.tile = te; - this.playerInventory = inventory; - this.allowUserInput = false; - this.xSize = 176; - this.ySize = 166; - } - - public boolean doesGuiPauseGame() - { - return false; - } - - public void drawScreen(int x, int y, float par3) - { - this.mouseX = x; - this.mouseY = y; - super.drawScreen(x, y, par3); - } - - protected void drawGuiContainerForegroundLayer(int x, int y) - { - int k = (this.width - this.xSize) / 2; - int l = (this.height - this.ySize) / 2; - + public TorchRechargerTileEntity tile; + public IInventory playerInventory; + private float mouseX = 0.0F; + private float mouseY = 0.0F; + public TorchRechargerGuiContainer(TorchRechargerTileEntity te, InventoryPlayer inventory) { + super(new TorchRechargerContainer(te, inventory)); + this.tile = te; + this.playerInventory = inventory; + this.allowUserInput = false; + this.xSize = 176; + this.ySize = 166; + } + public boolean doesGuiPauseGame() { + return false; + } + public void drawScreen(int x, int y, float par3) { + this.mouseX = x; + this.mouseY = y; + super.drawScreen(x, y, par3); + } + protected void drawGuiContainerForegroundLayer(int x, int y) { + int k = (this.width - this.xSize) / 2; + int l = (this.height - this.ySize) / 2; + if ((this.mouseX >= k + 101) && (this.mouseX < k + 116) && (this.mouseY >= l + 8) && (this.mouseY < l + 81)) { + List li = new ArrayList(); + li.add("Torches stockées :"); + li.add(Integer.toString(this.tile.getTorchValue(), 10)); + drawHoveringText(li, (int) this.mouseX - k, (int) this.mouseY - l, this.fontRenderer); + } else if ((this.mouseX >= k + 45) && (this.mouseX < k + 70) && (this.mouseY >= l + 9) + && (this.mouseY < l + 38)) { + List li = new ArrayList(); + li.add("Charbon stocké :"); + li.add(Integer.toString(this.tile.getCoalValue(), 10)); + drawHoveringText(li, (int) this.mouseX - k, (int) this.mouseY - l, this.fontRenderer); + } else if ((this.mouseX >= k + 56) && (this.mouseX < k + 60) && (this.mouseY >= l + 40) + && (this.mouseY < l + 67)) { + List li = new ArrayList(); + li.add("Batons stocké :"); + li.add(Integer.toString(this.tile.getStickValue(), 10)); + drawHoveringText(li, (int) this.mouseX - k, (int) this.mouseY - l, this.fontRenderer); + } + } + protected void drawGuiContainerBackgroundLayer(float partialRenderTick, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.mc.getTextureManager().bindTexture(background); + int k = (this.width - this.xSize) / 2; + int l = (this.height - this.ySize) / 2; + drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize); - if ((this.mouseX >= k + 101) && (this.mouseX < k + 116) && (this.mouseY >= l + 8) && (this.mouseY < l + 81)) { - List li = new ArrayList(); - li.add("Torches stock�s :"); - li.add(Integer.toString(this.tile.getTorchValue(), 10)); - drawHoveringText(li, (int)this.mouseX - k, (int)this.mouseY - l, this.fontRendererObj); - } else if ((this.mouseX >= k + 45) && (this.mouseX < k + 70) && (this.mouseY >= l + 9) && (this.mouseY < l + 38)) { - List li = new ArrayList(); - li.add("Charbon stock� :"); - li.add(Integer.toString(this.tile.getCoalValue(), 10)); - drawHoveringText(li, (int)this.mouseX - k, (int)this.mouseY - l, this.fontRendererObj); - } else if ((this.mouseX >= k + 56) && (this.mouseX < k + 60) && (this.mouseY >= l + 40) && (this.mouseY < l + 67)) { - List li = new ArrayList(); - li.add("Batons stock�s :"); - li.add(Integer.toString(this.tile.getStickValue(), 10)); - drawHoveringText(li, (int)this.mouseX - k, (int)this.mouseY - l, this.fontRendererObj); - } - } - - - protected void drawGuiContainerBackgroundLayer(float partialRenderTick, int x, int y) - { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.getTextureManager().bindTexture(background); - - int k = (this.width - this.xSize) / 2; - - int l = (this.height - this.ySize) / 2; - - drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize); - - - - - - - - - - - - - - - - - - - - - int meta = this.tile.blockMetadata; - if (meta < 0) - meta = 0; - int torchPixels = Math.floorDiv(this.tile.getTorchValue() * 80, this.tile.getMaxTorchValue()); - drawTexturedModalRect(k + 94, l + 1 + 80 - torchPixels, this.xSize, 80 - torchPixels, 29, torchPixels); - int coalPixels = Math.floorDiv(this.tile.getCoalValue() * 32, this.tile.getMaxCoalValue()); - drawTexturedModalRect(k + 42, l + 7 + 32 - coalPixels, this.xSize, 112 - coalPixels, 30, coalPixels); - int stickPixels = Math.floorDiv(this.tile.getStickValue() * 40, this.tile.getMaxStickValue()); - drawTexturedModalRect(k + 53, l + 39 + 40 - stickPixels, this.xSize, 152 - stickPixels, 9, stickPixels); - } -} - - + int meta = this.tile.getBlockMetadata(); + if (meta < 0) + meta = 0; + int torchPixels = Math.floorDiv(this.tile.getTorchValue() * 80, this.tile.getMaxTorchValue()); + drawTexturedModalRect(k + 94, l + 1 + 80 - torchPixels, this.xSize, 80 - torchPixels, 29, torchPixels); + int coalPixels = Math.floorDiv(this.tile.getCoalValue() * 32, this.tile.getMaxCoalValue()); + drawTexturedModalRect(k + 42, l + 7 + 32 - coalPixels, this.xSize, 112 - coalPixels, 30, coalPixels); + int stickPixels = Math.floorDiv(this.tile.getStickValue() * 40, this.tile.getMaxStickValue()); + drawTexturedModalRect(k + 53, l + 39 + 40 - stickPixels, this.xSize, 152 - stickPixels, 9, stickPixels); + } +} \ No newline at end of file diff --git a/src/main/java/com/bernard/torch/init/ClientProxy.java b/src/main/java/com/bernard/torch/init/ClientProxy.java index 0579e9f..b04904d 100644 --- a/src/main/java/com/bernard/torch/init/ClientProxy.java +++ b/src/main/java/com/bernard/torch/init/ClientProxy.java @@ -1,9 +1,6 @@ package com.bernard.torch.init; -public class ClientProxy - extends CommonProxy -{ - public void registerRenders() {} +public class ClientProxy extends CommonProxy { + public void registerRenders() { + } } - - diff --git a/src/main/java/com/bernard/torch/init/CoalStickAndTorchesRegister.java b/src/main/java/com/bernard/torch/init/CoalStickAndTorchesRegister.java index 57b095e..14d9d40 100644 --- a/src/main/java/com/bernard/torch/init/CoalStickAndTorchesRegister.java +++ b/src/main/java/com/bernard/torch/init/CoalStickAndTorchesRegister.java @@ -1,80 +1,93 @@ -/* */ package com.bernard.torch.init; -/* */ -/* */ import java.util.HashMap; -/* */ import java.util.Map; -/* */ import net.minecraft.block.Block; -/* */ import net.minecraft.item.Item; -/* */ import net.minecraft.item.ItemStack; -/* */ -/* */ -/* */ -/* */ public class CoalStickAndTorchesRegister -/* */ { -/* 13 */ private static Map registered = new HashMap(); -/* */ private static final int coalValue = 0; -/* */ private static final int stickValue = 1; -/* */ private static final int torchValue = 2; -/* */ -/* */ public static void registerCoal(Item i, int value) { -/* 19 */ registered.put(i, new Integer[] { Integer.valueOf(0), Integer.valueOf(Math.abs(value)) }); -/* */ } -/* */ -/* 22 */ public static void registerCoal(Block b, int value) { registered.put(Item.getItemFromBlock(b), new Integer[] { Integer.valueOf(0), Integer.valueOf(Math.abs(value)) }); } -/* */ -/* */ public static void registerCoal(ItemStack s, int value) { -/* 25 */ registered.put(s.getItem(), new Integer[] { Integer.valueOf(0), Integer.valueOf(Math.abs(value)) }); -/* */ } -/* */ -/* 28 */ public static void registerStick(Item i, int value) { registered.put(i, new Integer[] { Integer.valueOf(1), Integer.valueOf(Math.abs(value)) }); } -/* */ -/* */ public static void registerStick(Block b, int value) { -/* 31 */ registered.put(Item.getItemFromBlock(b), new Integer[] { Integer.valueOf(1), Integer.valueOf(Math.abs(value)) }); -/* */ } -/* */ -/* 34 */ public static void registerStick(ItemStack s, int value) { registered.put(s.getItem(), new Integer[] { Integer.valueOf(1), Integer.valueOf(Math.abs(value)) }); } -/* */ -/* */ public static void registerTorch(Item i, int value) { -/* 37 */ registered.put(i, new Integer[] { Integer.valueOf(2), Integer.valueOf(Math.abs(value)) }); -/* */ } -/* */ -/* 40 */ public static void registerTorch(Block b, int value) { registered.put(Item.getItemFromBlock(b), new Integer[] { Integer.valueOf(2), Integer.valueOf(Math.abs(value)) }); } -/* */ -/* */ -/* 43 */ public static void registerTorch(ItemStack s, int value) { registered.put(s.getItem(), new Integer[] { Integer.valueOf(2), Integer.valueOf(Math.abs(value)) }); } -/* */ -/* */ public static boolean isCoal(Item i) { -/* 46 */ if (!registered.containsKey(i)) -/* 47 */ return false; -/* 48 */ return ((Integer[])registered.get(i))[0].intValue() == 0; -/* */ } -/* */ -/* 51 */ public static boolean isRegistered(Item i) { return registered.containsKey(i); } -/* */ -/* */ public static boolean isStick(Item i) { -/* 54 */ if (!registered.containsKey(i)) -/* 55 */ return false; -/* 56 */ return ((Integer[])registered.get(i))[0].intValue() == 1; -/* */ } -/* */ -/* 59 */ public static boolean isTorch(Item i) { if (!registered.containsKey(i)) -/* 60 */ return false; -/* 61 */ return ((Integer[])registered.get(i))[0].intValue() == 2; -/* */ } -/* */ -/* 64 */ public static int getCoalValue(Item i) { if (!isCoal(i)) -/* 65 */ return 0; -/* 66 */ return ((Integer[])registered.get(i))[1].intValue(); -/* */ } -/* */ -/* 69 */ public static int getStickValue(Item i) { if (!isStick(i)) -/* 70 */ return 0; -/* 71 */ return ((Integer[])registered.get(i))[1].intValue(); -/* */ } -/* */ -/* 74 */ public static int getTorchValue(Item i) { if (!isTorch(i)) -/* 75 */ return 0; -/* 76 */ return ((Integer[])registered.get(i))[1].intValue(); -/* */ } -/* */ } +package com.bernard.torch.init; +import java.util.HashMap; +import java.util.Map; +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +public class CoalStickAndTorchesRegister { + private static Map registered = new HashMap(); + private static final int coalValue = 0; + private static final int stickValue = 1; + private static final int torchValue = 2; + + public static void registerCoal(Item i, int value) { + registered.put(i, new Integer[] { Integer.valueOf(0), Integer.valueOf(Math.abs(value)) }); + } + + public static void registerCoal(Block b, int value) { + registered.put(Item.getItemFromBlock(b), + new Integer[] { Integer.valueOf(0), Integer.valueOf(Math.abs(value)) }); + } + + public static void registerCoal(ItemStack s, int value) { + registered.put(s.getItem(), new Integer[] { Integer.valueOf(0), Integer.valueOf(Math.abs(value)) }); + } + + public static void registerStick(Item i, int value) { + registered.put(i, new Integer[] { Integer.valueOf(1), Integer.valueOf(Math.abs(value)) }); + } + + public static void registerStick(Block b, int value) { + registered.put(Item.getItemFromBlock(b), + new Integer[] { Integer.valueOf(1), Integer.valueOf(Math.abs(value)) }); + } + + public static void registerStick(ItemStack s, int value) { + registered.put(s.getItem(), new Integer[] { Integer.valueOf(1), Integer.valueOf(Math.abs(value)) }); + } + + public static void registerTorch(Item i, int value) { + registered.put(i, new Integer[] { Integer.valueOf(2), Integer.valueOf(Math.abs(value)) }); + } + + public static void registerTorch(Block b, int value) { + registered.put(Item.getItemFromBlock(b), + new Integer[] { Integer.valueOf(2), Integer.valueOf(Math.abs(value)) }); + } + + public static void registerTorch(ItemStack s, int value) { + registered.put(s.getItem(), new Integer[] { Integer.valueOf(2), Integer.valueOf(Math.abs(value)) }); + } + + public static boolean isCoal(Item i) { + if (!registered.containsKey(i)) + return false; + return ((Integer[]) registered.get(i))[0].intValue() == 0; + } + + public static boolean isRegistered(Item i) { + return registered.containsKey(i); + } + + public static boolean isStick(Item i) { + if (!registered.containsKey(i)) + return false; + return ((Integer[]) registered.get(i))[0].intValue() == 1; + } + + public static boolean isTorch(Item i) { + if (!registered.containsKey(i)) + return false; + return ((Integer[]) registered.get(i))[0].intValue() == 2; + } + + public static int getCoalValue(Item i) { + if (!isCoal(i)) + return 0; + return ((Integer[]) registered.get(i))[1].intValue(); + } + + public static int getStickValue(Item i) { + if (!isStick(i)) + return 0; + return ((Integer[]) registered.get(i))[1].intValue(); + } + + public static int getTorchValue(Item i) { + if (!isTorch(i)) + return 0; + return ((Integer[]) registered.get(i))[1].intValue(); + } +} \ No newline at end of file diff --git a/src/main/java/com/bernard/torch/init/CommonProxy.java b/src/main/java/com/bernard/torch/init/CommonProxy.java index 09ddf56..4e190ac 100644 --- a/src/main/java/com/bernard/torch/init/CommonProxy.java +++ b/src/main/java/com/bernard/torch/init/CommonProxy.java @@ -1,8 +1,6 @@ package com.bernard.torch.init; -public class CommonProxy -{ - public void registerRenders() {} +public class CommonProxy { + public void registerRenders() { + } } - - diff --git a/src/main/java/com/bernard/torch/init/TorchBlocks.java b/src/main/java/com/bernard/torch/init/TorchBlocks.java index 299bc9f..9925de3 100644 --- a/src/main/java/com/bernard/torch/init/TorchBlocks.java +++ b/src/main/java/com/bernard/torch/init/TorchBlocks.java @@ -1,22 +1,71 @@ -/* */ package com.bernard.torch.init; -/* */ -/* */ import com.bernard.torch.blocks.TorchRechargerBlock; -/* */ import com.bernard.torch.blocks.itemblocs.TorchRechargerItemBlock; -/* */ import com.bernard.torch.blocks.tileentities.TorchRechargerTileEntity; -/* */ import cpw.mods.fml.common.registry.GameRegistry; -/* */ import net.minecraft.block.Block; -/* */ -/* */ -/* */ public class TorchBlocks -/* */ { -/* */ public static Block torchRecharger; -/* */ -/* */ public static void init() -/* */ { -/* 16 */ torchRecharger = new TorchRechargerBlock().setUnlocalizedName("torch_recharger"); -/* 17 */ GameRegistry.registerBlock(torchRecharger, TorchRechargerItemBlock.class, "torch_recharger"); -/* 18 */ GameRegistry.registerTileEntity(TorchRechargerTileEntity.class, "torch_mod:torch_recharger_te"); -/* */ } -/* */ } +package com.bernard.torch.init; +import com.bernard.torch.IVariant; +import com.bernard.torch.TorchMod; +import com.bernard.torch.blocks.TorchRechargerBlock; +import com.bernard.torch.blocks.itemblocs.TorchRechargerItemBlock; +import com.bernard.torch.blocks.tileentities.TorchRechargerTileEntity; +import com.bernard.torch.init.TorchItems.ModelHandler; +import com.bernard.torch.items.TorchAmulet; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockSapling; +import net.minecraft.client.renderer.ItemMeshDefinition; +import net.minecraft.client.renderer.block.model.ModelBakery; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.client.renderer.block.statemap.BlockStateMapper; +import net.minecraft.client.renderer.block.statemap.StateMap; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.event.ModelRegistryEvent; +import net.minecraftforge.client.model.BlockStateLoader; +import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.client.model.ModelLoaderRegistry; +import net.minecraftforge.event.RegistryEvent.Register; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.registry.GameRegistry; +import net.minecraftforge.fml.relauncher.Side; + +@Mod.EventBusSubscriber(modid = TorchMod.MODID) +public class TorchBlocks { + public static TorchRechargerBlock torchRecharger; + private static BlockStateMapper bsMapper = new BlockStateMapper(); + + public static void init() { + torchRecharger = new TorchRechargerBlock("torch_recharger"); + torchRecharger.setCreativeTab(CreativeTabs.DECORATIONS); + //GameRegistry.registerTileEntity(TorchRechargerTileEntity.class,torchRecharger.getRegistryName().toString()); + } + + @SubscribeEvent + public static void registerBlocks(Register register) { + register.getRegistry().registerAll(torchRecharger); + } + + @SubscribeEvent + public static void registerItemBlocks(Register register) { + register.getRegistry().registerAll(new TorchRechargerItemBlock(torchRecharger)); + } + + @SubscribeEvent + public static void modelRendererRegister(ModelRegistryEvent register) { + ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(torchRecharger), 0, new ModelResourceLocation(torchRecharger.getRegistryName(), "inventory")); +// ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(torchRecharger), 1, new ModelResourceLocation(torchRecharger.getRegistryName()+".coal", "inventory")); +// rendererRegister(Item.getItemFromBlock(torchRecharger),0); +// rendererRegister(Item.getItemFromBlock(torchRecharger),1); + } + + public static void rendererRegister(Item i,int metadata) { + bsMapper.registerBlockStateMapper(torchRecharger, (new StateMap.Builder()).withName(torchRecharger.level).withSuffix("_torch_recharger").build()); + ModelLoader.setCustomModelResourceLocation(i, metadata, new ModelResourceLocation(i.getRegistryName(), "inventory")); + } + + + +} diff --git a/src/main/java/com/bernard/torch/init/TorchItems.java b/src/main/java/com/bernard/torch/init/TorchItems.java index aa1e444..ec04ee6 100644 --- a/src/main/java/com/bernard/torch/init/TorchItems.java +++ b/src/main/java/com/bernard/torch/init/TorchItems.java @@ -1,21 +1,119 @@ -/* */ package com.bernard.torch.init; -/* */ -/* */ import com.bernard.torch.items.TorchAmulet; -/* */ import cpw.mods.fml.common.registry.GameRegistry; -/* */ import net.minecraft.creativetab.CreativeTabs; -/* */ import net.minecraft.item.Item; -/* */ -/* */ -/* */ -/* */ public class TorchItems -/* */ { -/* */ public static Item torchAmulet; -/* */ -/* */ public static void init() -/* */ { -/* 16 */ torchAmulet = new TorchAmulet().setUnlocalizedName("torch_amulet").setTextureName("torch_mod:torch_amulet").setCreativeTab(CreativeTabs.tabTools); -/* 17 */ GameRegistry.registerItem(torchAmulet, "torch_amulet"); -/* */ } -/* */ } + package com.bernard.torch.init; + + import com.bernard.torch.IVariant; +import com.bernard.torch.TorchMod; +import com.bernard.torch.items.TorchAmulet; +import net.minecraft.client.renderer.ItemMeshDefinition; +import net.minecraft.client.renderer.block.model.ModelBakery; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.event.ModelRegistryEvent; +import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.event.RegistryEvent.Register; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.relauncher.Side; + + +@Mod.EventBusSubscriber(modid = TorchMod.MODID) + public class TorchItems + { + public static TorchAmulet torchAmulet; + + public static void init() + { + torchAmulet = new TorchAmulet("torch_amulet"); + torchAmulet.setCreativeTab(CreativeTabs.TOOLS); + } + @SubscribeEvent + public static void registerItems(Register register) { + register.getRegistry().registerAll(torchAmulet); + } + @SubscribeEvent + public static void registerRenders(ModelRegistryEvent register) { + registerRender(torchAmulet); + } + + public static void registerRender(Item item) { + //ModelLoader.setCustomModelResourceLocation(item, 0,new ModelResourceLocation(item.getRegistryName(), "inventory")); + } + + @Mod.EventBusSubscriber(Side.CLIENT) + public static class ModelHandler { + + private static final ModelHandler INSTANCE = new ModelHandler(); + + /* + * Enregistre les modèles des items + * @Param event L'évènement + */ + @SubscribeEvent + public static void registerItemModels(final ModelRegistryEvent event) { + + INSTANCE.registerVariantItemModels(torchAmulet, torchAmulet.getRegistryName().toString(),torchAmulet.getValues()); + /* For non-variant models + final ModelResourceLocation fullModelLocation = new ModelResourceLocation(item.getRegistryName().toString, "inventory"); + INSTANCE.registerItemModel(item, fullModelLocation); + */ + } + + /* + * Enregistre le modèle d'un item + * Etape 2 : Permet de récupérer la meshDefinition de l'item + * @Param item L'item + * @Param modelLocation la localisation complète de l'item + */ + private void registerItemModel(final Item item, final ModelResourceLocation fullModelLocation) { + + ModelBakery.registerItemVariants(item, fullModelLocation); + registerItemModel(item, new ItemMeshDefinition() { + + @Override + public ModelResourceLocation getModelLocation(ItemStack stack) { + return fullModelLocation; + } + }); + } + + /* + * Enregistre le modèle d'un item + * @Param item L'item + * @Param meshDefinition la meshDefinition de l'item + */ + private void registerItemModel(final Item item, final ItemMeshDefinition meshDefinition) { + + ModelLoader.setCustomMeshDefinition(item, meshDefinition); + } + + /* + * Enregistre les modèles d'un item avec variantes + * @Param item L'item + * @Param modelLocation le nom de l'item dans le registre + * @Param values les variantes de l'item + */ + private void registerVariantItemModels(final Item item, final String modelLocation, final T[] values) { + + for (final T value : values) { + registerItemModelForMeta(item, value.getMeta(), modelLocation + "=" + value.getName()); + } + } + + /* + * Rengistre la variante d'un item + * @Param item L'item + * @Param metadata la meta de la variante + * @Param variantLocation la localisation de la variante + */ + private void registerItemModelForMeta(final Item item, final int metadata, final String variantLocation) { + + ModelResourceLocation location = new ModelResourceLocation(item.getRegistryName(), variantLocation); + ModelLoader.setCustomModelResourceLocation(item, metadata, location); + } + } + + + } \ No newline at end of file diff --git a/src/main/java/com/bernard/torch/items/EnumTorchAmulet.java b/src/main/java/com/bernard/torch/items/EnumTorchAmulet.java new file mode 100644 index 0000000..23d6e70 --- /dev/null +++ b/src/main/java/com/bernard/torch/items/EnumTorchAmulet.java @@ -0,0 +1,81 @@ +package com.bernard.torch.items; + +import com.bernard.torch.IVariant; + +public enum EnumTorchAmulet implements IVariant.IEnumVariant { + + //{ 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144 } + BASE(0,"base",1024), + COAL(1,"coal",2048), + ; + + private static final EnumTorchAmulet[] META_LOOKUP = new EnumTorchAmulet[values().length]; + private final int meta; + private final String name; + private final int maxLux; + + /* + * Crée une nouvelle variante + * + * @Param metaIn la meta de la variante + * + * @Param nameIn le nom + * + * @Param chatColorIn la couleur du texte + */ + private EnumTorchAmulet(int metaIn, String nameIn,int maxLux) { + + this.meta = metaIn; + this.name = nameIn; + this.maxLux = maxLux; + } + + /* + * Retourne la meta de la variante + * + * @return meta + */ + @Override + public int getMeta() { + + return meta; + } + + /* + * Retourne le nom de la variante + * + * @return name + */ + @Override + public String getName() { + + return name; + } + + + + public int getMaxLux() { + return maxLux; + } + + /* + * Retourne la variante (l'unlocalized name) correspondant à la meta + * + * @Param la meta à chercher + * + * @return A, B ou C en fonction de la meta + */ + public static EnumTorchAmulet byMetadata(int meta) { + if (meta < 0 || meta >= META_LOOKUP.length) { + meta = 0; + } + + return META_LOOKUP[meta]; + } + + static { + for (EnumTorchAmulet enumType : values()) { + META_LOOKUP[enumType.getMeta()] = enumType; + } + } +} diff --git a/src/main/java/com/bernard/torch/items/TorchAmulet.java b/src/main/java/com/bernard/torch/items/TorchAmulet.java index 08e3054..976d1ca 100644 --- a/src/main/java/com/bernard/torch/items/TorchAmulet.java +++ b/src/main/java/com/bernard/torch/items/TorchAmulet.java @@ -1,13 +1,15 @@ package com.bernard.torch.items; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import com.bernard.torch.IVariant.IItemVariant; +import com.bernard.torch.api.ITorchRechargable; + import baubles.api.BaubleType; import baubles.api.IBauble; -import com.bernard.torch.api.ITorchRechargable; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import java.util.List; -import net.minecraft.block.Block; -import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -15,188 +17,179 @@ import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.IIcon; +import net.minecraft.util.NonNullList; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +public class TorchAmulet extends Item implements IBauble, ITorchRechargable, IItemVariant { + public static int yRelative = 0; + public static final int size = 4; + public static final int ecart = 5; + public static final int maxYRelative = 5; + public static final int minYRelative = -5; + + public static String[] names = { "torch_amulet", "coal_torch_amulet", "iron_torch_amulet", "quartz_torch_amulet", + "gold_torch_amulet", "redstone_torch_amulet", "lapis_torch_amulet", "diamond_torch_amulet", + "emerald_torch_amulet" }; + public TorchAmulet(final String name) { + setUnlocalizedName(name); + setRegistryName(name); + setMaxStackSize(1); + setHasSubtypes(true); + } -public class TorchAmulet - extends Item - implements IBauble, ITorchRechargable -{ - public static int yRelative = 0; - - public static final int size = 4; - public static final int ecart = 5; - public static final int maxYRelative = 5; - public static final int minYRelative = -5; - public static final int[] maxTorchesFromMeta = { 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144 }; - - public static String[] names = { "torch_amulet", "coal_torch_amulet", "iron_torch_amulet", "quartz_torch_amulet", "gold_torch_amulet", "redstone_torch_amulet", "lapis_torch_amulet", "diamond_torch_amulet", "emerald_torch_amulet" }; - + /* + * Retourne l'unlocalized name correspondant à la variante + * + * @Param stack l'ItemStack + * + * @Return la variante correspondant à stack + * + * @see net.minecraft.item.Item#getUnlocalizedName(net.minecraft.item.ItemStack) + */ + @Override + public String getUnlocalizedName(ItemStack stack) { + return super.getUnlocalizedName() + "." + getTorchAmuletData(stack).getName(); + } + + public EnumTorchAmulet getTorchAmuletData(ItemStack stack) { + int i = stack.getMetadata(); + if(i >= getMetaCount())i=0; + return EnumTorchAmulet.byMetadata(i); + } - public static IIcon[] textures = new IIcon[names.length]; - - public TorchAmulet() { - setMaxStackSize(1); - setHasSubtypes(true); - } - - public void addInformation(ItemStack itemstack, EntityPlayer player, List l, boolean flag) - { - super.addInformation(itemstack, player, l, flag); - if ((itemstack.stackTagCompound == null) || (!itemstack.stackTagCompound.hasKey("TorchesLeft", 3))) { - itemstack.stackTagCompound = new NBTTagCompound(); - int meta = itemstack.getMetadata(); - if (meta >= maxTorchesFromMeta.length) - meta = 0; - itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]); - } - l.add("Torches left :" + itemstack.stackTagCompound.getInteger("TorchesLeft")); - } - + /* + * Permet de récupérer les items des variantes + * + * @Param tab (CreativeTabs) + * + * @Param subItems les variantes + * + * @see + * net.minecraft.item.Item#getSubItems(net.minecraft.creativetab.CreativeTabs, + * net.minecraft.util.NonNullList) + */ + @SideOnly(Side.CLIENT) + @Override + public void getSubItems(final CreativeTabs tab, final NonNullList subItems) { + if(tab != CreativeTabs.TOOLS)return; + final List items = Stream.of(EnumTorchAmulet.values()) + .map(enumType -> new ItemStack(this, 1, enumType.getMeta())) // Pour chaque variante, on crée un + // itemstack en fonction de sa meta + .collect(Collectors.toList()); // Et on les mets dans une liste - public int getMetadata(int meta) - { - return meta; - } - - public String getUnlocalizedName(ItemStack stack) - { - int meta = stack.getMetadata(); - if ((meta < 0) || (meta >= names.length)) - meta = 0; - return names[meta]; - } - - public void registerIcons(IIconRegister iconregister) { - for (int i = 0; i < names.length; i++) - { - textures[i] = iconregister.registerIcon("torch_mod:" + names[i]); - } - } - - @SideOnly(Side.CLIENT) - public void getSubItems(Item i, CreativeTabs creativeTabs, List list) - { - for (int metadata = 0; metadata < names.length; metadata++) - { - list.add(new ItemStack(i, 1, metadata)); - } - } - - public IIcon getIconFromDamage(int meta) - { - if ((meta < 0) || (meta >= names.length)) - meta = 0; - return textures[meta]; - } - - public void onCreated(ItemStack itemstack, World w, EntityPlayer pl) - { - super.onCreated(itemstack, w, pl); - if ((itemstack.stackTagCompound == null) || - (!itemstack.stackTagCompound.hasKey("TorchesLeft", 3))) { - itemstack.stackTagCompound = new NBTTagCompound(); - int meta = itemstack.getMetadata(); - if (meta >= maxTorchesFromMeta.length) - meta = 0; - itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]); - } - } - + subItems.addAll(items); + } - public BaubleType getBaubleType(ItemStack itemstack) - { - return BaubleType.AMULET; - } - - public void onWornTick(ItemStack itemstack, EntityLivingBase player) - { - if ((itemstack.stackTagCompound == null) || - (!itemstack.stackTagCompound.hasKey("TorchesLeft", 3))) { - itemstack.stackTagCompound = new NBTTagCompound(); - int meta = itemstack.getMetadata(); - if (meta >= maxTorchesFromMeta.length) - meta = 0; - itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]); - } - if (itemstack.stackTagCompound.getInteger("TorchesLeft") > 0) { - int modX = (int)player.posX - (int)player.posX % 5; - int modZ = (int)player.posZ - (int)player.posZ % 5; - int y = (int)player.posY; - for (int x = -20; x <= 20; x += 5) { - for (int z = -20; z <= 20; z += 5) { - if (placeTorch(player.worldObj, modX + x, y + yRelative, modZ + z)) { - itemstack.stackTagCompound.setInteger("TorchesLeft", itemstack.stackTagCompound.getInteger("TorchesLeft") - 1); - } - } - } - yRelative = yRelative == 4 ? -5 : yRelative + 1; - } - } - - public boolean placeTorch(World w, int x, int y, int z) { - if ((Blocks.torch.canPlaceBlockAt(w, x, y, z)) && (w.isAirBlock(x, y, z))) { - w.setBlock(x, y, z, Blocks.torch); - return true; - } - return false; - } - - public void onEquipped(ItemStack itemstack, EntityLivingBase player) - { - if ((itemstack.stackTagCompound == null) || - (!itemstack.stackTagCompound.hasKey("TorchesLeft", 3))) { - itemstack.stackTagCompound = new NBTTagCompound(); - int meta = itemstack.getMetadata(); - if (meta >= maxTorchesFromMeta.length) - meta = 0; - itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]); - } - } - + @Override + public EnumTorchAmulet[] getValues() { + return EnumTorchAmulet.values(); + } - public void onUnequipped(ItemStack itemstack, EntityLivingBase player) {} - + public int getMetaCount() { - public boolean canEquip(ItemStack itemstack, EntityLivingBase player) - { - return true; - } - - public boolean canUnequip(ItemStack itemstack, EntityLivingBase player) - { - return true; - } - - public void recharge(ItemStack itemstack, int lux) - { - int meta = itemstack.getMetadata(); - if ((itemstack.stackTagCompound == null) || - (!itemstack.stackTagCompound.hasKey("TorchesLeft", 3))) { - itemstack.stackTagCompound = new NBTTagCompound(); - if (meta >= maxTorchesFromMeta.length) - meta = 0; - itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]); - } - itemstack.stackTagCompound.setInteger("TorchesLeft", Math.min(itemstack.stackTagCompound.getInteger("TorchesLeft") + lux, maxTorchesFromMeta[meta])); - } - - public int getLuxNedded(ItemStack itemstack) - { - int meta = itemstack.getMetadata(); - if ((itemstack.stackTagCompound == null) || - (!itemstack.stackTagCompound.hasKey("TorchesLeft", 3))) { - itemstack.stackTagCompound = new NBTTagCompound(); - if (meta >= maxTorchesFromMeta.length) - meta = 0; - itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]); - } - return maxTorchesFromMeta[meta] - itemstack.stackTagCompound.getInteger("TorchesLeft"); - } + return EnumTorchAmulet.values().length; + } + + @Override + public void addInformation(ItemStack itemstack, World worldIn, List l, ITooltipFlag flagIn) { + super.addInformation(itemstack, worldIn, l, flagIn); + if ((itemstack.getTagCompound() == null) || (!itemstack.getTagCompound().hasKey("TorchesLeft", 3))) { + + itemstack.setTagCompound(new NBTTagCompound()); + itemstack.getTagCompound().setInteger("TorchesLeft", getTorchAmuletData(itemstack).getMaxLux()); + } + l.add("Torches left :" + itemstack.getTagCompound().getInteger("TorchesLeft")); + } + + public int getMetadata(int meta) { + return meta; + } + + public void onCreated(ItemStack itemstack, World w, EntityPlayer pl) { + super.onCreated(itemstack, w, pl); + if ((itemstack.getTagCompound() == null) || (!itemstack.getTagCompound().hasKey("TorchesLeft", 3))) { + itemstack.setTagCompound(new NBTTagCompound()); + int meta = itemstack.getMetadata(); + itemstack.getTagCompound().setInteger("TorchesLeft", getTorchAmuletData(itemstack).getMaxLux()); + } + } + + public BaubleType getBaubleType(ItemStack itemstack) { + return BaubleType.AMULET; + } + + public void onWornTick(ItemStack itemstack, EntityLivingBase player) { + if ((itemstack.getTagCompound() == null) || (!itemstack.getTagCompound().hasKey("TorchesLeft", 3))) { + itemstack.setTagCompound(new NBTTagCompound()); + int meta = itemstack.getMetadata(); + itemstack.getTagCompound().setInteger("TorchesLeft", getTorchAmuletData(itemstack).getMaxLux()); + } + if (itemstack.getTagCompound().getInteger("TorchesLeft") > 0) { + int modX = (int) player.posX - (int) player.posX % 5; + int modZ = (int) player.posZ - (int) player.posZ % 5; + int y = (int) player.posY; + for (int x = -20; x <= 20; x += 5) { + for (int z = -20; z <= 20; z += 5) { + if (placeTorch(player.world, new BlockPos(modX + x, y + yRelative, modZ + z))) {// TODO add random + // faketorch placing + itemstack.getTagCompound().setInteger("TorchesLeft", + itemstack.getTagCompound().getInteger("TorchesLeft") - 1); + } + } + } + yRelative = yRelative == 4 ? -5 : yRelative + 1; + } + } + + public boolean placeTorch(World w, BlockPos pos) { + if ((Blocks.TORCH.canPlaceBlockAt(w, pos)) && (w.getBlockState(pos).getBlock() == Blocks.AIR)) { + w.setBlockState(pos, Blocks.TORCH.getDefaultState());//XXX Check condition + return true; + } + return false; + } + + public void onEquipped(ItemStack itemstack, EntityLivingBase player) { + if ((itemstack.getTagCompound() == null) || (!itemstack.getTagCompound().hasKey("TorchesLeft", 3))) { + itemstack.setTagCompound(new NBTTagCompound()); + int meta = itemstack.getMetadata(); + itemstack.getTagCompound().setInteger("TorchesLeft", getTorchAmuletData(itemstack).getMaxLux()); + } + } + + public void onUnequipped(ItemStack itemstack, EntityLivingBase player) { + } + + public boolean canEquip(ItemStack itemstack, EntityLivingBase player) { + return true; + } + + public boolean canUnequip(ItemStack itemstack, EntityLivingBase player) { + return true; + } + + public void recharge(ItemStack itemstack, int lux) { + int meta = itemstack.getMetadata(); + if ((itemstack.getTagCompound() == null) || (!itemstack.getTagCompound().hasKey("TorchesLeft", 3))) { + itemstack.setTagCompound(new NBTTagCompound()); + itemstack.getTagCompound().setInteger("TorchesLeft", getTorchAmuletData(itemstack).getMaxLux()); + } + itemstack.getTagCompound().setInteger("TorchesLeft", + Math.min(itemstack.getTagCompound().getInteger("TorchesLeft") + lux, getTorchAmuletData(itemstack).getMaxLux())); + } + + public int getLuxNedded(ItemStack itemstack) { + int meta = itemstack.getMetadata(); + if ((itemstack.getTagCompound() == null) || (!itemstack.getTagCompound().hasKey("TorchesLeft", 3))) { + itemstack.setTagCompound(new NBTTagCompound()); + itemstack.getTagCompound().setInteger("TorchesLeft", getTorchAmuletData(itemstack).getMaxLux()); + } + return getTorchAmuletData(itemstack).getMaxLux() - itemstack.getTagCompound().getInteger("TorchesLeft"); + } } - - diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index ed34007..e3d6c08 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -4,10 +4,10 @@ "name": "Torch mod", "description": "Un utilitaire pour placer des torches", "version": "1.0", - "mcversion": "1.7.10", + "mcversion": "1.12.2", "url": "", "updateUrl": "", - "authorList": ["Samsoule63"], + "authorList": ["Mysaa"], "credits": "Azanor, pour son mod baubles, le ressource pack Faithful, pour une partie des textures de ce mod, UnwrittenFun , pour l'emprunt de la texture de l'amulette