aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/SlotLocking.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/SlotLocking.java')
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/SlotLocking.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/SlotLocking.java b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/SlotLocking.java
index 8a487739..7e65e032 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/SlotLocking.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/SlotLocking.java
@@ -24,8 +24,10 @@ import com.google.gson.GsonBuilder;
import io.github.moulberry.notenoughupdates.NotEnoughUpdates;
import io.github.moulberry.notenoughupdates.core.config.KeybindHelper;
import io.github.moulberry.notenoughupdates.core.util.render.RenderUtils;
+import io.github.moulberry.notenoughupdates.events.ReplaceItemEvent;
import io.github.moulberry.notenoughupdates.events.SlotClickEvent;
import io.github.moulberry.notenoughupdates.mixins.AccessorGuiContainer;
+import io.github.moulberry.notenoughupdates.util.ItemUtils;
import io.github.moulberry.notenoughupdates.util.SBInfo;
import net.minecraft.client.Minecraft;
import net.minecraft.client.audio.ISound;
@@ -39,7 +41,10 @@ import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.init.Blocks;
import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.event.GuiScreenEvent;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
@@ -416,6 +421,9 @@ public class SlotLocking {
}
drawLinkArrow(x1, y1, x2, y2);
+ setTopHalfBarrier = true;
+ } else {
+ setTopHalfBarrier = false;
}
}
@@ -729,4 +737,27 @@ public class SlotLocking {
return locked != null &&
(locked.locked || (NotEnoughUpdates.INSTANCE.config.slotLocking.bindingAlsoLocks && locked.boundTo != -1));
}
+
+ boolean setTopHalfBarrier = false;
+ @SubscribeEvent
+ public void barrierInventory(ReplaceItemEvent event) {
+ if (event.getSlotNumber() < 9 ||
+ (pairingSlot != null && (event.getSlotNumber() == pairingSlot.slotNumber || isArmourSlot(event.getSlotNumber(), pairingSlot.slotNumber))) ||
+ !setTopHalfBarrier ||
+ !(event.getInventory() instanceof InventoryPlayer)) return;
+ ItemStack stack = new ItemStack(Blocks.barrier);
+ ItemUtils.getOrCreateTag(stack).setBoolean(
+ "NEUHIDETOOLIP",
+ true
+ );
+ event.replaceWith(stack);
+ }
+
+ boolean isArmourSlot(int eventSlotNumber, int pairingSlotNumber) {
+ if (eventSlotNumber == 39 && pairingSlotNumber == 5) return true;
+ if (eventSlotNumber == 38 && pairingSlotNumber == 6) return true;
+ if (eventSlotNumber == 37 && pairingSlotNumber == 7) return true;
+ if (eventSlotNumber == 36 && pairingSlotNumber == 8) return true;
+ return false;
+ }
}