items can be taken from backpack
This commit is contained in:
parent
737c4bd31a
commit
1696a5fc84
@ -67,12 +67,7 @@ public class BackpackInventory implements Inventory {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEmpty() {
|
public boolean isEmpty() {
|
||||||
for (ItemStack stack : stacks) {
|
return this.stacks.stream().allMatch(ItemStack::isEmpty);
|
||||||
if (!stack.isEmpty()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -82,11 +77,7 @@ public class BackpackInventory implements Inventory {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack removeStack(int slot, int amount) {
|
public ItemStack removeStack(int slot, int amount) {
|
||||||
ItemStack stack = this.stacks.get(slot);
|
return Inventories.splitStack(stacks, slot, amount);
|
||||||
stack.decrement(amount);
|
|
||||||
this.stacks.set(slot, stack);
|
|
||||||
markDirty();
|
|
||||||
return stack;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package de.jottyfan.minecraft.quickiefabric.container;
|
package de.jottyfan.minecraft.quickiefabric.container;
|
||||||
|
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
import de.jottyfan.minecraft.quickiefabric.init.RegistryManager;
|
import de.jottyfan.minecraft.quickiefabric.init.RegistryManager;
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
@ -10,16 +13,20 @@ import net.minecraft.item.ItemStack;
|
|||||||
import net.minecraft.network.PacketByteBuf;
|
import net.minecraft.network.PacketByteBuf;
|
||||||
import net.minecraft.screen.ScreenHandler;
|
import net.minecraft.screen.ScreenHandler;
|
||||||
import net.minecraft.screen.slot.Slot;
|
import net.minecraft.screen.slot.Slot;
|
||||||
|
import net.minecraft.screen.slot.SlotActionType;
|
||||||
import net.minecraft.util.Hand;
|
import net.minecraft.util.Hand;
|
||||||
|
|
||||||
public class BackpackScreenHandler extends ScreenHandler {
|
public class BackpackScreenHandler extends ScreenHandler {
|
||||||
|
private final Logger LOGGER = LogManager.getLogger(BackpackScreenHandler.class);
|
||||||
|
|
||||||
private final BackpackInventory backpackInventory;
|
private final BackpackInventory backpackInventory;
|
||||||
private final PlayerEntity player;
|
private final PlayerEntity player;
|
||||||
|
private final PlayerInventory playerInventory;
|
||||||
private final Hand hand;
|
private final Hand hand;
|
||||||
|
|
||||||
public BackpackScreenHandler(int syncId, PlayerInventory playerInventory, PacketByteBuf buf) {
|
public BackpackScreenHandler(int syncId, PlayerInventory playerInventory, PacketByteBuf buf) {
|
||||||
super(RegistryManager.BACKPACK_SCREEN_HANDLER, syncId);
|
super(RegistryManager.BACKPACK_SCREEN_HANDLER, syncId);
|
||||||
|
this.playerInventory = playerInventory;
|
||||||
this.player = playerInventory.player;
|
this.player = playerInventory.player;
|
||||||
ItemStack stack = buf.readItemStack();
|
ItemStack stack = buf.readItemStack();
|
||||||
this.hand = buf.readByte() > 0 ? Hand.MAIN_HAND : Hand.OFF_HAND;
|
this.hand = buf.readByte() > 0 ? Hand.MAIN_HAND : Hand.OFF_HAND;
|
||||||
@ -86,6 +93,12 @@ public class BackpackScreenHandler extends ScreenHandler {
|
|||||||
return copy;
|
return copy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack onSlotClick(int i, int j, SlotActionType actionType, PlayerEntity playerEntity) {
|
||||||
|
LOGGER.info("click on slot at {},{} with actionType {} by {}", i, j, actionType, playerEntity);
|
||||||
|
// TODO: prevent the one slot that contains the active backpack item
|
||||||
|
return super.onSlotClick(i, j, actionType, playerEntity);
|
||||||
|
}
|
||||||
|
|
||||||
@Environment(EnvType.CLIENT)
|
@Environment(EnvType.CLIENT)
|
||||||
public int getRows() {
|
public int getRows() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user