CompoundContainer.java

net.minecraft.world.CompoundContainer

信息

  • 全限定名:net.minecraft.world.CompoundContainer
  • 类型:public class
  • 包:net.minecraft.world
  • 源码路径:src/main/java/net/minecraft/world/CompoundContainer.java
  • 起始行号:L7
  • 实现:Container
  • 职责:

    TODO

字段/常量

  • container1

    • 类型: Container
    • 修饰符: private final
    • 源码定位: L8
    • 说明:

      TODO

  • container2

    • 类型: Container
    • 修饰符: private final
    • 源码定位: L9
    • 说明:

      TODO

内部类/嵌套类型

构造器

public CompoundContainer(Container container1, Container container2) @ L11

  • 构造器名:CompoundContainer
  • 源码定位:L11
  • 修饰符:public

参数:

  • container1: Container
  • container2: Container

说明:

TODO

方法

下面的方法块按源码顺序生成。

public int getContainerSize() @ L16

  • 方法名:getContainerSize
  • 源码定位:L16
  • 返回类型:int
  • 修饰符:public

参数:

说明:

TODO

public boolean isEmpty() @ L21

  • 方法名:isEmpty
  • 源码定位:L21
  • 返回类型:boolean
  • 修饰符:public

参数:

说明:

TODO

public boolean contains(Container container) @ L26

  • 方法名:contains
  • 源码定位:L26
  • 返回类型:boolean
  • 修饰符:public

参数:

  • container: Container

说明:

TODO

public ItemStack getItem(int slot) @ L30

  • 方法名:getItem
  • 源码定位:L30
  • 返回类型:ItemStack
  • 修饰符:public

参数:

  • slot: int

说明:

TODO

public ItemStack removeItem(int slot, int count) @ L35

  • 方法名:removeItem
  • 源码定位:L35
  • 返回类型:ItemStack
  • 修饰符:public

参数:

  • slot: int
  • count: int

说明:

TODO

public ItemStack removeItemNoUpdate(int slot) @ L42

  • 方法名:removeItemNoUpdate
  • 源码定位:L42
  • 返回类型:ItemStack
  • 修饰符:public

参数:

  • slot: int

说明:

TODO

public void setItem(int slot, ItemStack itemStack) @ L49

  • 方法名:setItem
  • 源码定位:L49
  • 返回类型:void
  • 修饰符:public

参数:

  • slot: int
  • itemStack: ItemStack

说明:

TODO

public int getMaxStackSize() @ L58

  • 方法名:getMaxStackSize
  • 源码定位:L58
  • 返回类型:int
  • 修饰符:public

参数:

说明:

TODO

public void setChanged() @ L63

  • 方法名:setChanged
  • 源码定位:L63
  • 返回类型:void
  • 修饰符:public

参数:

说明:

TODO

public boolean stillValid(Player player) @ L69

  • 方法名:stillValid
  • 源码定位:L69
  • 返回类型:boolean
  • 修饰符:public

参数:

  • player: Player

说明:

TODO

public void startOpen(ContainerUser containerUser) @ L74

  • 方法名:startOpen
  • 源码定位:L74
  • 返回类型:void
  • 修饰符:public

参数:

  • containerUser: ContainerUser

说明:

TODO

public void stopOpen(ContainerUser containerUser) @ L80

  • 方法名:stopOpen
  • 源码定位:L80
  • 返回类型:void
  • 修饰符:public

参数:

  • containerUser: ContainerUser

说明:

TODO

public boolean canPlaceItem(int slot, ItemStack itemStack) @ L86

  • 方法名:canPlaceItem
  • 源码定位:L86
  • 返回类型:boolean
  • 修饰符:public

参数:

  • slot: int
  • itemStack: ItemStack

说明:

TODO

public void clearContent() @ L93

  • 方法名:clearContent
  • 源码定位:L93
  • 返回类型:void
  • 修饰符:public

参数:

说明:

TODO

代码

public class CompoundContainer implements Container {
    private final Container container1;
    private final Container container2;
 
    public CompoundContainer(Container container1, Container container2) {
        this.container1 = container1;
        this.container2 = container2;
    }
 
    @Override
    public int getContainerSize() {
        return this.container1.getContainerSize() + this.container2.getContainerSize();
    }
 
    @Override
    public boolean isEmpty() {
        return this.container1.isEmpty() && this.container2.isEmpty();
    }
 
    public boolean contains(Container container) {
        return this.container1 == container || this.container2 == container;
    }
 
    @Override
    public ItemStack getItem(int slot) {
        return slot >= this.container1.getContainerSize() ? this.container2.getItem(slot - this.container1.getContainerSize()) : this.container1.getItem(slot);
    }
 
    @Override
    public ItemStack removeItem(int slot, int count) {
        return slot >= this.container1.getContainerSize()
            ? this.container2.removeItem(slot - this.container1.getContainerSize(), count)
            : this.container1.removeItem(slot, count);
    }
 
    @Override
    public ItemStack removeItemNoUpdate(int slot) {
        return slot >= this.container1.getContainerSize()
            ? this.container2.removeItemNoUpdate(slot - this.container1.getContainerSize())
            : this.container1.removeItemNoUpdate(slot);
    }
 
    @Override
    public void setItem(int slot, ItemStack itemStack) {
        if (slot >= this.container1.getContainerSize()) {
            this.container2.setItem(slot - this.container1.getContainerSize(), itemStack);
        } else {
            this.container1.setItem(slot, itemStack);
        }
    }
 
    @Override
    public int getMaxStackSize() {
        return this.container1.getMaxStackSize();
    }
 
    @Override
    public void setChanged() {
        this.container1.setChanged();
        this.container2.setChanged();
    }
 
    @Override
    public boolean stillValid(Player player) {
        return this.container1.stillValid(player) && this.container2.stillValid(player);
    }
 
    @Override
    public void startOpen(ContainerUser containerUser) {
        this.container1.startOpen(containerUser);
        this.container2.startOpen(containerUser);
    }
 
    @Override
    public void stopOpen(ContainerUser containerUser) {
        this.container1.stopOpen(containerUser);
        this.container2.stopOpen(containerUser);
    }
 
    @Override
    public boolean canPlaceItem(int slot, ItemStack itemStack) {
        return slot >= this.container1.getContainerSize()
            ? this.container2.canPlaceItem(slot - this.container1.getContainerSize(), itemStack)
            : this.container1.canPlaceItem(slot, itemStack);
    }
 
    @Override
    public void clearContent() {
        this.container1.clearContent();
        this.container2.clearContent();
    }
}

引用的其他类