aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gtPlusPlus')
-rw-r--r--src/main/java/gtPlusPlus/api/objects/minecraft/ShapedRecipe.java18
-rw-r--r--src/main/java/gtPlusPlus/core/common/CommonProxy.java36
-rw-r--r--src/main/java/gtPlusPlus/core/item/bauble/BaseBauble.java29
3 files changed, 57 insertions, 26 deletions
diff --git a/src/main/java/gtPlusPlus/api/objects/minecraft/ShapedRecipe.java b/src/main/java/gtPlusPlus/api/objects/minecraft/ShapedRecipe.java
index f799623dd6..4da6ef3a1f 100644
--- a/src/main/java/gtPlusPlus/api/objects/minecraft/ShapedRecipe.java
+++ b/src/main/java/gtPlusPlus/api/objects/minecraft/ShapedRecipe.java
@@ -4,12 +4,13 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.ShapedOreRecipe;
+import gregtech.api.interfaces.IRecipeMutableAccess;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.api.objects.data.Pair;
import gtPlusPlus.core.util.minecraft.ItemUtils;
-public class ShapedRecipe {
+public class ShapedRecipe implements IRecipeMutableAccess {
private static final String CHARS = "abcdefghijklmnop";
public ShapedOreRecipe mRecipe;
@@ -248,4 +249,19 @@ public class ShapedRecipe {
t.printStackTrace();
}
}
+
+ @Override
+ public ItemStack gt5u$getRecipeOutputItem() {
+ return ((IRecipeMutableAccess) mRecipe).gt5u$getRecipeOutputItem();
+ }
+
+ @Override
+ public void gt5u$setRecipeOutputItem(ItemStack newItem) {
+ ((IRecipeMutableAccess) mRecipe).gt5u$setRecipeOutputItem(newItem);
+ }
+
+ @Override
+ public Object gt5u$getRecipeInputs() {
+ return ((IRecipeMutableAccess) mRecipe).gt5u$getRecipeInputs();
+ }
}
diff --git a/src/main/java/gtPlusPlus/core/common/CommonProxy.java b/src/main/java/gtPlusPlus/core/common/CommonProxy.java
index 5d93141c56..12f0971e73 100644
--- a/src/main/java/gtPlusPlus/core/common/CommonProxy.java
+++ b/src/main/java/gtPlusPlus/core/common/CommonProxy.java
@@ -6,14 +6,19 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.client.IItemRenderer;
+import net.minecraftforge.event.entity.living.LivingAttackEvent;
+import baubles.common.container.InventoryBaubles;
+import baubles.common.lib.PlayerHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLLoadCompleteEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import cpw.mods.fml.common.registry.GameRegistry;
+import gregtech.api.enums.Mods;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.api.objects.data.Pair;
@@ -30,6 +35,7 @@ import gtPlusPlus.core.handler.events.EntityDeathHandler;
import gtPlusPlus.core.handler.events.GeneralTooltipEventHandler;
import gtPlusPlus.core.handler.events.PlayerSleepEventHandler;
import gtPlusPlus.core.item.ModItems;
+import gtPlusPlus.core.item.bauble.BaseBauble;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.recipe.common.CI;
import gtPlusPlus.core.tileentities.ModTileEntities;
@@ -204,4 +210,34 @@ public class CommonProxy {
public EntityPlayer getPlayerEntity(MessageContext ctx) {
return ctx.getServerHandler().playerEntity;
}
+
+ @SuppressWarnings("unused") // used by the event bus
+ @SubscribeEvent
+ public void onPlayerAttacked(LivingAttackEvent event) {
+ if (Mods.Baubles.isModLoaded()) {
+ BaubleAttackHandler.run(event);
+ }
+ }
+
+ // Prevent class loading errors if Baubles are missing
+ private static final class BaubleAttackHandler {
+
+ public static void run(LivingAttackEvent event) {
+ if (!(event.entityLiving instanceof EntityPlayer player)) {
+ return;
+ }
+ InventoryBaubles baubles = PlayerHandler.getPlayerBaubles(player);
+ final ItemStack bauble1 = baubles.getStackInSlot(1);
+ if (bauble1.getItem() instanceof BaseBauble gtBauble && gtBauble.getDamageNegations()
+ .contains(event.source.damageType)) {
+ event.setCanceled(true);
+ return;
+ }
+ final ItemStack bauble2 = baubles.getStackInSlot(2);
+ if (bauble2.getItem() instanceof BaseBauble gtBauble && gtBauble.getDamageNegations()
+ .contains(event.source.damageType)) {
+ event.setCanceled(true);
+ }
+ }
+ }
}
diff --git a/src/main/java/gtPlusPlus/core/item/bauble/BaseBauble.java b/src/main/java/gtPlusPlus/core/item/bauble/BaseBauble.java
index 92468aa6d8..76121ef266 100644
--- a/src/main/java/gtPlusPlus/core/item/bauble/BaseBauble.java
+++ b/src/main/java/gtPlusPlus/core/item/bauble/BaseBauble.java
@@ -9,21 +9,16 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
-import net.minecraftforge.event.entity.living.LivingAttackEvent;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import baubles.api.BaubleType;
import baubles.api.IBauble;
-import baubles.common.container.InventoryBaubles;
-import baubles.common.lib.PlayerHandler;
import cpw.mods.fml.common.Optional;
-import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import gregtech.api.enums.Mods;
import gregtech.api.util.GT_LanguageManager;
import gtPlusPlus.core.creative.AddToCreativeTab;
-import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.minecraft.NBTUtils;
@Optional.InterfaceList(
@@ -41,11 +36,14 @@ public class BaseBauble extends Item implements IBauble {
public BaseBauble(BaubleType type) {
this.mThisBauble = type;
- Utils.registerEvent(this);
this.setMaxStackSize(1);
this.setCreativeTab(AddToCreativeTab.tabMisc);
}
+ public List<String> getDamageNegations() {
+ return damageNegations;
+ }
+
@Override
public String getItemStackDisplayName(final ItemStack tItem) {
String key = "gtplusplus." + getUnlocalizedName() + ".name";
@@ -55,14 +53,6 @@ public class BaseBauble extends Item implements IBauble {
return GT_LanguageManager.getTranslation(key);
}
- @SubscribeEvent
- public void onPlayerAttacked(LivingAttackEvent event) {
- if (event.entityLiving instanceof EntityPlayer player) {
- if (getCorrectBauble(player) != null && damageNegations.contains(event.source.damageType))
- event.setCanceled(true);
- }
- }
-
@Override
public boolean canEquip(ItemStack arg0, EntityLivingBase arg1) {
return arg1 instanceof EntityPlayer;
@@ -107,17 +97,6 @@ public class BaseBauble extends Item implements IBauble {
.removeAttributeModifiers(attributes);
}
- public ItemStack getCorrectBauble(EntityPlayer player) {
- InventoryBaubles baubles = PlayerHandler.getPlayerBaubles(player);
- ItemStack stack1 = baubles.getStackInSlot(1);
- ItemStack stack2 = baubles.getStackInSlot(2);
- return isCorrectBauble(stack1) ? stack1 : isCorrectBauble(stack2) ? stack2 : null;
- }
-
- private boolean isCorrectBauble(ItemStack stack) {
- return stack != null && (stack.getItem() == this);
- }
-
@Override
public int getEntityLifespan(ItemStack itemStack, World world) {
return Integer.MAX_VALUE;