package de.gerrygames.viarewind.protocol.protocol1_8to1_9.storage; import de.gerrygames.viarewind.protocol.protocol1_8to1_9.Protocol1_8TO1_9; import de.gerrygames.viarewind.utils.PacketUtil; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.data.StoredObject; import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.minecraft.item.Item; import us.myles.ViaVersion.api.type.Type; import java.util.HashMap; public class Windows extends StoredObject { private HashMap<Short, String> types = new HashMap<>(); private HashMap<Short, Item[]> brewingItems = new HashMap<>(); public Windows(UserConnection user) { super(user); } public String get(short windowId) { return types.get(windowId); } public void put(short windowId, String type) { types.put(windowId, type); } public void remove(short windowId) { types.remove(windowId); brewingItems.remove(windowId); } public Item[] getBrewingItems(short windowId) { return brewingItems.computeIfAbsent(windowId, key -> new Item[] { new Item(), new Item(), new Item(), new Item() }); } public static void updateBrewingStand(UserConnection user, Item blazePowder, short windowId) { if (blazePowder != null && blazePowder.getIdentifier() != 377) return; int amount = blazePowder == null ? 0 : blazePowder.getAmount(); PacketWrapper openWindow = new PacketWrapper(0x2D, null, user); openWindow.write(Type.UNSIGNED_BYTE, windowId); openWindow.write(Type.STRING, "minecraft:brewing_stand"); openWindow.write(Type.STRING, "[{\"translate\":\"container.brewing\"},{\"text\":\": \",\"color\":\"dark_gray\"},{\"text\":\"ยง4" + amount + " \",\"color\":\"dark_red\"},{\"translate\":\"item.blazePowder.name\",\"color\":\"dark_red\"}]"); openWindow.write(Type.UNSIGNED_BYTE, (short) 420); PacketUtil.sendPacket(openWindow, Protocol1_8TO1_9.class); Item[] items = user.get(Windows.class).getBrewingItems(windowId); for (int i = 0; i < items.length; i++) { PacketWrapper setSlot = new PacketWrapper(0x2F, null, user); setSlot.write(Type.BYTE, (byte) windowId); setSlot.write(Type.SHORT, (short) i); setSlot.write(Type.ITEM, items[i]); PacketUtil.sendPacket(setSlot, Protocol1_8TO1_9.class); } } }