aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/item/general
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus/core/item/general')
-rw-r--r--src/Java/gtPlusPlus/core/item/general/ItemControlCore.java22
-rw-r--r--src/Java/gtPlusPlus/core/item/general/ItemGenericToken.java39
-rw-r--r--src/Java/gtPlusPlus/core/item/general/books/ItemBaseBook.java5
-rw-r--r--src/Java/gtPlusPlus/core/item/general/capture/ItemEntityCatcher.java13
-rw-r--r--src/Java/gtPlusPlus/core/item/general/throwables/ItemThrowableBomb.java123
5 files changed, 162 insertions, 40 deletions
diff --git a/src/Java/gtPlusPlus/core/item/general/ItemControlCore.java b/src/Java/gtPlusPlus/core/item/general/ItemControlCore.java
index eb22f8fa07..5ef72b6f17 100644
--- a/src/Java/gtPlusPlus/core/item/general/ItemControlCore.java
+++ b/src/Java/gtPlusPlus/core/item/general/ItemControlCore.java
@@ -17,7 +17,7 @@ import gtPlusPlus.core.lib.CORE;
public class ItemControlCore extends Item {
- public IIcon[] icons = new IIcon[10];
+ public static IIcon[] icons = new IIcon[10];
public ItemControlCore() {
super();
@@ -31,16 +31,16 @@ public class ItemControlCore extends Item {
@Override
public void registerIcons(IIconRegister reg) {
- this.icons[0] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_0");
- this.icons[1] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_1");
- this.icons[2] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_2");
- this.icons[3] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_3");
- this.icons[4] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_4");
- this.icons[5] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_5");
- this.icons[6] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_6");
- this.icons[7] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_7");
- this.icons[8] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_8");
- this.icons[9] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_9");
+ icons[0] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_0");
+ icons[1] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_1");
+ icons[2] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_2");
+ icons[3] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_3");
+ icons[4] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_4");
+ icons[5] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_5");
+ icons[6] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_6");
+ icons[7] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_7");
+ icons[8] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_8");
+ icons[9] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_9");
}
@Override
diff --git a/src/Java/gtPlusPlus/core/item/general/ItemGenericToken.java b/src/Java/gtPlusPlus/core/item/general/ItemGenericToken.java
index dfd5eca203..c076bf5c95 100644
--- a/src/Java/gtPlusPlus/core/item/general/ItemGenericToken.java
+++ b/src/Java/gtPlusPlus/core/item/general/ItemGenericToken.java
@@ -19,37 +19,38 @@ import net.minecraft.util.IIcon;
public class ItemGenericToken extends CoreItem {
- public final static HashMap<Integer, String> mLocalNames;
- public final static HashMap<Integer, Integer> mMaxStackSizes;
- public final static HashMap<Integer, String[]> mDescriptionArrays;
- public final static HashMap<Integer, EnumRarity> mRarities;
- public final static HashMap<Integer, EnumChatFormatting> mCustomNameColours;
- public final static HashMap<Integer, IIcon> mIcons;
-
- static {
+ public final HashMap<Integer, String> mLocalNames;
+ public final HashMap<Integer, Integer> mMaxStackSizes;
+ public final HashMap<Integer, String[]> mDescriptionArrays;
+ public final HashMap<Integer, EnumRarity> mRarities;
+ public final HashMap<Integer, EnumChatFormatting> mCustomNameColours;
+ public final HashMap<Integer, IIcon> mIcons;
+ private final String mTextureDir;
+
+ public ItemGenericToken() {
+ this("itemGenericToken", "Token", new String[] { "Can be reclaimed in some way, shape or form" }, "token");
+ }
+
+ public ItemGenericToken(String aUnlocalName, String aInternalName, String[] aBaseTooltip, String aTextureDir) {
+ super(aUnlocalName, aInternalName, AddToCreativeTab.tabMisc, 64, 1000, aBaseTooltip, EnumRarity.common, EnumChatFormatting.RESET, false, null);
mLocalNames = new HashMap<Integer, String>();
mMaxStackSizes = new HashMap<Integer, Integer>();
mDescriptionArrays = new HashMap<Integer, String[]>();
mRarities = new HashMap<Integer, EnumRarity>();
mCustomNameColours = new HashMap<Integer, EnumChatFormatting>();
mIcons = new HashMap<Integer, IIcon>();
+ mTextureDir = aTextureDir;
}
- public ItemGenericToken() {
- super("itemGenericToken", "Token", AddToCreativeTab.tabMisc, 64, 1000,
- new String[] { "Can be reclaimed in some way, shape or form" }, EnumRarity.common,
- EnumChatFormatting.RESET, false, null);
- }
-
- public static boolean register(int id, String aLocalName, int aMaxStack, String aDescript) {
+ public boolean register(int id, String aLocalName, int aMaxStack, String aDescript) {
return register(id, aLocalName, aMaxStack, new String[] { aDescript });
}
- public static boolean register(int id, String aLocalName, int aMaxStack, String[] aDescript) {
+ public boolean register(int id, String aLocalName, int aMaxStack, String[] aDescript) {
return register(id, aLocalName, aMaxStack, aDescript, EnumRarity.common, EnumChatFormatting.RESET);
}
- public static boolean register(int id, String aLocalName, int aMaxStack, String[] aDescript, EnumRarity aRarity,
+ public boolean register(int id, String aLocalName, int aMaxStack, String[] aDescript, EnumRarity aRarity,
EnumChatFormatting aCustomNameColour) {
int[][] sizes = new int[2][6];
sizes[0][0] = mLocalNames.size();
@@ -153,9 +154,9 @@ public class ItemGenericToken extends CoreItem {
@Override
@SideOnly(Side.CLIENT)
- public final void registerIcons(final IIconRegister aIconRegister) {
+ public void registerIcons(final IIconRegister aIconRegister) {
for (int i = 0, j = mLocalNames.size(); i < j; i++) {
- mIcons.put(i, aIconRegister.registerIcon(CORE.MODID + ":" + "token" + "/" + i));
+ mIcons.put(i, aIconRegister.registerIcon(CORE.MODID + ":" + mTextureDir + "/" + i));
}
}
diff --git a/src/Java/gtPlusPlus/core/item/general/books/ItemBaseBook.java b/src/Java/gtPlusPlus/core/item/general/books/ItemBaseBook.java
index 7f6a52f135..2f49ac1287 100644
--- a/src/Java/gtPlusPlus/core/item/general/books/ItemBaseBook.java
+++ b/src/Java/gtPlusPlus/core/item/general/books/ItemBaseBook.java
@@ -27,6 +27,7 @@ import gtPlusPlus.core.creative.AddToCreativeTab;
import gtPlusPlus.core.handler.BookHandler;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.minecraft.NBTUtils;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
public class ItemBaseBook extends ItemWritableBook{
@@ -113,11 +114,11 @@ public class ItemBaseBook extends ItemWritableBook{
if (player.worldObj.isRemote){
try {
- Class<?> clazz = Class.forName("net.minecraft.client.gui.GuiScreenBook");
+ Class<?> clazz = ReflectionUtils.getClass("net.minecraft.client.gui.GuiScreenBook");
Constructor<?> ctor = clazz.getConstructor(EntityPlayer.class, ItemStack.class, boolean.class);
Object object = ctor.newInstance(new Object[] { player, bookstack, false });
Minecraft.getMinecraft().displayGuiScreen((GuiScreen) object);
- } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
+ } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
diff --git a/src/Java/gtPlusPlus/core/item/general/capture/ItemEntityCatcher.java b/src/Java/gtPlusPlus/core/item/general/capture/ItemEntityCatcher.java
index 592b68d06a..a95fab4b6c 100644
--- a/src/Java/gtPlusPlus/core/item/general/capture/ItemEntityCatcher.java
+++ b/src/Java/gtPlusPlus/core/item/general/capture/ItemEntityCatcher.java
@@ -21,6 +21,7 @@ import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.minecraft.NBTUtils;
import gtPlusPlus.core.util.minecraft.PlayerUtils;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
public class ItemEntityCatcher extends Item implements IEntityCatcher {
@@ -117,14 +118,10 @@ public class ItemEntityCatcher extends Item implements IEntityCatcher {
}
Class<? extends Entity> mEntityClass;
String mClassName;
- mClassName = NBTUtils.getString(aStack,"mClassName");
- try {
- mEntityClass = (Class<? extends Entity>) Class.forName(mClassName);
- if (mEntityClass != null) {
- return mEntityClass;
- }
- }
- catch (ClassNotFoundException e) {
+ mClassName = NBTUtils.getString(aStack, "mClassName");
+ mEntityClass = (Class<? extends Entity>) ReflectionUtils.getClass(mClassName);
+ if (mEntityClass != null) {
+ return mEntityClass;
}
return null;
}
diff --git a/src/Java/gtPlusPlus/core/item/general/throwables/ItemThrowableBomb.java b/src/Java/gtPlusPlus/core/item/general/throwables/ItemThrowableBomb.java
new file mode 100644
index 0000000000..9467c3a58c
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/item/general/throwables/ItemThrowableBomb.java
@@ -0,0 +1,123 @@
+package gtPlusPlus.core.item.general.throwables;
+
+import java.util.List;
+
+import gregtech.api.enums.ItemList;
+import gregtech.api.util.GT_Utility;
+import gtPlusPlus.api.objects.data.AutoMap;
+import gtPlusPlus.core.creative.AddToCreativeTab;
+import gtPlusPlus.core.entity.projectile.EntityThrowableBomb;
+import gtPlusPlus.core.item.ModItems;
+import gtPlusPlus.core.item.base.CoreItem;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.minecraft.NBTUtils;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Items;
+import net.minecraft.item.EnumRarity;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.World;
+
+public class ItemThrowableBomb extends CoreItem {
+
+ private static AutoMap<ItemStack> mLighters = new AutoMap<ItemStack>();
+ public static IIcon[] icons = new IIcon[10];
+
+ public ItemThrowableBomb() {
+ super("gtpp.throwable.bomb", "Bomb", AddToCreativeTab.tabMisc, 16, 0, new String[] {"Just like Bomberman", "Have a fire source in inventory to prime"}, EnumRarity.uncommon, EnumChatFormatting.GRAY, false, null);
+ this.setHasSubtypes(true);
+ }
+
+ @Override
+ public ItemStack onItemRightClick(ItemStack item, World world, EntityPlayer player) {
+
+ if (mLighters.isEmpty()) {
+ mLighters.put(ItemUtils.getSimpleStack(Items.flint_and_steel));
+ mLighters.put(ItemList.Tool_Lighter_Invar_Full.get(1));
+ mLighters.put(ItemList.Tool_Lighter_Invar_Used.get(1));
+ mLighters.put(ItemList.Tool_Lighter_Platinum_Full.get(1));
+ mLighters.put(ItemList.Tool_Lighter_Platinum_Used.get(1));
+ mLighters.put(ItemUtils.getSimpleStack(ModItems.itemBasicFireMaker));
+ }
+
+ //Unlit
+ if (item.getItemDamage() == 0) {
+ boolean hasLighter = false;
+ for (ItemStack aPlaySlot : player.inventory.mainInventory) {
+ if (aPlaySlot != null) {
+ for (ItemStack aLighter : mLighters) {
+ if (GT_Utility.areStacksEqual(aPlaySlot, aLighter)) {
+ hasLighter = true;
+ break;
+ }
+ }
+ }
+ }
+ if (hasLighter) {
+ item.setItemDamage(1);
+ }
+ }
+ //Lit
+ else if (item.getItemDamage() == 1) {
+ if (!player.capabilities.isCreativeMode) {
+ --item.stackSize;
+ }
+ world.playSoundAtEntity(player, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F));
+ if (!world.isRemote) {
+ world.spawnEntityInWorld(new EntityThrowableBomb(world, player));
+ }
+ /*if (item.stackSize <= 0) {
+ item = null;
+ }*/
+ }
+ return item;
+ }
+
+
+
+ @Override
+ public void registerIcons(IIconRegister reg) {
+ icons[0] = reg.registerIcon(CORE.MODID + ":" + "bomb");
+ icons[1] = reg.registerIcon(CORE.MODID + ":" + "bomb_lit");
+ }
+
+ @Override
+ public IIcon getIconFromDamage(int meta) {
+ return this.icons[meta];
+ }
+
+ @SuppressWarnings({ "unchecked" })
+ @Override
+ public void getSubItems(Item item, CreativeTabs tab, List list) {
+ for (int i = 0; i < 2; i ++) {
+ list.add(new ItemStack(item, 1, i));
+ }
+ }
+
+ @Override
+ public void addInformation(ItemStack stack, EntityPlayer aPlayer, List list, boolean bool) {
+ String aLitStatus = "unlit";
+ if (stack.getItemDamage() == 0) {
+ aLitStatus = EnumChatFormatting.BLUE+"Unlit";
+ }
+ else if (stack.getItemDamage() == 1) {
+ aLitStatus = EnumChatFormatting.RED+"Lit";
+ }
+ list.add(EnumChatFormatting.GOLD+"Fuse Status: "+aLitStatus);
+ super.addInformation(stack, aPlayer, list, bool);
+ }
+
+ @Override
+ public String getItemStackDisplayName(ItemStack p_77653_1_) {
+ // TODO Auto-generated method stub
+ return super.getItemStackDisplayName(p_77653_1_);
+ }
+
+
+
+} \ No newline at end of file