diff --git a/src/main/java/fr/jackcartersmith/orbsat/OSItems.java b/src/main/java/fr/jackcartersmith/orbsat/OSItems.java index af99dc8..c390884 100644 --- a/src/main/java/fr/jackcartersmith/orbsat/OSItems.java +++ b/src/main/java/fr/jackcartersmith/orbsat/OSItems.java @@ -1,16 +1,15 @@ package fr.jackcartersmith.orbsat; -import fr.jackcartersmith.orbsat.item.DesignatorCircuitItem; -import fr.jackcartersmith.orbsat.item.LaserDesignatorItem; -import net.minecraft.item.Item; +import fr.jackcartersmith.orbsat.item.ItemOSBase; public class OSItems { - - public static Item laserDesignator; - public static Item designatorCircuit; + public static ItemOSBase componentsItem; + public static ItemOSBase satelliteItem; public static void init(){ - laserDesignator = new LaserDesignatorItem("laserDesignator"); - designatorCircuit = new DesignatorCircuitItem("designatorCircuit"); + componentsItem = new ItemOSBase("components",1, + "laserDesignator","designatorCircuit"); + satelliteItem = new ItemOSBase("satellites",1, + "classic_mki","classic_mkii","classic_mkiii"); } } diff --git a/src/main/java/fr/jackcartersmith/orbsat/OrbitalSatellite.java b/src/main/java/fr/jackcartersmith/orbsat/OrbitalSatellite.java index e6df3ea..6e3c175 100644 --- a/src/main/java/fr/jackcartersmith/orbsat/OrbitalSatellite.java +++ b/src/main/java/fr/jackcartersmith/orbsat/OrbitalSatellite.java @@ -18,7 +18,7 @@ import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.common.registry.IForgeRegistryEntry; -@Mod(modid=OSRefs.MODID, name=OSRefs.NAME, version=OSRefs.VERSION, dependencies = "required-after:Forge@[12.18.3.2185,)", useMetadata = true) +@Mod(modid=OSRefs.MODID, name=OSRefs.NAME, version=OSRefs.VERSION, dependencies = "required-after:Forge@[12.18.3.2185,)") public class OrbitalSatellite { @Mod.Instance(OSRefs.MODID) @@ -112,7 +112,7 @@ public class OrbitalSatellite { @Override public ItemStack getIconItemStack() { - return new ItemStack(OSItems.designatorCircuit,1,0); + return new ItemStack(OSItems.satelliteItem,1,0); } }; } diff --git a/src/main/java/fr/jackcartersmith/orbsat/client/ClientProxy.java b/src/main/java/fr/jackcartersmith/orbsat/client/ClientProxy.java index 7ea3520..2a25805 100644 --- a/src/main/java/fr/jackcartersmith/orbsat/client/ClientProxy.java +++ b/src/main/java/fr/jackcartersmith/orbsat/client/ClientProxy.java @@ -3,6 +3,7 @@ package fr.jackcartersmith.orbsat.client; import fr.jackcartersmith.orbsat.OSRefs; import fr.jackcartersmith.orbsat.common.CommonProxy; import fr.jackcartersmith.orbsat.common.util.OSLogger; +import fr.jackcartersmith.orbsat.item.ItemOSBase; import net.minecraft.client.renderer.ItemMeshDefinition; import net.minecraft.client.renderer.block.model.ModelBakery; import net.minecraft.client.renderer.block.model.ModelResourceLocation; @@ -25,12 +26,29 @@ public class ClientProxy extends CommonProxy{ for(Item item : OSRefs.registeredOSItems) { if(item instanceof Item) - { - OSLogger.debug("[OrbSAT] Register render for "+item.getUnlocalizedName().substring(5)); - final ResourceLocation loc = new ResourceLocation(OSRefs.MODID, item.getUnlocalizedName().substring(5)); - - ModelBakery.registerItemVariants(item, loc); - ModelLoader.setCustomModelResourceLocation(item, 0, new ModelResourceLocation(loc, "inventory")); + { + ItemOSBase ieMetaItem = (ItemOSBase) item; + if(ieMetaItem.registerSubModels && ieMetaItem.getSubNames() != null && ieMetaItem.getSubNames().length > 0) + { + for(int meta = 0; meta < ieMetaItem.getSubNames().length; meta++) + { + ResourceLocation loc = new ResourceLocation("orbsat", ieMetaItem.itemName + "/" + ieMetaItem.getSubNames()[meta]); + ModelBakery.registerItemVariants(ieMetaItem, loc); + ModelLoader.setCustomModelResourceLocation(ieMetaItem, meta, new ModelResourceLocation(loc, "inventory")); + } + } else + { + final ResourceLocation loc = new ResourceLocation("orbsat", ieMetaItem.itemName); + ModelBakery.registerItemVariants(ieMetaItem, loc); + ModelLoader.setCustomMeshDefinition(ieMetaItem, new ItemMeshDefinition() + { + @Override + public ModelResourceLocation getModelLocation(ItemStack stack) + { + return new ModelResourceLocation(loc, "inventory"); + } + }); + } } else { diff --git a/src/main/java/fr/jackcartersmith/orbsat/item/ItemOSBase.java b/src/main/java/fr/jackcartersmith/orbsat/item/ItemOSBase.java new file mode 100644 index 0000000..297cf31 --- /dev/null +++ b/src/main/java/fr/jackcartersmith/orbsat/item/ItemOSBase.java @@ -0,0 +1,93 @@ +package fr.jackcartersmith.orbsat.item; + +import java.util.List; + +import fr.jackcartersmith.orbsat.OSRefs; +import fr.jackcartersmith.orbsat.OrbitalSatellite; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ActionResult; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumHand; +import net.minecraft.util.text.TextComponentString; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +public class ItemOSBase extends Item{ + public String itemName; + protected String[] subNames; + boolean[] isMetaHidden; + public boolean registerSubModels=true; + + public ItemOSBase(String name, int stackSize, String... subNames){ + this.setUnlocalizedName(OSRefs.MODID+"."+name); + this.setHasSubtypes(subNames!=null&&subNames.length>0); + this.setCreativeTab(OrbitalSatellite.creativeTab); + this.setMaxStackSize(stackSize); + this.itemName = name; + this.subNames = subNames!=null&&subNames.length>0?subNames:null; + this.isMetaHidden = new boolean[this.subNames!=null?this.subNames.length:1]; + + OrbitalSatellite.register(this, name); + OSRefs.registeredOSItems.add(this); + } + + public String[] getSubNames() + { + return subNames; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list) + { + if(getSubNames()!=null) + { + for(int i=0;i=0 && i=0 && i