Search in sources :

Example 1 with CraftInventory

use of org.bukkit.craftbukkit.v.inventory.CraftInventory in project Arclight by IzzelAliz.

the class ContainerMixin method getBukkitView.

// todo check this
public InventoryView getBukkitView() {
    if (bukkitView == null) {
        PlayerEntity candidate = null;
        Set<IInventory> set = new HashSet<>();
        for (Slot slot : this.inventorySlots) {
            if (slot.inventory != null) {
                if (slot.inventory instanceof PlayerInventory) {
                    if (candidate != null && ((PlayerInventory) slot.inventory).player != candidate) {
                        ArclightMod.LOGGER.warn("Duplicate PlayerInventory inside {}, previous {}, new {}", this, candidate, slot.inventory);
                    }
                    candidate = ((PlayerInventory) slot.inventory).player;
                } else {
                    set.add(slot.inventory);
                }
            }
        }
        if (candidate == null) {
            if (ArclightCaptures.getContainerOwner() != null) {
                candidate = ArclightCaptures.getContainerOwner();
            } else {
                throw new RuntimeException("candidate cannot be null");
            }
        }
        CraftResultInventory resultCandidate = null;
        IInventory mainCandidate = null;
        for (IInventory inventory : set) {
            if (inventory instanceof CraftResultInventory) {
                resultCandidate = (CraftResultInventory) inventory;
            } else {
                mainCandidate = inventory;
            }
        }
        Inventory inv;
        if (mainCandidate == null && resultCandidate != null) {
            mainCandidate = resultCandidate;
            resultCandidate = null;
        }
        if (mainCandidate != null) {
            if (resultCandidate != null) {
                inv = new org.bukkit.craftbukkit.v.inventory.CraftResultInventory(mainCandidate, resultCandidate);
            } else {
                inv = new CraftInventory(mainCandidate);
            }
        } else {
            // container has no slots
            inv = new CraftInventoryCustom(((PlayerEntityBridge) candidate).bridge$getBukkitEntity(), 0);
        }
        bukkitView = new CraftInventoryView(((PlayerEntityBridge) candidate).bridge$getBukkitEntity(), inv, (Container) (Object) this);
    }
    return bukkitView;
}
Also used : IInventory(net.minecraft.inventory.IInventory) CraftInventoryCustom(org.bukkit.craftbukkit.v.inventory.CraftInventoryCustom) CraftInventory(org.bukkit.craftbukkit.v.inventory.CraftInventory) PlayerEntityBridge(io.izzel.arclight.common.bridge.entity.player.PlayerEntityBridge) PlayerInventory(net.minecraft.entity.player.PlayerInventory) PlayerEntity(net.minecraft.entity.player.PlayerEntity) ServerPlayerEntity(net.minecraft.entity.player.ServerPlayerEntity) Container(net.minecraft.inventory.container.Container) CraftInventoryView(org.bukkit.craftbukkit.v.inventory.CraftInventoryView) Slot(net.minecraft.inventory.container.Slot) CraftResultInventory(net.minecraft.inventory.CraftResultInventory) Inventory(org.bukkit.inventory.Inventory) CraftInventory(org.bukkit.craftbukkit.v.inventory.CraftInventory) CraftResultInventory(net.minecraft.inventory.CraftResultInventory) PlayerInventory(net.minecraft.entity.player.PlayerInventory) IInventory(net.minecraft.inventory.IInventory) HashSet(java.util.HashSet)

Example 2 with CraftInventory

use of org.bukkit.craftbukkit.v.inventory.CraftInventory in project Arclight by IzzelAliz.

the class DispenserContainerMixin method getBukkitView.

@Override
public CraftInventoryView getBukkitView() {
    if (bukkitEntity != null) {
        return bukkitEntity;
    }
    CraftInventory inventory = new CraftInventory(this.dispenserInventory);
    bukkitEntity = new CraftInventoryView(((PlayerEntityBridge) this.playerInventory.player).bridge$getBukkitEntity(), inventory, (Container) (Object) this);
    return bukkitEntity;
}
Also used : CraftInventory(org.bukkit.craftbukkit.v.inventory.CraftInventory) Container(net.minecraft.inventory.container.Container) DispenserContainer(net.minecraft.inventory.container.DispenserContainer) CraftInventoryView(org.bukkit.craftbukkit.v.inventory.CraftInventoryView) PlayerEntityBridge(io.izzel.arclight.common.bridge.entity.player.PlayerEntityBridge)

Example 3 with CraftInventory

use of org.bukkit.craftbukkit.v.inventory.CraftInventory in project Arclight by IzzelAliz.

the class ChestContainerMixin method getBukkitView.

