Added 1.9 shield slot support
This commit is contained in:
		
							
								
								
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
				
			|||||||
    <groupId>com.lishid</groupId>
 | 
					    <groupId>com.lishid</groupId>
 | 
				
			||||||
    <artifactId>openinv</artifactId>
 | 
					    <artifactId>openinv</artifactId>
 | 
				
			||||||
    <packaging>jar</packaging>
 | 
					    <packaging>jar</packaging>
 | 
				
			||||||
    <version>2.3.5</version>
 | 
					    <version>2.3.6</version>
 | 
				
			||||||
    <name>OpenInv</name>
 | 
					    <name>OpenInv</name>
 | 
				
			||||||
    <url>http://dev.bukkit.org/bukkit-plugins/openinv/</url>
 | 
					    <url>http://dev.bukkit.org/bukkit-plugins/openinv/</url>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,7 +32,7 @@ import com.lishid.openinv.OpenInv;
 | 
				
			|||||||
public class SpecialPlayerInventory extends PlayerInventory {
 | 
					public class SpecialPlayerInventory extends PlayerInventory {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private final CraftInventory inventory = new CraftInventory(this);
 | 
					    private final CraftInventory inventory = new CraftInventory(this);
 | 
				
			||||||
    private final ItemStack[] extra = new ItemStack[5];
 | 
					    private final ItemStack[] extra = new ItemStack[4];
 | 
				
			||||||
    private final ItemStack[][] arrays;
 | 
					    private final ItemStack[][] arrays;
 | 
				
			||||||
    private final CraftPlayer owner;
 | 
					    private final CraftPlayer owner;
 | 
				
			||||||
    private boolean playerOnline;
 | 
					    private boolean playerOnline;
 | 
				
