mirror of
https://github.com/barkeser2002/CatServer.git
synced 2026-09-25 02:20:01 +03:00
146 lines
5.4 KiB
Diff
146 lines
5.4 KiB
Diff
--- ../src-base/minecraft/net/minecraft/entity/player/InventoryPlayer.java
|
|
+++ ../src-work/minecraft/net/minecraft/entity/player/InventoryPlayer.java
|
|
@@ -1,5 +1,6 @@
|
|
package net.minecraft.entity.player;
|
|
|
|
+import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
@@ -26,6 +27,9 @@
|
|
import net.minecraft.world.World;
|
|
import net.minecraftforge.fml.relauncher.Side;
|
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
|
+import org.bukkit.Location;
|
|
+import org.bukkit.craftbukkit.entity.CraftHumanEntity;
|
|
+import org.bukkit.entity.HumanEntity;
|
|
|
|
public class InventoryPlayer implements IInventory
|
|
{
|
|
@@ -37,7 +41,49 @@
|
|
public EntityPlayer player;
|
|
private ItemStack itemStack;
|
|
private int timesChanged;
|
|
+ // CraftBukkit start - add fields and methods
|
|
+ public List<HumanEntity> transaction = new java.util.ArrayList<HumanEntity>();
|
|
+ private int maxStack = MAX_STACK;
|
|
+
|
|
+ public List<ItemStack> getContents() {
|
|
+ List<ItemStack> combined = new ArrayList<>(mainInventory.size() + armorInventory.size() + offHandInventory.size());
|
|
+ for (List<net.minecraft.item.ItemStack> sub : this.allInventories) {
|
|
+ combined.addAll(sub);
|
|
+ }
|
|
|
|
+ return combined;
|
|
+ }
|
|
+
|
|
+ public List<ItemStack> getArmorContents() {
|
|
+ return this.armorInventory;
|
|
+ }
|
|
+
|
|
+ public void onOpen(CraftHumanEntity who) {
|
|
+ transaction.add(who);
|
|
+ }
|
|
+
|
|
+ public void onClose(CraftHumanEntity who) {
|
|
+ transaction.remove(who);
|
|
+ }
|
|
+
|
|
+ public List<HumanEntity> getViewers() {
|
|
+ return transaction;
|
|
+ }
|
|
+
|
|
+ public org.bukkit.inventory.InventoryHolder getOwner() {
|
|
+ return this.player.getBukkitEntity();
|
|
+ }
|
|
+
|
|
+ public void setMaxStackSize(int size) {
|
|
+ maxStack = size;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public Location getLocation() {
|
|
+ return player.getBukkitEntity().getLocation();
|
|
+ }
|
|
+ // CraftBukkit end
|
|
+
|
|
public InventoryPlayer(EntityPlayer playerIn)
|
|
{
|
|
this.allInventories = Arrays.<NonNullList<ItemStack>>asList(this.mainInventory, this.armorInventory, this.offHandInventory);
|
|
@@ -65,6 +111,23 @@
|
|
return stack1.getItem() == stack2.getItem() && (!stack1.getHasSubtypes() || stack1.getMetadata() == stack2.getMetadata()) && ItemStack.areItemStackTagsEqual(stack1, stack2);
|
|
}
|
|
|
|
+ // CraftBukkit start - Watch method above! :D
|
|
+ public int canHold(ItemStack itemstack) {
|
|
+ int remains = itemstack.getCount();
|
|
+ for (int i = 0; i < this.mainInventory.size(); ++i) {
|
|
+ ItemStack itemstack1 = this.getStackInSlot(i);
|
|
+ if (itemstack1.isEmpty()) return itemstack.getCount();
|
|
+
|
|
+ // Taken from firstPartial(ItemStack)
|
|
+ if (!itemstack1.isEmpty() && itemstack1.getItem() == itemstack.getItem() && itemstack1.isStackable() && itemstack1.getCount() < itemstack1.getMaxStackSize() && itemstack1.getCount() < this.getInventoryStackLimit() && (!itemstack1.getHasSubtypes() || itemstack1.getMetadata() == itemstack.getMetadata()) && ItemStack.areItemStackTagsEqual(itemstack1, itemstack)) {
|
|
+ remains -= (itemstack1.getMaxStackSize() < this.getInventoryStackLimit() ? itemstack1.getMaxStackSize() : this.getInventoryStackLimit()) - itemstack1.getCount();
|
|
+ }
|
|
+ if (remains <= 0) return itemstack.getCount();
|
|
+ }
|
|
+ return itemstack.getCount() - remains;
|
|
+ }
|
|
+ // CraftBukkit end
|
|
+
|
|
public int getFirstEmptyStack()
|
|
{
|
|
for (int i = 0; i < this.mainInventory.size(); ++i)
|
|
@@ -292,7 +355,8 @@
|
|
|
|
if (itemstack.isEmpty())
|
|
{
|
|
- itemstack = new ItemStack(item, 0, p_191973_2_.getMetadata());
|
|
+ itemstack = p_191973_2_.copy(); // Forge: Replace Item clone above to preserve item capabilities when picking the item up.
|
|
+ itemstack.setCount(0);
|
|
|
|
if (p_191973_2_.hasTagCompound())
|
|
{
|
|
@@ -363,6 +427,13 @@
|
|
}
|
|
}
|
|
}
|
|
+ for (ItemStack is : armorInventory) // FORGE: Tick armor on animation ticks
|
|
+ {
|
|
+ if (!is.isEmpty())
|
|
+ {
|
|
+ is.getItem().onArmorTick(player.world, player, is);
|
|
+ }
|
|
+ }
|
|
}
|
|
|
|
public boolean addItemStackToInventory(ItemStack itemStackIn)
|
|
@@ -444,6 +515,8 @@
|
|
CrashReportCategory crashreportcategory = crashreport.makeCategory("Item being added");
|
|
crashreportcategory.addCrashSection("Item ID", Integer.valueOf(Item.getIdFromItem(p_191971_2_.getItem())));
|
|
crashreportcategory.addCrashSection("Item data", Integer.valueOf(p_191971_2_.getMetadata()));
|
|
+ crashreportcategory.addDetail("Registry Name", () -> String.valueOf(p_191971_2_.getItem().getRegistryName()));
|
|
+ crashreportcategory.addDetail("Item Class", () -> p_191971_2_.getItem().getClass().getName());
|
|
crashreportcategory.addDetail("Item name", new ICrashReportDetail<String>()
|
|
{
|
|
public String call() throws Exception
|
|
@@ -715,7 +788,7 @@
|
|
|
|
public int getInventoryStackLimit()
|
|
{
|
|
- return 64;
|
|
+ return maxStack;
|
|
}
|
|
|
|
public boolean canHarvestBlock(IBlockState state)
|
|
@@ -792,6 +865,9 @@
|
|
|
|
public ItemStack getItemStack()
|
|
{
|
|
+ if (this.itemStack.isEmpty()) {
|
|
+ this.setItemStack(ItemStack.EMPTY);
|
|
+ }
|
|
return this.itemStack;
|
|
}
|
|
|