66 lines
2.4 KiB
Java
66 lines
2.4 KiB
Java
package com.thebrokenrail.twine.item;
|
|
|
|
import com.thebrokenrail.twine.Twine;
|
|
import com.thebrokenrail.twine.util.ItemUtil;
|
|
import com.thebrokenrail.twine.util.backpack.gui.BackpackScreenHandler;
|
|
import net.fabricmc.api.EnvType;
|
|
import net.fabricmc.api.Environment;
|
|
import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerFactory;
|
|
import net.minecraft.client.item.TooltipContext;
|
|
import net.minecraft.entity.player.PlayerEntity;
|
|
import net.minecraft.entity.player.PlayerInventory;
|
|
import net.minecraft.item.DyeableItem;
|
|
import net.minecraft.item.Item;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.network.PacketByteBuf;
|
|
import net.minecraft.screen.ScreenHandler;
|
|
import net.minecraft.server.network.ServerPlayerEntity;
|
|
import net.minecraft.text.Text;
|
|
import net.minecraft.util.ActionResult;
|
|
import net.minecraft.util.Hand;
|
|
import net.minecraft.util.TypedActionResult;
|
|
import net.minecraft.world.World;
|
|
|
|
import java.util.List;
|
|
|
|
public class BackpackItem extends Item implements DyeableItem {
|
|
private final boolean large;
|
|
|
|
public BackpackItem(boolean large) {
|
|
super(new Settings().maxCount(1).group(Twine.ITEM_GROUP));
|
|
this.large = large;
|
|
}
|
|
|
|
@Override
|
|
public TypedActionResult<ItemStack> use(World world, PlayerEntity user, Hand hand) {
|
|
ItemStack stack = user.getStackInHand(hand);
|
|
if (!world.isClient()) {
|
|
user.openHandledScreen(new ExtendedScreenHandlerFactory() {
|
|
@Override
|
|
public void writeScreenOpeningData(ServerPlayerEntity serverPlayerEntity, PacketByteBuf buf) {
|
|
buf.writeBoolean(large);
|
|
buf.writeEnumConstant(hand);
|
|
}
|
|
|
|
@Override
|
|
public Text getDisplayName() {
|
|
return stack.getName();
|
|
}
|
|
|
|
@Override
|
|
public ScreenHandler createMenu(int syncId, PlayerInventory inv, PlayerEntity player) {
|
|
return new BackpackScreenHandler(syncId, inv, large, hand);
|
|
}
|
|
});
|
|
}
|
|
return new TypedActionResult<>(ActionResult.CONSUME, stack);
|
|
}
|
|
|
|
@Override
|
|
@Environment(EnvType.CLIENT)
|
|
public void appendTooltip(ItemStack stack, World world, List<Text> tooltip, TooltipContext context) {
|
|
super.appendTooltip(stack, world, tooltip, context);
|
|
ItemUtil.addTooltip("item", "backpack", 3, tooltip);
|
|
}
|
|
}
|