			||||||
@@ -41,32 +41,24 @@ public class SpecialPlayerInventory extends PlayerInventory {
 | 
				
			|||||||
        super(((CraftPlayer) p).getHandle());
 | 
					        super(((CraftPlayer) p).getHandle());
 | 
				
			||||||
        this.owner = (CraftPlayer) p;
 | 
					        this.owner = (CraftPlayer) p;
 | 
				
			||||||
        reflectContents(getClass().getSuperclass(), player.inventory, this);
 | 
					        reflectContents(getClass().getSuperclass(), player.inventory, this);
 | 
				
			||||||
        this.arrays = new ItemStack[][] { this.items, this.armor, this.extra };
 | 
					        this.arrays = new ItemStack[][] { this.items, this.armor, this.extraSlots, this.extra };
 | 
				
			||||||
        this.playerOnline = online;
 | 
					        this.playerOnline = online;
 | 
				
			||||||
        OpenInv.inventories.put(owner.getUniqueId(), this);
 | 
					        OpenInv.inventories.put(owner.getUniqueId(), this);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void reflectContents(Class clazz, PlayerInventory src, PlayerInventory dest) {
 | 
					    private void reflectContents(Class clazz, PlayerInventory src, PlayerInventory dest) {
 | 
				
			||||||
        // Items
 | 
					 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            Field itemsField = clazz.getDeclaredField("items");
 | 
					            Field itemsField = clazz.getDeclaredField("items");
 | 
				
			||||||
            itemsField.setAccessible(true);
 | 
					            itemsField.setAccessible(true);
 | 
				
			||||||
            itemsField.set(dest, src.items);
 | 
					            itemsField.set(dest, src.items);
 | 
				
			||||||
        } catch (NoSuchFieldException e) {
 | 
					 | 
				
			||||||
            e.printStackTrace();
 | 
					 | 
				
			||||||
        } catch (SecurityException e) {
 | 
					 | 
				
			||||||
            e.printStackTrace();
 | 
					 | 
				
			||||||
        } catch (IllegalArgumentException e) {
 | 
					 | 
				
			||||||
            e.printStackTrace();
 | 
					 | 
				
			||||||
        } catch (IllegalAccessException e) {
 | 
					 | 
				
			||||||
            e.printStackTrace();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Armor
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            Field armorField = clazz.getDeclaredField("armor");
 | 
					            Field armorField = clazz.getDeclaredField("armor");
 | 
				
			||||||
            armorField.setAccessible(true);
 | 
					            armorField.setAccessible(true);
 | 
				
			||||||
            armorField.set(dest, src.armor);
 | 
					            armorField.set(dest, src.armor);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Field extraSlotsField = clazz.getDeclaredField("extraSlots");
 | 
				
			||||||
 | 
					            extraSlotsField.setAccessible(true);
 | 
				
			||||||
 | 
					            extraSlotsField.set(dest, src.extraSlots);
 | 
				
			||||||
        } catch (NoSuchFieldException e) {
 | 
					        } catch (NoSuchFieldException e) {
 | 
				
			||||||
            e.printStackTrace();
 | 
					            e.printStackTrace();
 | 
				
			||||||
        } catch (SecurityException e) {
 | 
					        } catch (SecurityException e) {
 | 
				
			||||||
@@ -120,12 +112,13 @@ public class SpecialPlayerInventory extends PlayerInventory {
 | 
				
			|||||||
        ItemStack[] contents = new ItemStack[getSize()];
 | 
					        ItemStack[] contents = new ItemStack[getSize()];
 | 
				
			||||||
        System.arraycopy(this.items, 0, contents, 0, this.items.length);
 | 
					        System.arraycopy(this.items, 0, contents, 0, this.items.length);
 | 
				
			||||||
        System.arraycopy(this.armor, 0, contents, this.items.length, this.armor.length);
 | 
					        System.arraycopy(this.armor, 0, contents, this.items.length, this.armor.length);
 | 
				
			||||||
 | 
					        System.arraycopy(this.extraSlots, 0, contents, this.items.length + this.armor.length, this.extraSlots.length);
 | 
				
			||||||
        return contents;
 | 
					        return contents;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public int getSize() {
 | 
					    public int getSize() {
 | 
				
			||||||
        return super.getSize() - this.extraSlots.length + 5;
 | 
					        return super.getSize() + 4;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@@ -149,6 +142,8 @@ public class SpecialPlayerInventory extends PlayerInventory {
 | 
				
			|||||||
            i = getReversedItemSlotNum(i);
 | 
					            i = getReversedItemSlotNum(i);
 | 
				
			||||||
        } else if (is == this.armor) {
 | 
					        } else if (is == this.armor) {
 | 
				
			||||||
            i = getReversedArmorSlotNum(i);
 | 
					            i = getReversedArmorSlotNum(i);
 | 
				
			||||||
 | 
					        } else if (is == this.extraSlots) {
 | 
				
			||||||
 | 
					            // Do nothing
 | 
				
			||||||
        } else if (is == this.extra) {
 | 
					        } else if (is == this.extra) {
 | 
				
			||||||
            // Do nothing
 | 
					            // Do nothing
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -177,6 +172,8 @@ public class SpecialPlayerInventory extends PlayerInventory {
 | 
				
			|||||||
            i = getReversedItemSlotNum(i);
 | 
					            i = getReversedItemSlotNum(i);
 | 
				
			||||||
        } else if (is == this.armor) {
 | 
					        } else if (is == this.armor) {
 | 
				
			||||||
            i = getReversedArmorSlotNum(i);
 | 
					            i = getReversedArmorSlotNum(i);
 | 
				
			||||||
 | 
					        } else if (is == this.extraSlots) {
 | 
				
			||||||
 | 
					            // Do nothing
 | 
				
			||||||
        } else if (is == this.extra) {
 | 
					        } else if (is == this.extra) {
 | 
				
			||||||
            // Do nothing
 | 
					            // Do nothing
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -206,6 +203,8 @@ public class SpecialPlayerInventory extends PlayerInventory {
 | 
				
			|||||||
                i = getReversedItemSlotNum(i);
 | 
					                i = getReversedItemSlotNum(i);
 | 
				
			||||||
            } else if (is == this.armor) {
 | 
					            } else if (is == this.armor) {
 | 
				
			||||||
                i = getReversedArmorSlotNum(i);
 | 
					                i = getReversedArmorSlotNum(i);
 | 
				
			||||||
 | 
					            } else if (is == this.extraSlots) {
 | 
				
			||||||
 | 
					                // Do nothing
 | 
				
			||||||
            } else if (is == this.extra) {
 | 
					            } else if (is == this.extra) {
 | 
				
			||||||
                // Do nothing
 | 
					                // Do nothing
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -240,6 +239,8 @@ public class SpecialPlayerInventory extends PlayerInventory {
 | 
				
			|||||||
                i = getReversedItemSlotNum(i);
 | 
					                i = getReversedItemSlotNum(i);
 | 
				
			||||||
            } else if (is == this.armor) {
 | 
					            } else if (is == this.armor) {
 | 
				
			||||||
                i = getReversedArmorSlotNum(i);
 | 
					                i = getReversedArmorSlotNum(i);
 | 
				
			||||||
 | 
					            } else if (is == this.extraSlots) {
 | 
				
			||||||
 | 
					                // Do nothing
 | 
				
			||||||
            } else if (is == this.extra) {
 | 
					            } else if (is == this.extra) {
 | 
				
			||||||
                owner.getHandle().drop(itemStack, true);
 | 
					                owner.getHandle().drop(itemStack, true);
 | 
				
			||||||
                itemStack = null;
 | 
					                itemStack = null;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
name: OpenInv
 | 
					name: OpenInv
 | 
				
			||||||
main: com.lishid.openinv.OpenInv
 | 
					main: com.lishid.openinv.OpenInv
 | 
				
			||||||
version: 2.3.5
 | 
					version: 2.3.6
 | 
				
			||||||
author: lishid
 | 
					author: lishid
 | 
				
			||||||
description: >
 | 
					description: >
 | 
				
			||||||
             This plugin allows you to open a player's inventory as a chest and interact with it in real time.
 | 
					             This plugin allows you to open a player's inventory as a chest and interact with it in real time.
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user