Actually allow for offhand modification, whoops.
This commit is contained in:
@@ -36,7 +36,7 @@ import net.minecraft.server.v1_9_R1.PlayerInventory;
|
|||||||
public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory {
|
public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory {
|
||||||
CraftPlayer owner;
|
CraftPlayer owner;
|
||||||
public boolean playerOnline = false;
|
public boolean playerOnline = false;
|
||||||
private final ItemStack[] extra = new ItemStack[5];
|
private final ItemStack[] extra = new ItemStack[4];
|
||||||
private final CraftInventory inventory = new CraftInventory(this);
|
private final CraftInventory inventory = new CraftInventory(this);
|
||||||
|
|
||||||
public SpecialPlayerInventory(Player p, Boolean online) {
|
public SpecialPlayerInventory(Player p, Boolean online) {
|
||||||
@@ -59,6 +59,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP
|
|||||||
field.set(inventory, armor);
|
field.set(inventory, armor);
|
||||||
field = inventory.getClass().getField("extraSlots");
|
field = inventory.getClass().getField("extraSlots");
|
||||||
modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL);
|
modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL);
|
||||||
|
field.set(inventory, extraSlots);
|
||||||
} catch (NoSuchFieldException e) {
|
} catch (NoSuchFieldException e) {
|
||||||
// Unable to set final fields to item arrays, we're screwed. Noisily fail.
|
// Unable to set final fields to item arrays, we're screwed. Noisily fail.
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@@ -69,15 +70,18 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Inventory getBukkitInventory() {
|
public Inventory getBukkitInventory() {
|
||||||
return inventory;
|
return inventory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean inventoryRemovalCheck() {
|
public boolean inventoryRemovalCheck() {
|
||||||
owner.saveData();
|
owner.saveData();
|
||||||
return transaction.isEmpty() && !playerOnline;
|
return transaction.isEmpty() && !playerOnline;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void setPlayerOnline(Player player) {
|
public void setPlayerOnline(Player player) {
|
||||||
if (!playerOnline) {
|
if (!playerOnline) {
|
||||||
CraftPlayer p = (CraftPlayer) player;
|
CraftPlayer p = (CraftPlayer) player;
|
||||||
@@ -87,6 +91,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean setPlayerOffline() {
|
public boolean setPlayerOffline() {
|
||||||
playerOnline = false;
|
playerOnline = false;
|
||||||
return this.inventoryRemovalCheck();
|
return this.inventoryRemovalCheck();
|
||||||
@@ -103,6 +108,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP
|
|||||||
ItemStack[] C = new ItemStack[getSize()];
|
ItemStack[] C = new ItemStack[getSize()];
|
||||||
System.arraycopy(items, 0, C, 0, items.length);
|
System.arraycopy(items, 0, C, 0, items.length);
|
||||||
System.arraycopy(armor, 0, C, items.length, armor.length);
|
System.arraycopy(armor, 0, C, items.length, armor.length);
|
||||||
|
System.arraycopy(extraSlots, 0, C, items.length + armor.length, extraSlots.length);
|
||||||
return C;
|
return C;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user