diff options
Diffstat (limited to 'src')
4 files changed, 134 insertions, 11 deletions
diff --git a/src/Java/gtPlusPlus/xmod/sc2/HANDLER_SC2.java b/src/Java/gtPlusPlus/xmod/sc2/HANDLER_SC2.java index d94fb7b7f8..05e87a5990 100644 --- a/src/Java/gtPlusPlus/xmod/sc2/HANDLER_SC2.java +++ b/src/Java/gtPlusPlus/xmod/sc2/HANDLER_SC2.java @@ -1,13 +1,37 @@ package gtPlusPlus.xmod.sc2; +import java.util.HashMap; + +import cpw.mods.fml.common.registry.GameRegistry; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + import gtPlusPlus.core.lib.LoadedMods; +import gtPlusPlus.xmod.sc2.items.ItemCartModuleEx; +import vswe.stevescarts.Items.ItemCartModule; +import vswe.stevescarts.ModuleData.ModuleData; import vswe.stevescarts.ModuleData.ModuleDataLoader; public class HANDLER_SC2 { - public static void preInit(){ - if (LoadedMods.StevesCarts){ + public static ItemCartModule modules; + public static HashMap<Byte, Boolean> validModules; + + public synchronized static void preInit(){ + if (LoadedMods.StevesCarts){ + modules = new ItemCartModuleEx(); + GameRegistry.registerItem((Item) modules, "CartModule++"); ModuleDataLoader.load(); + for (final ModuleData module : ModuleDataLoader.getList().values()) { + if (!module.getIsLocked()) { + validModules.put(module.getID(), true); + } + } + for (final ModuleData module : ModuleDataLoader.getList().values()) { + final ItemStack submodule = new ItemStack((Item) modules, 1, (int) module.getID()); + GameRegistry.registerCustomItemStack(submodule.getUnlocalizedName(), submodule); + } } } diff --git a/src/Java/gtPlusPlus/xmod/sc2/items/ItemCartModuleEx.java b/src/Java/gtPlusPlus/xmod/sc2/items/ItemCartModuleEx.java new file mode 100644 index 0000000000..8ffb3988c8 --- /dev/null +++ b/src/Java/gtPlusPlus/xmod/sc2/items/ItemCartModuleEx.java @@ -0,0 +1,100 @@ +package gtPlusPlus.xmod.sc2.items; + +import vswe.stevescarts.Modules.ModuleBase; +import net.minecraft.nbt.NBTTagCompound; +import vswe.stevescarts.TileEntities.TileEntityCartAssembler; +import net.minecraft.entity.player.EntityPlayer; +import java.util.List; +import java.util.Iterator; +import net.minecraft.client.renderer.texture.IIconRegister; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import vswe.stevescarts.ModuleData.ModuleData; +import vswe.stevescarts.ModuleData.ModuleDataLoader; + +import net.minecraft.item.ItemStack; +import net.minecraft.creativetab.CreativeTabs; +import vswe.stevescarts.StevesCarts; +import vswe.stevescarts.Items.ItemCartModule; + +import net.minecraft.util.IIcon; +import net.minecraft.item.Item; + +public class ItemCartModuleEx extends ItemCartModule { + IIcon unknownIcon; + + public ItemCartModuleEx() { + + } + + public String getName(final ItemStack par1ItemStack) { + final ModuleData data = this.getModuleData(par1ItemStack, true); + if (data == null) { + return "Unknown SC2 module"; + } + return data.getName(); + } + + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(final int dmg) { + final ModuleData data = ModuleData.getList().get((byte) dmg); + if (data != null) { + return data.getIcon(); + } + return this.unknownIcon; + } + + @SideOnly(Side.CLIENT) + public void registerIcons(final IIconRegister register) { + for (final ModuleData module : ModuleData.getList().values()) { + module.createIcon(register); + } + final StringBuilder sb = new StringBuilder(); + StevesCarts.instance.getClass(); + this.unknownIcon = register + .registerIcon(sb.append("stevescarts").append(":").append("unknown_icon").toString()); + } + + public String getUnlocalizedName() { + return "item.SC2:unknownmodule"; + } + + public String getUnlocalizedName(final ItemStack item) { + final ModuleData data = this.getModuleData(item, true); + if (data != null) { + return "item.SC2:" + data.getRawName(); + } + return this.getUnlocalizedName(); + } + + @SideOnly(Side.CLIENT) + public void getSubItems(final Item item, final CreativeTabs par2CreativeTabs, final List par3List) { + for (final ModuleData module : ModuleDataLoader.getList().values()) { + if (module.getIsValid()) { + par3List.add(module.getItemStack()); + } + } + } + + @SideOnly(Side.CLIENT) + public void addInformation(final ItemStack par1ItemStack, final EntityPlayer par2EntityPlayer, final List par3List, + final boolean par4) { + final ModuleData module = this.getModuleData(par1ItemStack, true); + if (module != null) { + module.addInformation(par3List, par1ItemStack.getTagCompound()); + } else if (par1ItemStack != null && par1ItemStack.getItem() instanceof ItemCartModuleEx) { + par3List.add("Module id " + par1ItemStack.getItemDamage()); + } else { + par3List.add("Unknown module id"); + } + } + + public ModuleData getModuleData(final ItemStack itemstack, final boolean ignoreSize) { + if (itemstack != null && itemstack.getItem() instanceof ItemCartModuleEx + && (ignoreSize || itemstack.stackSize != TileEntityCartAssembler.getRemovedSize())) { + return ModuleData.getList().get((byte) itemstack.getItemDamage()); + } + return null; + } + +}
\ No newline at end of file diff --git a/src/Java/gtPlusPlus/xmod/sc2/modules/workers/tools/ModuleExoticFarmer.java b/src/Java/gtPlusPlus/xmod/sc2/modules/workers/tools/ModuleExoticFarmer.java index 50d544100f..48f8cfa9a7 100644 --- a/src/Java/gtPlusPlus/xmod/sc2/modules/workers/tools/ModuleExoticFarmer.java +++ b/src/Java/gtPlusPlus/xmod/sc2/modules/workers/tools/ModuleExoticFarmer.java @@ -211,8 +211,8 @@ public abstract class ModuleExoticFarmer extends ModuleFarmer { return false; } - public boolean isSeedValid(final ItemStack seed) { - return seed.getItem() == Items.wheat_seeds || seed.getItem() == Items.potato || seed.getItem() == Items.carrot; + public boolean isSeedValid(final ItemStack seed) { + return getBlockFromPams(seed) != null || seed.getItem() == Items.wheat_seeds || seed.getItem() == Items.potato || seed.getItem() == Items.carrot; } public Block getCropFromSeed(final ItemStack seed) { @@ -438,11 +438,4 @@ public abstract class ModuleExoticFarmer extends ModuleFarmer { return block instanceof BlockCrops && m == 7; } - protected boolean isFarming() { - if (this.isPlaceholder()) { - return this.getSimInfo().getIsFarming(); - } - return this.getCart().isEngineBurning() && this.getDw(0) != 0; - } - }
\ No newline at end of file diff --git a/src/Java/vswe/stevescarts/ModuleData/ModuleDataLoader.java b/src/Java/vswe/stevescarts/ModuleData/ModuleDataLoader.java index 21d518f527..88ba6f062b 100644 --- a/src/Java/vswe/stevescarts/ModuleData/ModuleDataLoader.java +++ b/src/Java/vswe/stevescarts/ModuleData/ModuleDataLoader.java @@ -11,6 +11,12 @@ import vswe.stevescarts.Modules.ModuleBase; public class ModuleDataLoader { + private static HashMap<Byte, ModuleData> moduleListEx; + + public static HashMap<Byte, ModuleData> getList() { + return moduleListEx; + } + public static void load() { HashMap<Byte, ModuleData> u = ModuleData.getList(); if (u.size() < Byte.MAX_VALUE) { |