diff options
4 files changed, 132 insertions, 0 deletions
diff --git a/src/main/java/gtPlusPlus/core/common/compat/COMPAT_Baubles.java b/src/main/java/gtPlusPlus/core/common/compat/COMPAT_Baubles.java index 54620c7f6a..be35a360d1 100644 --- a/src/main/java/gtPlusPlus/core/common/compat/COMPAT_Baubles.java +++ b/src/main/java/gtPlusPlus/core/common/compat/COMPAT_Baubles.java @@ -19,6 +19,7 @@ import net.minecraftforge.oredict.OreDictionary; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.item.ModItems; import gtPlusPlus.core.item.bauble.BatteryPackBaseBauble; +import gtPlusPlus.core.item.bauble.FireProtectionBauble; import gtPlusPlus.core.item.general.ItemCloakingDevice; import gtPlusPlus.core.item.general.ItemHealingDevice; import gtPlusPlus.core.item.general.ItemSlowBuildingRing; @@ -35,6 +36,7 @@ public class COMPAT_Baubles { Logger.INFO("Baubles Found - Loading Wearables."); ModItems.itemPersonalCloakingDevice = new ItemCloakingDevice(0); ModItems.itemPersonalHealingDevice = new ItemHealingDevice(); + ModItems.itemSupremePizzaGloves = new FireProtectionBauble(); ModItems.itemChargePack_Low_1 = new BatteryPackBaseBauble(1); registerTieredTooltip(new ItemStack(ModItems.itemChargePack_Low_1, 1, OreDictionary.WILDCARD_VALUE), LV); diff --git a/src/main/java/gtPlusPlus/core/item/ModItems.java b/src/main/java/gtPlusPlus/core/item/ModItems.java index f85e18b8d6..63e0bebe89 100644 --- a/src/main/java/gtPlusPlus/core/item/ModItems.java +++ b/src/main/java/gtPlusPlus/core/item/ModItems.java @@ -108,6 +108,7 @@ public final class ModItems { public static Item itemPersonalCloakingDevice; public static Item itemPersonalHealingDevice; + public static Item itemSupremePizzaGloves; public static Item itemSlowBuildingRing; public static ItemBlueprint itemBlueprintBase; diff --git a/src/main/java/gtPlusPlus/core/item/bauble/FireProtectionBauble.java b/src/main/java/gtPlusPlus/core/item/bauble/FireProtectionBauble.java new file mode 100644 index 0000000000..ca4ec308f6 --- /dev/null +++ b/src/main/java/gtPlusPlus/core/item/bauble/FireProtectionBauble.java @@ -0,0 +1,129 @@ +package gtPlusPlus.core.item.bauble; + +import static gregtech.api.enums.Mods.GTPlusPlus; + +import java.lang.reflect.Field; +import java.util.List; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; + +import baubles.api.BaubleType; +import cpw.mods.fml.common.registry.GameRegistry; +import gtPlusPlus.core.creative.AddToCreativeTab; +import gtPlusPlus.core.util.reflect.ReflectionUtils; +import gtPlusPlus.preloader.DevHelper; + +public class FireProtectionBauble extends BaseBauble { + + private static Field isImmuneToFire; + + static { + isImmuneToFire = ReflectionUtils + .getField(Entity.class, DevHelper.isObfuscatedEnvironment() ? "func_70045_F" : "isImmuneToFire"); + } + + public static boolean fireImmune(Entity aEntity) { + return aEntity.isImmuneToFire(); + } + + public static boolean setEntityImmuneToFire(Entity aEntity, boolean aImmune) { + try { + return ReflectionUtils.setField(aEntity, isImmuneToFire, aImmune); + } catch (Throwable t) {} + return false; + } + + public FireProtectionBauble() { + super(BaubleType.RING, "GTPP.bauble.fireprotection.0" + ".name", 0); + String aUnlocalName = "GTPP.bauble.fireprotection.0" + ".name"; + this.setUnlocalizedName(aUnlocalName); + this.setTextureName(GTPlusPlus.ID + ":" + getTextureNameForBauble()); + this.setMaxDamage(100); + this.setMaxStackSize(1); + this.setNoRepair(); + this.setCreativeTab(AddToCreativeTab.tabMachines); + if (GameRegistry.findItem(GTPlusPlus.ID, aUnlocalName) == null) { + GameRegistry.registerItem(this, aUnlocalName); + } + } + + @Override + public void onUpdate(final ItemStack itemStack, final World worldObj, final Entity player, final int p_77663_4_, + final boolean p_77663_5_) { + super.onUpdate(itemStack, worldObj, player, p_77663_4_, p_77663_5_); + } + + @Override + public String getItemStackDisplayName(final ItemStack p_77653_1_) { + return (EnumChatFormatting.DARK_RED + super.getItemStackDisplayName(p_77653_1_) + EnumChatFormatting.GRAY); + } + + @Override + public boolean showDurabilityBar(final ItemStack stack) { + return false; + } + + @SuppressWarnings("unchecked") + @Override + public void addInformation(final ItemStack stack, final EntityPlayer aPlayer, final List list, final boolean bool) { + super.addInformation(stack, aPlayer, list, bool); + } + + @Override + public boolean canEquip(final ItemStack arg0, final EntityLivingBase arg1) { + return true; + } + + @Override + public boolean canUnequip(final ItemStack arg0, final EntityLivingBase arg1) { + return true; + } + + @Override + public void onEquipped(final ItemStack arg0, final EntityLivingBase aPlayer) { + if (!aPlayer.worldObj.isRemote) { + if (aPlayer instanceof EntityPlayer) { + EntityPlayer bPlayer = (EntityPlayer) aPlayer; + } + } + } + + @Override + public void onUnequipped(final ItemStack arg0, final EntityLivingBase aPlayer) { + if (!aPlayer.worldObj.isRemote) { + if (aPlayer instanceof EntityPlayer) { + EntityPlayer bPlayer = (EntityPlayer) aPlayer; + if (bPlayer.isPotionActive(Potion.fireResistance)) { + bPlayer.removePotionEffect(Potion.fireResistance.id); + } + setEntityImmuneToFire(bPlayer, false); + } + } + } + + @Override + public void onWornTick(final ItemStack aBaubleStack, final EntityLivingBase aPlayer) { + if (!aPlayer.worldObj.isRemote) { + if (aPlayer instanceof EntityPlayer) { + EntityPlayer bPlayer = (EntityPlayer) aPlayer; + if (!fireImmune(bPlayer)) { + setEntityImmuneToFire(bPlayer, true); + } + if (!bPlayer.isPotionActive(Potion.fireResistance)) { + bPlayer.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 100, 4)); + } + } + } + } + + public String getTextureNameForBauble() { + return "baubles/itemFireProtectGlovesBetter"; + } +} diff --git a/src/main/resources/assets/miscutils/textures/items/baubles/itemFireProtectGlovesBetter.png b/src/main/resources/assets/miscutils/textures/items/baubles/itemFireProtectGlovesBetter.png Binary files differnew file mode 100644 index 0000000000..8576ae1b7a --- /dev/null +++ b/src/main/resources/assets/miscutils/textures/items/baubles/itemFireProtectGlovesBetter.png |