From 3d3fbefee958deff26dd8a577044762ef6418904 Mon Sep 17 00:00:00 2001 From: JoshieGemFinder <79513611+JoshieGemFinder@users.noreply.github.com> Date: Sun, 3 Mar 2024 20:06:51 +1000 Subject: [PATCH 1/2] Fix ContainerEye.java Gotta add a sliver of code to IFilterItem next --- .../teamroots/embers/gui/ContainerEye.java | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/main/java/teamroots/embers/gui/ContainerEye.java b/src/main/java/teamroots/embers/gui/ContainerEye.java index 2029258b..35a5ca7a 100644 --- a/src/main/java/teamroots/embers/gui/ContainerEye.java +++ b/src/main/java/teamroots/embers/gui/ContainerEye.java @@ -11,8 +11,11 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import teamroots.embers.api.filter.EnumFilterSetting; +import teamroots.embers.api.filter.FilterSieve; +import teamroots.embers.api.filter.IFilter; import teamroots.embers.util.FilterUtil; import teamroots.embers.api.filter.IFilterComparator; +import teamroots.embers.api.item.IFilterItem; import teamroots.embers.util.Vec2i; import java.util.List; @@ -48,11 +51,14 @@ public enum EnumButton { public ContainerEye(EntityPlayer player) { stack = player.getHeldItemMainhand(); hand = EnumHand.MAIN_HAND; - if (stack.isEmpty()) + if (stack.isEmpty() || !(stack.getItem() instanceof IFilterItem)) { stack = player.getHeldItemOffhand(); hand = EnumHand.OFF_HAND; } + if(!(stack.getItem() instanceof IFilterItem)) { + throw new IllegalStateException(); + } readFromStack(stack); @@ -80,8 +86,14 @@ public void onSlotChanged() { private void readFromStack(ItemStack stack) { - NBTTagCompound compound = stack.getTagCompound(); - if(compound != null) { + if(!(stack.getItem() instanceof IFilterItem)) + return; + IFilter filter = ((IFilterItem)stack.getItem()).getFilter(stack); + if(filter != null && filter.getType().equals(FilterSieve.RESOURCE_LOCATION)) { + FilterSieve sieve = (FilterSieve)filter; + //just how it's set up, don't want to invalidate any addons or modify the filter instance or anything + NBTTagCompound compound = sieve.writeToNBT(new NBTTagCompound()); + String comparatorName = compound.getString("comparator"); stack1 = new ItemStack(compound.getCompoundTag("stack1")); stack2 = new ItemStack(compound.getCompoundTag("stack2")); @@ -114,16 +126,12 @@ public void triggerButton(EnumButton button) { } public void writeToStack() { - NBTTagCompound compound = stack.getTagCompound(); - if(compound == null) - compound = new NBTTagCompound(); - compound.setString("comparator", comparator.getName()); - compound.setInteger("offset", filterOffset); - compound.setBoolean("inverted", inverted); - compound.setInteger("setting", flag.ordinal()); - compound.setTag("stack1", stack1.serializeNBT()); - compound.setTag("stack2", stack2.serializeNBT()); - stack.setTagCompound(compound); + if(!(stack.getItem() instanceof IFilterItem)) + return; + + FilterSieve filter = new FilterSieve(stack1, stack2, filterOffset, flag, inverted); + + ((IFilterItem)stack.getItem()).setFilter(stack, filter); } public void toggleInvert() { From 12558f2b8fab78a558669e86f79944bbe0c9bcf6 Mon Sep 17 00:00:00 2001 From: JoshieGemFinder <79513611+JoshieGemFinder@users.noreply.github.com> Date: Sun, 3 Mar 2024 20:08:48 +1000 Subject: [PATCH 2/2] Add setFilter to IFilterItem.java Made it a default method so as to not cause issues with addons --- src/main/java/teamroots/embers/api/item/IFilterItem.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/teamroots/embers/api/item/IFilterItem.java b/src/main/java/teamroots/embers/api/item/IFilterItem.java index adda2956..064e0cbb 100644 --- a/src/main/java/teamroots/embers/api/item/IFilterItem.java +++ b/src/main/java/teamroots/embers/api/item/IFilterItem.java @@ -1,8 +1,14 @@ package teamroots.embers.api.item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import teamroots.embers.api.filter.IFilter; public interface IFilterItem { IFilter getFilter(ItemStack stack); + + default void setFilter(ItemStack stack, IFilter filter) { + NBTTagCompound compound = stack.getOrCreateSubCompound("filter"); + filter.writeToNBT(compound); + } }