@Override
public CraftInventoryView getBukkitView() {
    if (bukkitEntity != null) {
        return bukkitEntity;
    }
    CraftInventory inventory;
    if (this.lowerChestInventory instanceof PlayerInventory) {
        inventory = new CraftInventoryPlayer((PlayerInventory) this.lowerChestInventory);
    } else if (this.lowerChestInventory instanceof DoubleSidedInventory) {
        inventory = new CraftInventoryDoubleChest((DoubleSidedInventory) this.lowerChestInventory);
    } else {
        inventory = new CraftInventory(this.lowerChestInventory);
    }
    bukkitEntity = new CraftInventoryView(((PlayerEntityBridge) this.playerInventory.player).bridge$getBukkitEntity(), inventory, (Container) (Object) this);
    return bukkitEntity;
}
Also used : CraftInventory(org.bukkit.craftbukkit.v.inventory.CraftInventory) DoubleSidedInventory(net.minecraft.inventory.DoubleSidedInventory) Container(net.minecraft.inventory.container.Container) ChestContainer(net.minecraft.inventory.container.ChestContainer) CraftInventoryView(org.bukkit.craftbukkit.v.inventory.CraftInventoryView) CraftInventoryPlayer(org.bukkit.craftbukkit.v.inventory.CraftInventoryPlayer) PlayerEntityBridge(io.izzel.arclight.common.bridge.entity.player.PlayerEntityBridge) PlayerInventory(net.minecraft.entity.player.PlayerInventory) CraftInventoryDoubleChest(org.bukkit.craftbukkit.v.inventory.CraftInventoryDoubleChest)

Example 4 with CraftInventory

use of org.bukkit.craftbukkit.v.inventory.CraftInventory in project Arclight by IzzelAliz.

the class HopperContainerMixin method getBukkitView.

@Override
public CraftInventoryView getBukkitView() {
    if (bukkitEntity != null) {
        return bukkitEntity;
    }
    CraftInventory inventory = new CraftInventory(this.hopperInventory);
    bukkitEntity = new CraftInventoryView(((PlayerEntityBridge) this.playerInventory.player).bridge$getBukkitEntity(), inventory, (Container) (Object) this);
    return bukkitEntity;
}
Also used : CraftInventory(org.bukkit.craftbukkit.v.inventory.CraftInventory) HopperContainer(net.minecraft.inventory.container.HopperContainer) Container(net.minecraft.inventory.container.Container) CraftInventoryView(org.bukkit.craftbukkit.v.inventory.CraftInventoryView) PlayerEntityBridge(io.izzel.arclight.common.bridge.entity.player.PlayerEntityBridge)

Example 5 with CraftInventory

use of org.bukkit.craftbukkit.v.inventory.CraftInventory in project Arclight by IzzelAliz.

the class RepairContainerMixin method getBukkitView.

@Override
public CraftInventoryView getBukkitView() {
    if (bukkitEntity != null) {
        return bukkitEntity;
    }
    CraftInventory inventory = new CraftInventoryAnvil(((IWorldPosCallableBridge) this.worldPosCallable).bridge$getLocation(), this.inputSlots, this.outputSlot, (RepairContainer) (Object) this);
    bukkitEntity = new CraftInventoryView(((PlayerEntityBridge) this.player).bridge$getBukkitEntity(), inventory, (Container) (Object) this);
    return bukkitEntity;
}
Also used : CraftInventory(org.bukkit.craftbukkit.v.inventory.CraftInventory) Container(net.minecraft.inventory.container.Container) RepairContainer(net.minecraft.inventory.container.RepairContainer) CraftInventoryView(org.bukkit.craftbukkit.v.inventory.CraftInventoryView) PlayerEntityBridge(io.izzel.arclight.common.bridge.entity.player.PlayerEntityBridge) CraftInventoryAnvil(org.bukkit.craftbukkit.v.inventory.CraftInventoryAnvil)

Aggregations

PlayerEntityBridge (io.izzel.arclight.common.bridge.entity.player.PlayerEntityBridge)6 Container (net.minecraft.inventory.container.Container)6 CraftInventory (org.bukkit.craftbukkit.v.inventory.CraftInventory)6 CraftInventoryView (org.bukkit.craftbukkit.v.inventory.CraftInventoryView)6 PlayerInventory (net.minecraft.entity.player.PlayerInventory)2 HashSet (java.util.HashSet)1 PlayerEntity (net.minecraft.entity.player.PlayerEntity)1 ServerPlayerEntity (net.minecraft.entity.player.ServerPlayerEntity)1 CraftResultInventory (net.minecraft.inventory.CraftResultInventory)1 DoubleSidedInventory (net.minecraft.inventory.DoubleSidedInventory)1 IInventory (net.minecraft.inventory.IInventory)1 BeaconContainer (net.minecraft.inventory.container.BeaconContainer)1 ChestContainer (net.minecraft.inventory.container.ChestContainer)1 DispenserContainer (net.minecraft.inventory.container.DispenserContainer)1 HopperContainer (net.minecraft.inventory.container.HopperContainer)1 RepairContainer (net.minecraft.inventory.container.RepairContainer)1 Slot (net.minecraft.inventory.container.Slot)1 CraftInventoryAnvil (org.bukkit.craftbukkit.v.inventory.CraftInventoryAnvil)1 CraftInventoryBeacon (org.bukkit.craftbukkit.v.inventory.CraftInventoryBeacon)1 CraftInventoryCustom (org.bukkit.craftbukkit.v.inventory.CraftInventoryCustom)1