/*
* This file is part of SpoutcraftPlugin.
*
* Copyright (c) 2011 SpoutcraftDev <http://spoutcraft.org//>
* SpoutcraftPlugin is licensed under the GNU Lesser General Public License.
*
* SpoutcraftPlugin is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* SpoutcraftPlugin is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.getspout.spoutapi.packet.standard;
import java.util.HashMap;
import org.bukkit.inventory.ItemStack;
/**
* Represents Packet103SetSlot
*/
public interface MCPacket103SetSlot extends MCPacket {
/**
* Indicates the Window identified by the packet
*/
public enum Window {
UNKNOWN(-1),
PLAYER(0),
WORKBENCH(1),
FURNACE(2),
CHEST(3),
DOUBLECHEST(4),
DISPENSER(5);
/**
* The raw value contained in the packet.
*/
public final int id;
private Window(int id) {
this.id = id;
}
/**
* Gets a Window enum that represents the raw id.
* @param id the raw id to get an enum value for
* @return a Window enum value that represents the raw id
*/
public static Window getWindowById(int id) {
switch (id) {
case 0:
return PLAYER;
case 1:
return WORKBENCH;
case 2:
return FURNACE;
case 3:
return CHEST;
case 4:
return DOUBLECHEST;
case 5:
return DISPENSER;
default:
return UNKNOWN;
}
}
}
/**
* Gives a name to the window/slot pair contained in the packet.
*/
public enum Slot {
UNKNOWN(-1, 0),
CURSOR(-1, -1),
PLAYER_CRAFT_RESULT(0, 0),
PLAYER_CRAFT_INPUT_1(0, 1),
PLAYER_CRAFT_INPUT_2(0, 2),
PLAYER_CRAFT_INPUT_3(0, 3),
PLAYER_CRAFT_INPUT_4(0, 4),
PLAYER_ARMOR_HEAD(0, 5),
PLAYER_ARMOR_CHEST(0, 6),
PLAYER_ARMOR_LEGS(0, 7),
PLAYER_ARMOR_FEET(0, 8),
PLAYER_INVENTORY_01(0, 9),
PLAYER_INVENTORY_02(0, 10),
PLAYER_INVENTORY_03(0, 11),
PLAYER_INVENTORY_04(0, 12),
PLAYER_INVENTORY_05(0, 13),
PLAYER_INVENTORY_06(0, 14),
PLAYER_INVENTORY_07(0, 15),
PLAYER_INVENTORY_08(0, 16),
PLAYER_INVENTORY_09(0, 17),
PLAYER_INVENTORY_10(0, 18),
PLAYER_INVENTORY_11(0, 19),
PLAYER_INVENTORY_12(0, 20),
PLAYER_INVENTORY_13(0, 21),
PLAYER_INVENTORY_14(0, 22),
PLAYER_INVENTORY_15(0, 23),
PLAYER_INVENTORY_16(0, 24),
PLAYER_INVENTORY_17(0, 25),
PLAYER_INVENTORY_18(0, 26),
PLAYER_INVENTORY_19(0, 27),
PLAYER_INVENTORY_20(0, 28),
PLAYER_INVENTORY_21(0, 29),
PLAYER_INVENTORY_22(0, 30),
PLAYER_INVENTORY_23(0, 31),
PLAYER_INVENTORY_24(0, 32),
PLAYER_INVENTORY_25(0, 33),
PLAYER_INVENTORY_26(0, 34),
PLAYER_INVENTORY_27(0, 35),
PLAYER_HELD_1(0, 36),
PLAYER_HELD_2(0, 37),
PLAYER_HELD_3(0, 38),
PLAYER_HELD_4(0, 39),
PLAYER_HELD_5(0, 40),
PLAYER_HELD_6(0, 41),
PLAYER_HELD_7(0, 42),
PLAYER_HELD_8(0, 43),
PLAYER_HELD_9(0, 44),
WORKBENCH_CRAFT_RESULT(1, 0),
WORKBENCH_CRAFT_INPUT_1(1, 1),
WORKBENCH_CRAFT_INPUT_2(1, 2),
WORKBENCH_CRAFT_INPUT_3(1, 3),
WORKBENCH_CRAFT_INPUT_4(1, 4),
WORKBENCH_CRAFT_INPUT_5(1, 5),
WORKBENCH_CRAFT_INPUT_6(1, 6),
WORKBENCH_CRAFT_INPUT_7(1, 7),
WORKBENCH_CRAFT_INPUT_8(1, 8),
WORKBENCH_CRAFT_INPUT_9(1, 9),
WORKBENCH_INVENTORY_01(1, 10),
WORKBENCH_INVENTORY_02(1, 11),
WORKBENCH_INVENTORY_03(1, 12),
WORKBENCH_INVENTORY_04(1, 13),
WORKBENCH_INVENTORY_05(1, 14),
WORKBENCH_INVENTORY_06(1, 15),
WORKBENCH_INVENTORY_07(1, 16),
WORKBENCH_INVENTORY_08(1, 17),
WORKBENCH_INVENTORY_09(1, 18),
WORKBENCH_INVENTORY_10(1, 19),
WORKBENCH_INVENTORY_11(1, 20),
WORKBENCH_INVENTORY_12(1, 21),
WORKBENCH_INVENTORY_13(1, 22),
WORKBENCH_INVENTORY_14(1, 23),
WORKBENCH_INVENTORY_15(1, 24),
WORKBENCH_INVENTORY_16(1, 25),
WORKBENCH_INVENTORY_17(1, 26),
WORKBENCH_INVENTORY_18(1, 27),
WORKBENCH_INVENTORY_19(1, 28),
WORKBENCH_INVENTORY_20(1, 29),
WORKBENCH_INVENTORY_21(1, 30),
WORKBENCH_INVENTORY_22(1, 31),
WORKBENCH_INVENTORY_23(1, 32),
WORKBENCH_INVENTORY_24(1, 33),
WORKBENCH_INVENTORY_25(1, 34),
WORKBENCH_INVENTORY_26(1, 35),
WORKBENCH_INVENTORY_27(1, 36),
WORKBENCH_HELD_1(1, 37),
WORKBENCH_HELD_2(1, 38),
WORKBENCH_HELD_3(1, 39),
WORKBENCH_HELD_4(1, 40),
WORKBENCH_HELD_5(1, 41),
WORKBENCH_HELD_6(1, 42),
WORKBENCH_HELD_7(1, 43),
WORKBENCH_HELD_8(1, 44),
WORKBENCH_HELD_9(1, 45),
FURNACE_INPUT(2, 0),
FURNACE_FUEL(2, 1),
FURNACE_OUTPUT(2, 2),
FURNACE_INVENTORY_01(2, 3),
FURNACE_INVENTORY_02(2, 4),
FURNACE_INVENTORY_03(2, 5),
FURNACE_INVENTORY_04(2, 6),
FURNACE_INVENTORY_05(2, 7),
FURNACE_INVENTORY_06(2, 8),
FURNACE_INVENTORY_07(2, 9),
FURNACE_INVENTORY_08(2, 10),
FURNACE_INVENTORY_09(2, 11),
FURNACE_INVENTORY_10(2, 12),
FURNACE_INVENTORY_11(2, 13),
FURNACE_INVENTORY_12(2, 14),
FURNACE_INVENTORY_13(2, 15),
FURNACE_INVENTORY_14(2, 16),
FURNACE_INVENTORY_15(2, 17),
FURNACE_INVENTORY_16(2, 18),
FURNACE_INVENTORY_17(2, 19),
FURNACE_INVENTORY_18(2, 20),
FURNACE_INVENTORY_19(2, 21),
FURNACE_INVENTORY_20(2, 22),
FURNACE_INVENTORY_21(2, 23),
FURNACE_INVENTORY_22(2, 24),
FURNACE_INVENTORY_23(2, 25),
FURNACE_INVENTORY_24(2, 26),
FURNACE_INVENTORY_25(2, 27),
FURNACE_INVENTORY_26(2, 28),
FURNACE_INVENTORY_27(2, 29),
FURNACE_HELD_1(2, 30),
FURNACE_HELD_2(2, 31),
FURNACE_HELD_3(2, 32),
FURNACE_HELD_4(2, 33),
FURNACE_HELD_5(2, 34),
FURNACE_HELD_6(2, 35),
FURNACE_HELD_7(2, 36),
FURNACE_HELD_8(2, 37),
FURNACE_HELD_9(2, 38),
CHEST_CONTENTS_01(3, 0),
CHEST_CONTENTS_02(3, 1),
CHEST_CONTENTS_03(3, 2),
CHEST_CONTENTS_04(3, 3),
CHEST_CONTENTS_05(3, 4),
CHEST_CONTENTS_06(3, 5),
CHEST_CONTENTS_07(3, 6),
CHEST_CONTENTS_08(3, 7),
CHEST_CONTENTS_09(3, 8),
CHEST_CONTENTS_10(3, 9),
CHEST_CONTENTS_11(3, 10),
CHEST_CONTENTS_12(3, 11),
CHEST_CONTENTS_13(3, 12),
CHEST_CONTENTS_14(3, 13),
CHEST_CONTENTS_15(3, 14),
CHEST_CONTENTS_16(3, 15),
CHEST_CONTENTS_17(3, 16),
CHEST_CONTENTS_18(3, 17),
CHEST_CONTENTS_19(3, 18),
CHEST_CONTENTS_20(3, 19),
CHEST_CONTENTS_21(3, 20),
CHEST_CONTENTS_22(3, 21),
CHEST_CONTENTS_23(3, 22),
CHEST_CONTENTS_24(3, 23),
CHEST_CONTENTS_25(3, 24),
CHEST_CONTENTS_26(3, 25),
CHEST_CONTENTS_27(3, 26),
CHEST_INVENTORY_01(3, 27),
CHEST_INVENTORY_02(3, 28),
CHEST_INVENTORY_03(3, 29),
CHEST_INVENTORY_04(3, 30),
CHEST_INVENTORY_05(3, 31),
CHEST_INVENTORY_06(3, 32),
CHEST_INVENTORY_07(3, 33),
CHEST_INVENTORY_08(3, 34),
CHEST_INVENTORY_09(3, 35),
CHEST_INVENTORY_10(3, 36),
CHEST_INVENTORY_11(3, 37),
CHEST_INVENTORY_12(3, 38),
CHEST_INVENTORY_13(3, 39),
CHEST_INVENTORY_14(3, 40),
CHEST_INVENTORY_15(3, 41),
CHEST_INVENTORY_16(3, 42),
CHEST_INVENTORY_17(3, 43),
CHEST_INVENTORY_18(3, 44),
CHEST_INVENTORY_19(3, 45),
CHEST_INVENTORY_20(3, 46),
CHEST_INVENTORY_21(3, 47),
CHEST_INVENTORY_22(3, 48),
CHEST_INVENTORY_23(3, 49),
CHEST_INVENTORY_24(3, 50),
CHEST_INVENTORY_25(3, 51),
CHEST_INVENTORY_26(3, 52),
CHEST_INVENTORY_27(3, 53),
CHEST_HELD_1(3, 54),
CHEST_HELD_2(3, 55),
CHEST_HELD_3(3, 56),
CHEST_HELD_4(3, 57),
CHEST_HELD_5(3, 58),
CHEST_HELD_6(3, 59),
CHEST_HELD_7(3, 60),
CHEST_HELD_8(3, 61),
CHEST_HELD_9(3, 62),
DOUBLECHEST_CONTENTS_01(4, 0),
DOUBLECHEST_CONTENTS_02(4, 1),
DOUBLECHEST_CONTENTS_03(4, 2),
DOUBLECHEST_CONTENTS_04(4, 3),
DOUBLECHEST_CONTENTS_05(4, 4),
DOUBLECHEST_CONTENTS_06(4, 5),
DOUBLECHEST_CONTENTS_07(4, 6),
DOUBLECHEST_CONTENTS_08(4, 7),
DOUBLECHEST_CONTENTS_09(4, 8),
DOUBLECHEST_CONTENTS_10(4, 9),
DOUBLECHEST_CONTENTS_11(4, 10),
DOUBLECHEST_CONTENTS_12(4, 11),
DOUBLECHEST_CONTENTS_13(4, 12),
DOUBLECHEST_CONTENTS_14(4, 13),
DOUBLECHEST_CONTENTS_15(4, 14),
DOUBLECHEST_CONTENTS_16(4, 15),
DOUBLECHEST_CONTENTS_17(4, 16),
DOUBLECHEST_CONTENTS_18(4, 17),
DOUBLECHEST_CONTENTS_19(4, 18),
DOUBLECHEST_CONTENTS_20(4, 19),
DOUBLECHEST_CONTENTS_21(4, 20),
DOUBLECHEST_CONTENTS_22(4, 21),
DOUBLECHEST_CONTENTS_23(4, 22),
DOUBLECHEST_CONTENTS_24(4, 23),
DOUBLECHEST_CONTENTS_25(4, 24),
DOUBLECHEST_CONTENTS_26(4, 25),
DOUBLECHEST_CONTENTS_27(4, 26),
DOUBLECHEST_CONTENTS_28(4, 27),
DOUBLECHEST_CONTENTS_29(4, 28),
DOUBLECHEST_CONTENTS_30(4, 29),
DOUBLECHEST_CONTENTS_31(4, 30),
DOUBLECHEST_CONTENTS_32(4, 31),
DOUBLECHEST_CONTENTS_33(4, 32),
DOUBLECHEST_CONTENTS_34(4, 33),
DOUBLECHEST_CONTENTS_35(4, 34),
DOUBLECHEST_CONTENTS_36(4, 35),
DOUBLECHEST_CONTENTS_37(4, 36),
DOUBLECHEST_CONTENTS_38(4, 37),
DOUBLECHEST_CONTENTS_39(4, 38),
DOUBLECHEST_CONTENTS_40(4, 39),
DOUBLECHEST_CONTENTS_41(4, 40),
DOUBLECHEST_CONTENTS_42(4, 41),
DOUBLECHEST_CONTENTS_43(4, 42),
DOUBLECHEST_CONTENTS_44(4, 43),
DOUBLECHEST_CONTENTS_45(4, 44),
DOUBLECHEST_CONTENTS_46(4, 45),
DOUBLECHEST_CONTENTS_47(4, 46),
DOUBLECHEST_CONTENTS_48(4, 47),
DOUBLECHEST_CONTENTS_49(4, 48),
DOUBLECHEST_CONTENTS_50(4, 49),
DOUBLECHEST_CONTENTS_51(4, 50),
DOUBLECHEST_CONTENTS_52(4, 51),
DOUBLECHEST_CONTENTS_53(4, 52),
DOUBLECHEST_CONTENTS_54(4, 53),
DOUBLECHEST_INVENTORY_01(4, 54),
DOUBLECHEST_INVENTORY_02(4, 55),
DOUBLECHEST_INVENTORY_03(4, 56),
DOUBLECHEST_INVENTORY_04(4, 57),
DOUBLECHEST_INVENTORY_05(4, 58),
DOUBLECHEST_INVENTORY_06(4, 59),
DOUBLECHEST_INVENTORY_07(4, 60),
DOUBLECHEST_INVENTORY_08(4, 61),
DOUBLECHEST_INVENTORY_09(4, 62),
DOUBLECHEST_INVENTORY_10(4, 63),
DOUBLECHEST_INVENTORY_11(4, 64),
DOUBLECHEST_INVENTORY_12(4, 65),
DOUBLECHEST_INVENTORY_13(4, 66),
DOUBLECHEST_INVENTORY_14(4, 67),
DOUBLECHEST_INVENTORY_15(4, 68),
DOUBLECHEST_INVENTORY_16(4, 69),
DOUBLECHEST_INVENTORY_17(4, 70),
DOUBLECHEST_INVENTORY_18(4, 71),
DOUBLECHEST_INVENTORY_19(4, 72),
DOUBLECHEST_INVENTORY_20(4, 73),
DOUBLECHEST_INVENTORY_21(4, 74),
DOUBLECHEST_INVENTORY_22(4, 75),
DOUBLECHEST_INVENTORY_23(4, 76),
DOUBLECHEST_INVENTORY_24(4, 77),
DOUBLECHEST_INVENTORY_25(4, 78),
DOUBLECHEST_INVENTORY_26(4, 79),
DOUBLECHEST_INVENTORY_27(4, 80),
DOUBLECHEST_HELD_1(4, 81),
DOUBLECHEST_HELD_2(4, 82),
DOUBLECHEST_HELD_3(4, 83),
DOUBLECHEST_HELD_4(4, 84),
DOUBLECHEST_HELD_5(4, 85),
DOUBLECHEST_HELD_6(4, 86),
DOUBLECHEST_HELD_7(4, 87),
DOUBLECHEST_HELD_8(4, 88),
DOUBLECHEST_HELD_9(4, 89),
DISPENSER_CONTENTS_1(5, 0),
DISPENSER_CONTENTS_2(5, 1),
DISPENSER_CONTENTS_3(5, 2),
DISPENSER_CONTENTS_4(5, 3),
DISPENSER_CONTENTS_5(5, 4),
DISPENSER_CONTENTS_6(5, 5),
DISPENSER_CONTENTS_7(5, 6),
DISPENSER_CONTENTS_8(5, 7),
DISPENSER_CONTENTS_9(5, 8),
DISPENSER_INVENTORY_01(5, 9),
DISPENSER_INVENTORY_02(5, 10),
DISPENSER_INVENTORY_03(5, 11),
DISPENSER_INVENTORY_04(5, 12),
DISPENSER_INVENTORY_05(5, 13),
DISPENSER_INVENTORY_06(5, 14),
DISPENSER_INVENTORY_07(5, 15),
DISPENSER_INVENTORY_08(5, 16),
DISPENSER_INVENTORY_09(5, 17),
DISPENSER_INVENTORY_10(5, 18),
DISPENSER_INVENTORY_11(5, 19),
DISPENSER_INVENTORY_12(5, 20),
DISPENSER_INVENTORY_13(5, 21),
DISPENSER_INVENTORY_14(5, 22),
DISPENSER_INVENTORY_15(5, 23),
DISPENSER_INVENTORY_16(5, 24),
DISPENSER_INVENTORY_17(5, 25),
DISPENSER_INVENTORY_18(5, 26),
DISPENSER_INVENTORY_19(5, 27),
DISPENSER_INVENTORY_20(5, 28),
DISPENSER_INVENTORY_21(5, 29),
DISPENSER_INVENTORY_22(5, 30),
DISPENSER_INVENTORY_23(5, 31),
DISPENSER_INVENTORY_24(5, 32),
DISPENSER_INVENTORY_25(5, 33),
DISPENSER_INVENTORY_26(5, 34),
DISPENSER_INVENTORY_27(5, 35),
DISPENSER_HELD_1(5, 36),
DISPENSER_HELD_2(5, 37),
DISPENSER_HELD_3(5, 38),
DISPENSER_HELD_4(5, 39),
DISPENSER_HELD_5(5, 40),
DISPENSER_HELD_6(5, 41),
DISPENSER_HELD_7(5, 42),
DISPENSER_HELD_8(5, 43),
DISPENSER_HELD_9(5, 44);
/**
* The raw value contained in the packet.
*/
public final int rawWindowId;
/**
* The raw value contained in the packet.
*/
public final int rawSlotId;
private Slot(int window, int slot) {
rawWindowId = window;
rawSlotId = slot;
Store(window, slot, this);
}
// This is a separate method because Java doesn't let enums access static fields in the constructor. Hacky work-around.
private static void Store(int window, int slot, Slot value) {
if (slots == null) {
slots = new HashMap<Integer, HashMap<Integer, Slot>>();
}
if (!slots.containsKey(window)) {
slots.put(window, new HashMap<Integer, Slot>());
}
slots.get(window).put(slot, value);
}
// No way I'm writing a huge switch nest to do a lookup. Use some hash tables instead.
// This is also easier to use in the future if any more windows were added.
private static HashMap<Integer, HashMap<Integer, Slot>> slots;
/**
* Gets a Slot enum value based on the raw values in the packet.
* @param window the window id from the packet
* @param slot the slot id from the packet
* @return an enum value that represents the data in the packet
*/
public static Slot getSlotByRawValues(int window, int slot) {
if (!slots.containsKey(window)) {
return UNKNOWN;
}
if (!slots.get(window).containsKey(slot)) {
return UNKNOWN;
}
return slots.get(window).get(slot);
}
/**
* Gets the Window enum value that represents the window in the packet.
* @return an enum value that represents the window in the packet
*/
public Window getWindow() {
return Window.getWindowById(rawWindowId);
}
/**
* Indicates whether the slot is in the player's inventory window.
* @return true if the slot is in the player's inventory window or false otherwise
*/
public boolean isPlayerInventory() {
return rawWindowId == 0;
}
/**
* Indicates whether the slot is in a workbench window.
* @return true if the slot is in a workbench window or false otherwise
*/
public boolean isWorkbench() {
return rawWindowId == 1;
}
/**
* Indicates whether the slot is in a furnace window.
* @return true if the slot is in a furnace window or false otherwise
*/
public boolean isFurnace() {
return rawWindowId == 2;
}
/**
* Indicates whether the slot is in a single chest window.
* @return true if the slot is in a single chest window or false otherwise
*/
public boolean isChest() {
return rawWindowId == 3;
}
/**
* Indicates whether the slot is in a double chest window.
* @return true if the slot is in a double chest window or false otherwise
*/
public boolean isDoubleChest() {
return rawWindowId == 4;
}
/**
* Indicates whether the slot is in a dispenser window.
* @return true if the slot is in a dispenser window or false otherwise
*/
public boolean isDispenser() {
return rawWindowId == 5;
}
/**
* Indicates whether the slot is in the player's inventory section of the window.
* @return true if the slot is in the player's inventory or false otherwise
*/
public boolean isInventory() {
switch (rawWindowId) {
case 0:
case 5:
return rawSlotId >= 9 && rawSlotId <= 35;
case 1:
return rawSlotId >= 10 && rawSlotId <= 36;
case 2:
return rawSlotId >= 3 && rawSlotId <= 29;
case 3:
return rawSlotId >= 27 && rawSlotId <= 53;
case 4:
return rawSlotId >= 54 && rawSlotId <= 80;
default:
return false;
}
}
/**
* Indicates whether the slot is in the player's held items bar.
* @return true if the slot is in the held items or false otherwise
*/
public boolean isHeldItems() {
switch (rawWindowId) {
case 0:
case 5:
return rawSlotId >= 36 && rawSlotId <= 44;
case 1:
return rawSlotId >= 37 && rawSlotId <= 45;
case 2:
return rawSlotId >= 30 && rawSlotId <= 38;
case 3:
return rawSlotId >= 54 && rawSlotId <= 62;
case 4:
return rawSlotId >= 81 && rawSlotId <= 89;
default:
return false;
}
}
/**
* Indicates whether the slot is in the player's armor bar.
* This is only valid for player inventory.
* @return true if the slot is in the armor or false otherwise
*/
public boolean isArmor() {
return rawWindowId == 0 && rawSlotId >= 5 && rawSlotId <= 8;
}
/**
* Indicates whether the slot is in the contents of a container.
* This is only valid for chests and dispensers.
* @return true if the slot is in contents or false otherwise
*/
public boolean isContents() {
switch (rawWindowId) {
case 3:
return rawSlotId >= 0 && rawSlotId <= 26;
case 4:
return rawSlotId >= 0 && rawSlotId <= 53;
case 5:
return rawSlotId >= 0 && rawSlotId <= 8;
default:
return false;
}
}
/**
* Indicates whether the slot is in any crafting or furnace input.
* This is only valid for player inventory, workbenches, and furnaces.
* @return true if the slot is in crafting or furnace input or false otherwise
*/
public boolean isInput() {
switch (rawWindowId) {
case 0:
return rawSlotId >= 1 && rawSlotId <= 4;
case 1:
return rawSlotId >= 1 && rawSlotId <= 9;
case 2:
return rawSlotId == 0 || rawSlotId == 1;
default:
return false;
}
}
/**
* Indicates whether the slot is in any crafting or furnace output.
* This is only valid for player inventory, workbenches, and furnaces.
* @return
*/
public boolean isOutput() {
switch (rawWindowId) {
case 0:
case 1:
return rawSlotId == 0;
case 2:
return rawSlotId == 2;
default:
return false;
}
}
}
/**
* Get the slot that the packet indicated.
* @return an enum value representing the data in the packet
*/
public Slot getSlot();
/**
* Set the slot in the packet to a new value.
* @param slot the new slot value
*/
public void setSlot(Slot slot);
/**
* Get the window that the packet indicated.
* @return an enum value representing the data in the packet
*/
public Window getWindow();
/**
* Get the raw slot value from the packet.
* @return the integer value from the packet
*/
public int getRawSlot();
/**
* Set the slot in the packet to a new value.
* @param slot the new slot value
*/
public void setRawSlot(int slot);
/**
* Get the raw window value from the packet.
* @return the integer value from the packet
*/
public int getRawWindow();
/**
* Set the window in the packet to a new value.
* @param window the new window value
*/
public void setRawWindow(int window);
/**
* Get the ItemStack from the packet.
* Can be null, representing an empty slot.
* @return a Bukkit ItemStack representing the value from the packet
*/
public ItemStack getItemStack();
/**
* Set the item stack in the packet to a new value.
* Can be null, representing an empty slot.
* @param itemStack a Bukkit ItemStack representing the new value
*/
public void setItemStack(ItemStack itemStack);
}