Actually set NBT and dmg settings to item

This commit is contained in:
Raoul Van den Berge
2016-08-02 23:44:31 +02:00
parent b21b70d234
commit 5f296f5390
5 changed files with 83 additions and 2 deletions

View File

@@ -8,10 +8,12 @@ import refinedstorage.inventory.ItemHandlerGridFilter;
public class ContainerGridFilter extends ContainerBase {
private ItemHandlerGridFilter filter;
private ItemStack stack;
public ContainerGridFilter(EntityPlayer player, ItemStack stack) {
super(player);
this.stack = stack;
this.filter = new ItemHandlerGridFilter(stack);
for (int i = 0; i < 9; ++i) {
@@ -21,6 +23,10 @@ public class ContainerGridFilter extends ContainerBase {
addPlayerInventory(8, 70);
}
public ItemStack getStack() {
return stack;
}
@Override
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
ItemStack stack = null;

View File

@@ -1,20 +1,31 @@
package refinedstorage.gui;
import net.minecraft.client.gui.GuiButton;
import net.minecraftforge.fml.client.config.GuiCheckBox;
import refinedstorage.RefinedStorage;
import refinedstorage.api.storage.CompareUtils;
import refinedstorage.container.ContainerGridFilter;
import refinedstorage.item.ItemGridFilter;
import refinedstorage.network.MessageGridFilterUpdate;
import java.io.IOException;
public class GuiGridFilter extends GuiBase {
private int compare;
private GuiCheckBox compareDamage;
private GuiCheckBox compareNBT;
public GuiGridFilter(ContainerGridFilter container) {
super(container, 176, 152);
this.compare = ItemGridFilter.getCompare(container.getStack());
}
@Override
public void init(int x, int y) {
compareDamage = addCheckBox(x + 7, y + 41, t("gui.refinedstorage:grid_filter.compare_damage"), false);
compareNBT = addCheckBox(x + 7 + compareDamage.getButtonWidth() + 4, y + 41, t("gui.refinedstorage:grid_filter.compare_nbt"), false);
compareDamage = addCheckBox(x + 7, y + 41, t("gui.refinedstorage:grid_filter.compare_damage"), (compare & CompareUtils.COMPARE_DAMAGE) == CompareUtils.COMPARE_DAMAGE);
compareNBT = addCheckBox(x + 7 + compareDamage.getButtonWidth() + 4, y + 41, t("gui.refinedstorage:grid_filter.compare_nbt"), (compare & CompareUtils.COMPARE_NBT) == CompareUtils.COMPARE_NBT);
}
@Override
@@ -33,4 +44,17 @@ public class GuiGridFilter extends GuiBase {
drawString(7, 7, t("gui.refinedstorage:grid_filter"));
drawString(7, 58, t("container.inventory"));
}
@Override
protected void actionPerformed(GuiButton button) throws IOException {
super.actionPerformed(button);
if (button == compareDamage) {
compare ^= CompareUtils.COMPARE_DAMAGE;
} else if (button == compareNBT) {
compare ^= CompareUtils.COMPARE_NBT;
}
RefinedStorage.INSTANCE.network.sendToServer(new MessageGridFilterUpdate(compare));
}
}

View File

@@ -2,6 +2,7 @@ package refinedstorage.item;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand;
@@ -14,6 +15,8 @@ import refinedstorage.inventory.ItemHandlerGridFilter;
import java.util.List;
public class ItemGridFilter extends ItemBase {
private static final String NBT_COMPARE = "Compare";
public ItemGridFilter() {
super("grid_filter");
@@ -43,4 +46,16 @@ public class ItemGridFilter extends ItemBase {
ItemPattern.combineItems(tooltip, items.getFilteredItems());
}
public static int getCompare(ItemStack stack) {
return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NBT_COMPARE)) ? stack.getTagCompound().getInteger(NBT_COMPARE) : 0;
}
public static void setCompare(ItemStack stack, int compare) {
if (!stack.hasTagCompound()) {
stack.setTagCompound(new NBTTagCompound());
}
stack.getTagCompound().setInteger(NBT_COMPARE, compare);
}
}

View File

@@ -0,0 +1,35 @@
package refinedstorage.network;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import refinedstorage.container.ContainerGridFilter;
import refinedstorage.item.ItemGridFilter;
public class MessageGridFilterUpdate extends MessageHandlerPlayerToServer<MessageGridFilterUpdate> implements IMessage {
private int compare;
public MessageGridFilterUpdate() {
}
public MessageGridFilterUpdate(int compare) {
this.compare = compare;
}
@Override
public void fromBytes(ByteBuf buf) {
compare = buf.readInt();
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeInt(compare);
}
@Override
public void handle(MessageGridFilterUpdate message, EntityPlayerMP player) {
if (player.openContainer instanceof ContainerGridFilter) {
ItemGridFilter.setCompare(((ContainerGridFilter) player.openContainer).getStack(), message.compare);
}
}
}

View File

@@ -58,6 +58,7 @@ public class CommonProxy {
RefinedStorage.INSTANCE.network.registerMessage(MessageGridUpdate.class, MessageGridUpdate.class, id++, Side.CLIENT);
RefinedStorage.INSTANCE.network.registerMessage(MessageGridDelta.class, MessageGridDelta.class, id++, Side.CLIENT);
RefinedStorage.INSTANCE.network.registerMessage(MessageProcessingPatternEncoderClear.class, MessageProcessingPatternEncoderClear.class, id++, Side.SERVER);
RefinedStorage.INSTANCE.network.registerMessage(MessageGridFilterUpdate.class, MessageGridFilterUpdate.class, id++, Side.SERVER);
NetworkRegistry.INSTANCE.registerGuiHandler(RefinedStorage.INSTANCE, new GuiHandler());