Successfully added basic item class

This commit is contained in:
JackCarterSmith 2017-06-17 15:20:12 +02:00
parent f88a332dce
commit 22a32fb1d3
15 changed files with 155 additions and 37 deletions

View File

@ -1,16 +1,15 @@
package fr.jackcartersmith.orbsat; package fr.jackcartersmith.orbsat;
import fr.jackcartersmith.orbsat.item.DesignatorCircuitItem; import fr.jackcartersmith.orbsat.item.ItemOSBase;
import fr.jackcartersmith.orbsat.item.LaserDesignatorItem;
import net.minecraft.item.Item;
public class OSItems { public class OSItems {
public static ItemOSBase componentsItem;
public static Item laserDesignator; public static ItemOSBase satelliteItem;
public static Item designatorCircuit;
public static void init(){ public static void init(){
laserDesignator = new LaserDesignatorItem("laserDesignator"); componentsItem = new ItemOSBase("components",1,
designatorCircuit = new DesignatorCircuitItem("designatorCircuit"); "laserDesignator","designatorCircuit");
satelliteItem = new ItemOSBase("satellites",1,
"classic_mki","classic_mkii","classic_mkiii");
} }
} }

View File

@ -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.GameRegistry;
import net.minecraftforge.fml.common.registry.IForgeRegistryEntry; 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 { public class OrbitalSatellite {
@Mod.Instance(OSRefs.MODID) @Mod.Instance(OSRefs.MODID)
@ -112,7 +112,7 @@ public class OrbitalSatellite {
@Override @Override
public ItemStack getIconItemStack() public ItemStack getIconItemStack()
{ {
return new ItemStack(OSItems.designatorCircuit,1,0); return new ItemStack(OSItems.satelliteItem,1,0);
} }
}; };
} }

View File

@ -3,6 +3,7 @@ package fr.jackcartersmith.orbsat.client;
import fr.jackcartersmith.orbsat.OSRefs; import fr.jackcartersmith.orbsat.OSRefs;
import fr.jackcartersmith.orbsat.common.CommonProxy; import fr.jackcartersmith.orbsat.common.CommonProxy;
import fr.jackcartersmith.orbsat.common.util.OSLogger; import fr.jackcartersmith.orbsat.common.util.OSLogger;
import fr.jackcartersmith.orbsat.item.ItemOSBase;
import net.minecraft.client.renderer.ItemMeshDefinition; import net.minecraft.client.renderer.ItemMeshDefinition;
import net.minecraft.client.renderer.block.model.ModelBakery; import net.minecraft.client.renderer.block.model.ModelBakery;
import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.block.model.ModelResourceLocation;
@ -25,12 +26,29 @@ public class ClientProxy extends CommonProxy{
for(Item item : OSRefs.registeredOSItems) for(Item item : OSRefs.registeredOSItems)
{ {
if(item instanceof Item) if(item instanceof Item)
{ {
OSLogger.debug("[OrbSAT] Register render for "+item.getUnlocalizedName().substring(5)); ItemOSBase ieMetaItem = (ItemOSBase) item;
final ResourceLocation loc = new ResourceLocation(OSRefs.MODID, item.getUnlocalizedName().substring(5)); if(ieMetaItem.registerSubModels && ieMetaItem.getSubNames() != null && ieMetaItem.getSubNames().length > 0)
{
ModelBakery.registerItemVariants(item, loc); for(int meta = 0; meta < ieMetaItem.getSubNames().length; meta++)
ModelLoader.setCustomModelResourceLocation(item, 0, new ModelResourceLocation(loc, "inventory")); {
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 else
{ {

View File

@ -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<getSubNames().length;i++)
if(!isMetaHidden(i))
list.add(new ItemStack(this,1,i));
}
else
list.add(new ItemStack(this));
}
@Override
public String getUnlocalizedName(ItemStack stack)
{
if(getSubNames()!=null)
{
String subName = stack.getItemDamage()<getSubNames().length?getSubNames()[stack.getItemDamage()]:"";
return this.getUnlocalizedName()+"."+subName;
}
return this.getUnlocalizedName();
}
public ItemOSBase setMetaHidden(int... meta)
{
for(int i : meta)
if(i>=0 && i<this.isMetaHidden.length)
this.isMetaHidden[i] = true;
return this;
}
public ItemOSBase setMetaUnhidden(int... meta)
{
for(int i : meta)
if(i>=0 && i<this.isMetaHidden.length)
this.isMetaHidden[i] = false;
return this;
}
public boolean isMetaHidden(int meta)
{
return this.isMetaHidden[Math.max(0, Math.min(meta, this.isMetaHidden.length-1))];
}
public ItemOSBase setRegisterSubModels(boolean register)
{
this.registerSubModels = register;
return this;
}
}

View File

@ -1,16 +0,0 @@
package fr.jackcartersmith.orbsat.item;
import fr.jackcartersmith.orbsat.OSRefs;
import fr.jackcartersmith.orbsat.OrbitalSatellite;
import net.minecraft.item.Item;
public class SatelliteItem extends Item{
public SatelliteItem(String unlocalizedName){
this.setUnlocalizedName(unlocalizedName);
this.setCreativeTab(OrbitalSatellite.creativeTab);
this.setHasSubtypes(true);
this.setMaxStackSize(1);
OrbitalSatellite.register(this, unlocalizedName);
OSRefs.registeredOSItems.add(this);
}
}

View File

@ -1,5 +1,8 @@
#CreativeTabs #CreativeTabs
itemGroup.orbsat=Orbital Satellite itemGroup.orbsat=Orbital Satellite
#Items #Items
item.laserDesignator.name=Targeting Satellite Computer item.orbsat.components.laserDesignator.name=Targeting Satellite Computer
item.designatorCircuit.name=Targeting Computer Circuit item.orbsat.components.designatorCircuit.name=Targeting Computer Circuit
item.orbsat.satellites.classic_mki.name=Classic Laser Satellite MK-I
item.orbsat.satellites.classic_mkii.name=Classic Laser Satellite MK-II
item.orbsat.satellites.classic_mkiii.name=Classic Laser Satellite MK-III

View File

@ -1,5 +1,8 @@
#CreativeTabs #CreativeTabs
itemGroup.orbsat=Satellite Orbital itemGroup.orbsat=Satellite Orbital
#Items #Items
item.laserDesignator.name=Ordinateur de visée du satellite item.orbsat.components.laserDesignator.name=Ordinateur de visée du satellite
item.designatorCircuit.name=Circuit pour ordinateur de visée item.orbsat.components.designatorCircuit.name=Circuit pour ordinateur de visée
item.orbsat.satellites.classic_mki.name=Satellite classique de frappe laser MK-I
item.orbsat.satellites.classic_mkii.name=Satellite classique de frappe laser MK-II
item.orbsat.satellites.classic_mkiii.name=Satellite classique de frappe laser MK-III

View File

@ -1,5 +1,5 @@
{ {
"parent": "item/generated", "parent": "orbsat:item/flat",
"textures": { "textures": {
"layer0": "orbsat:items/laserDesignator" "layer0": "orbsat:items/laserDesignator"
} }

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "orbsat:items/classicSatellite_mki"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "orbsat:item/flat",
"textures": {
"layer0": "orbsat:items/classicSatellite_mkii"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "orbsat:item/flat",
"textures": {
"layer0": "orbsat:items/classicSatellite_mkiii"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 B