ContainerHelper.java
net.minecraft.world.ContainerHelper
信息
- 全限定名:net.minecraft.world.ContainerHelper
- 类型:public class
- 包:net.minecraft.world
- 源码路径:src/main/java/net/minecraft/world/ContainerHelper.java
- 起始行号:L10
- 职责:
TODO
字段/常量
TAG_ITEMS- 类型:
String - 修饰符:
public static final - 源码定位:
L11 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
public static ItemStack removeItem(List<ItemStack> itemStacks, int slot, int count) @ L13
- 方法名:removeItem
- 源码定位:L13
- 返回类型:ItemStack
- 修饰符:public static
参数:
- itemStacks: List
- slot: int
- count: int
说明:
TODO
public static ItemStack takeItem(List<ItemStack> itemStacks, int slot) @ L17
- 方法名:takeItem
- 源码定位:L17
- 返回类型:ItemStack
- 修饰符:public static
参数:
- itemStacks: List
- slot: int
说明:
TODO
public static void saveAllItems(ValueOutput output, NonNullList<ItemStack> itemStacks) @ L21
- 方法名:saveAllItems
- 源码定位:L21
- 返回类型:void
- 修饰符:public static
参数:
- output: ValueOutput
- itemStacks: NonNullList
说明:
TODO
public static void saveAllItems(ValueOutput output, NonNullList<ItemStack> itemStacks, boolean alsoWhenEmpty) @ L25
- 方法名:saveAllItems
- 源码定位:L25
- 返回类型:void
- 修饰符:public static
参数:
- output: ValueOutput
- itemStacks: NonNullList
- alsoWhenEmpty: boolean
说明:
TODO
public static void loadAllItems(ValueInput input, NonNullList<ItemStack> itemStacks) @ L40
- 方法名:loadAllItems
- 源码定位:L40
- 返回类型:void
- 修饰符:public static
参数:
- input: ValueInput
- itemStacks: NonNullList
说明:
TODO
public static int clearOrCountMatchingItems(Container container, Predicate<ItemStack> predicate, int amountToRemove, boolean countingOnly) @ L48
- 方法名:clearOrCountMatchingItems
- 源码定位:L48
- 返回类型:int
- 修饰符:public static
参数:
- container: Container
- predicate: Predicate
- amountToRemove: int
- countingOnly: boolean
说明:
TODO
public static int clearOrCountMatchingItems(ItemStack itemStack, Predicate<ItemStack> predicate, int amountToRemove, boolean countingOnly) @ L64
- 方法名:clearOrCountMatchingItems
- 源码定位:L64
- 返回类型:int
- 修饰符:public static
参数:
- itemStack: ItemStack
- predicate: Predicate
- amountToRemove: int
- countingOnly: boolean
说明:
TODO
代码
public class ContainerHelper {
public static final String TAG_ITEMS = "Items";
public static ItemStack removeItem(List<ItemStack> itemStacks, int slot, int count) {
return slot >= 0 && slot < itemStacks.size() && !itemStacks.get(slot).isEmpty() && count > 0 ? itemStacks.get(slot).split(count) : ItemStack.EMPTY;
}
public static ItemStack takeItem(List<ItemStack> itemStacks, int slot) {
return slot >= 0 && slot < itemStacks.size() ? itemStacks.set(slot, ItemStack.EMPTY) : ItemStack.EMPTY;
}
public static void saveAllItems(ValueOutput output, NonNullList<ItemStack> itemStacks) {
saveAllItems(output, itemStacks, true);
}
public static void saveAllItems(ValueOutput output, NonNullList<ItemStack> itemStacks, boolean alsoWhenEmpty) {
ValueOutput.TypedOutputList<ItemStackWithSlot> itemsOutput = output.list("Items", ItemStackWithSlot.CODEC);
for (int i = 0; i < itemStacks.size(); i++) {
ItemStack itemStack = itemStacks.get(i);
if (!itemStack.isEmpty()) {
itemsOutput.add(new ItemStackWithSlot(i, itemStack));
}
}
if (itemsOutput.isEmpty() && !alsoWhenEmpty) {
output.discard("Items");
}
}
public static void loadAllItems(ValueInput input, NonNullList<ItemStack> itemStacks) {
for (ItemStackWithSlot item : input.listOrEmpty("Items", ItemStackWithSlot.CODEC)) {
if (item.isValidInContainer(itemStacks.size())) {
itemStacks.set(item.slot(), item.stack());
}
}
}
public static int clearOrCountMatchingItems(Container container, Predicate<ItemStack> predicate, int amountToRemove, boolean countingOnly) {
int count = 0;
for (int i = 0; i < container.getContainerSize(); i++) {
ItemStack itemStack = container.getItem(i);
int amountRemoved = clearOrCountMatchingItems(itemStack, predicate, amountToRemove - count, countingOnly);
if (amountRemoved > 0 && !countingOnly && itemStack.isEmpty()) {
container.setItem(i, ItemStack.EMPTY);
}
count += amountRemoved;
}
return count;
}
public static int clearOrCountMatchingItems(ItemStack itemStack, Predicate<ItemStack> predicate, int amountToRemove, boolean countingOnly) {
if (itemStack.isEmpty() || !predicate.test(itemStack)) {
return 0;
} else if (countingOnly) {
return itemStack.getCount();
} else {
int amountRemoved = amountToRemove < 0 ? itemStack.getCount() : Math.min(amountToRemove, itemStack.getCount());
itemStack.shrink(amountRemoved);
return amountRemoved;
}
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
ItemStackWithSlot()
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置: