Sorry, forgot to translate the text
How do I get the predefined tag type constants
Tile Entity Class:
package net.lager.system.common.te;
import java.util.ArrayList;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.apache.logging.log4j.LogManager;
import net.lager.system.System;
import net.lager.system.common.container.DisplayC;
import net.minecraft.block.BlockState;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.ItemStackHelper;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.INamedContainerProvider;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.ListNBT;
import net.minecraft.network.play.server.SUpdateTileEntityPacket;
import net.minecraft.tileentity.ITickableTileEntity;
import net.minecraft.tileentity.LockableLootTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.IItemProvider;
import net.minecraft.util.NonNullList;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TranslationTextComponent;
public class DisplayTE extends TileEntity implements ITickableTileEntity, INamedContainerProvider{
public static int slot = 1;
@Nonnull
public ArrayList<String> list;
protected NonNullList<ItemStack> items = NonNullList.withSize(slot, ItemStack.EMPTY);
public DisplayTE(TileEntityType<?> tet) {
super(tet);
java.lang.System.out.println("Item-put");
LogManager.getLogger(System.modid).info("Item-put");
items.add(new ItemStack(new IItemProvider() {
@Override
public Item asItem() {
return Items.ACACIA_BOAT;
}
}));
}
public DisplayTE() {
this(net.lager.system.init.TileEntity.display.get());
}
@Override
public void tick() {
super.getUpdatePacket();
}
@Override
public CompoundNBT getUpdateTag() {
return this.save(new CompoundNBT());
}
@Override
public SUpdateTileEntityPacket getUpdatePacket() {
CompoundNBT compoundnbt = this.getUpdateTag();
return new SUpdateTileEntityPacket(this.worldPosition, 2, compoundnbt);
}
/* @Override
protected ITextComponent getDefaultName() {
return new TranslationTextComponent("container."+ System.modid + ".display");
}
@Override
protected NonNullList<ItemStack> getItems() {
return this.items;
}
@Override
protected void setItems(NonNullList<ItemStack> p_199721_1_) {
this.items = p_199721_1_;
}*/
@Override
public CompoundNBT save(CompoundNBT p_189515_1_) {
super.save(p_189515_1_);
// if (!this.trySaveLootTable(p_189515_1_)) {
// ItemStackHelper.saveAllItems(p_189515_1_, this.items);
// }
LogManager.getLogger().info("save-start");
java.lang.System.out.println("save-start");
ListNBT listnbt = new ListNBT();
LogManager.getLogger(System.modid).info(listnbt.getElementType());
int i = 0;
for (String s:list) {
System.out.println("save-write-" + i);
CompoundNBT compoundnbt = new CompoundNBT();
compoundnbt.putInt("id", i);
i++;
compoundnbt.putString("message", s);
listnbt.add(compoundnbt);
}
System.out.println("save-save");
p_189515_1_.put("Text", listnbt);
System.out.println("save-finished");
return p_189515_1_;
}
@Override
public void load(BlockState p_230337_1_, CompoundNBT p_230337_2_) {
super.load(p_230337_1_, p_230337_2_);
// this.items = NonNullList.withSize(getContainerSize(), ItemStack.EMPTY);
// if (!this.tryLoadLootTable(p_230337_2_)) {
// ItemStackHelper.loadAllItems(p_230337_2_, this.items);
// }
ListNBT lnbt = p_230337_2_.getList("Text", 10);
for(int i = 0; i < lnbt.size(); ++i) {
CompoundNBT compoundnbt = lnbt.getCompound(i);
String ms = compoundnbt.getString("message");
list.add(compoundnbt.getInt("id"), ms);
}
}
@Override
public Container createMenu(int p_createMenu_1_, PlayerInventory p_createMenu_2_, PlayerEntity p_createMenu_3_) {
return new DisplayC(p_createMenu_1_, p_createMenu_2_, this);
}
@Override
public ITextComponent getDisplayName() {
return null;
}
}
Block Class:
package net.lager.system.common.block;
import net.lager.system.common.te.DisplayTE;
import net.minecraft.block.AbstractBlock;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.World;
import net.minecraftforge.fml.network.NetworkHooks;
public class DisplayBlock extends Block{
public DisplayBlock() {
super(AbstractBlock.Properties.of(Material.BAMBOO));
}
@Override
public boolean hasTileEntity(BlockState state) {
return true;
}
@Override
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
return net.lager.system.init.TileEntity.display.get().create();
}
@SuppressWarnings("deprecation")
@Override
public ActionResultType use(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_,
PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) {
if (!p_225533_2_.isClientSide) {
TileEntity te = p_225533_2_.getBlockEntity(p_225533_3_);
if (te instanceof DisplayTE) {
NetworkHooks.openGui((ServerPlayerEntity) p_225533_4_, (DisplayTE) te, p_225533_3_);
}
}
return super.use(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_);
}
}
DisplayC Class:
package net.lager.system.common.container;
import java.util.Objects;
import net.lager.system.common.te.DisplayTE;
import net.lager.system.init.Block;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.network.PacketBuffer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IWorldPosCallable;
public class DisplayC extends Container{
public PlayerInventory inv;
public static DisplayTE te;
private final IWorldPosCallable canInteractWithCallable;
@SuppressWarnings("static-access")
public DisplayC(final int window, final PlayerInventory inv, final DisplayTE te) {
super(net.lager.system.init.Container.display.get(), window);
this.te = te;
this.canInteractWithCallable = IWorldPosCallable.create(te.getLevel(), te.getBlockPos());
this.inv = inv;
for (int row = 0; row<3; row ++) {
for (int col = 0; col < 9;col++) {
this.addSlot(new Slot(inv, col + row * 9 + 9, 8 + col * 18, 166 - (4 - row) * 18 - 10));
}
}
for (int col = 0; col < 9;col++) {
this.addSlot(new Slot(inv, col, 8 + col * 18, 142));
}
}
public DisplayC(final int window, final PlayerInventory inv, final PacketBuffer data) {
this(window, inv, getTileEntity(inv, data));
}
private static DisplayTE getTileEntity(final PlayerInventory playerInventory, final PacketBuffer data){
Objects.requireNonNull(playerInventory, "Player Inventory cannot be null");
Objects.requireNonNull(data, "Packet Buffer cannot be null");
@SuppressWarnings("unused")
final TileEntity tileEntity = playerInventory.player.level.getBlockEntity(data.readBlockPos());
if (te instanceof DisplayTE) {
return (DisplayTE) te;
}
throw new IllegalStateException("Tile Entity is not correct");
}
@Override
public boolean stillValid(PlayerEntity p_75145_1_) {
return stillValid(canInteractWithCallable, p_75145_1_, Block.ITEM.get());
}
@Override
public ItemStack quickMoveStack(PlayerEntity p_82846_1_, int p_82846_2_) {
ItemStack stack = ItemStack.EMPTY;
Slot slot = this.slots.get(p_82846_2_);
if (slot != null && slot.hasItem()) {
ItemStack stack2 = slot.getItem();
stack = stack2.copy();
if (p_82846_2_ < DisplayTE.slot && !this.moveItemStackTo(stack2, DisplayTE.slot, this.slots.size(), true)) {
return ItemStack.EMPTY;
}
if (!this.moveItemStackTo(stack2, 0, DisplayTE.slot, false)) {
return ItemStack.EMPTY;
}
if (stack2.isEmpty()) {
slot.set(ItemStack.EMPTY);
}else {
slot.setChanged();
}
}
return stack;
}
}
DisplayS Class:
package net.lager.system.client.screen;
import java.util.HashMap;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
import net.lager.system.System;
import net.lager.system.Textfeld.TextContainerScreen;
import net.lager.system.Textfeld.Textfeld;
import net.lager.system.common.container.DisplayC;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.widget.TextFieldWidget;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public class DisplayS extends TextContainerScreen<DisplayC>{
public static HashMap<String, TextFieldWidget> guistate = new HashMap<String, TextFieldWidget>();
private static final ResourceLocation Display_Gui = new ResourceLocation(System.modid, "/textures/gui/display.png");
private Textfeld textfeld;
public DisplayS(DisplayC p_i51105_1_, PlayerInventory p_i51105_2_, ITextComponent p_i51105_3_) {
super(p_i51105_1_, p_i51105_2_, p_i51105_3_); this.leftPos = 0;
this.topPos = 0;
this.inventoryLabelX = 175;
this.inventoryLabelY = 201;
}
@SuppressWarnings("deprecation")
@Override
protected void renderBg(MatrixStack p_230450_1_, float p_230450_2_, int p_230450_3_, int p_230450_4_) {
RenderSystem.color4f(1, 1, 1, 1);
// RenderSystem.defaultBlendFunc();
Minecraft.getInstance().getTextureManager().bind(Display_Gui);
int k = (this.width - this.inventoryLabelX) / 2;
int l = (this.height - this.inventoryLabelY) / 2;
// this.blit(p_230450_1_, k, l, 0, 0, this.inventoryLabelX, this.titleLabelY);
}
@Override
protected void renderLabels(MatrixStack p_230451_1_, int p_230451_2_, int p_230451_3_) {
}
@Override
public void render(MatrixStack p_230430_1_, int p_230430_2_, int p_230430_3_, float p_230430_4_) {
this.renderBackground(p_230430_1_);
super.render(p_230430_1_, p_230430_2_, p_230430_3_, p_230430_4_);
this.renderLabels(p_230430_1_, p_230430_2_, p_230430_3_);
textfeld.getText( 0 , -300 , this, p_230430_1_, 100);
}
@SuppressWarnings("static-access")
@Override
public void init(Minecraft p_231158_1_, int p_231158_2_, int p_231158_3_) {
super.init(p_231158_1_, p_231158_2_, p_231158_3_);
if (getMenu().te.list == null) {
textfeld = new Textfeld(true);
} else {
textfeld = new Textfeld(true, getMenu().te.list);
}
this.minecraft.keyboardHandler.setSendRepeatsToGui(true);
}
@Override
public boolean keyPressed(int key, int b, int c) {
textfeld.keyPressed(key);
java.lang.System.out.println(key);
if (key == 256) {
return false;
}
return true;
}
@Override
public void tick() {
super.tick();
textfeld.tick();
}
@SuppressWarnings("static-access")
@Override
public void onClose() {
super.onClose();
this.minecraft.keyboardHandler.setSendRepeatsToGui(false);
getMenu().te.list = textfeld.getArray();
java.lang.System.out.println("save");
}
@Override
public boolean mouseClicked(double p_231044_1_, double p_231044_3_, int p_231044_5_) {
textfeld.Click(p_231044_1_ - 200, p_231044_3_ - 100);
return super.mouseClicked(p_231044_1_, p_231044_3_, p_231044_5_);
}
}
TileEntity Registerclass:
package net.lager.system.init;
import net.lager.system.System;
import net.lager.system.common.te.DisplayTE;
import net.minecraft.tileentity.TileEntityType;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
public class TileEntity {
public static final DeferredRegister<TileEntityType<?>> tileentity = DeferredRegister.create(ForgeRegistries.TILE_ENTITIES, System.modid);
public static final RegistryObject<TileEntityType<DisplayTE>> display = tileentity.register("display", () -> TileEntityType.Builder.of(DisplayTE::new, Block.ITEM.get()).build(null));
}
Container Registerclass:
package net.lager.system.init;
import net.lager.system.System;
import net.lager.system.common.container.DisplayC;
import net.minecraft.inventory.container.ContainerType;
import net.minecraftforge.common.extensions.IForgeContainerType;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
public class Container {
public static final DeferredRegister<ContainerType<?>> container = DeferredRegister.create(ForgeRegistries.CONTAINERS, System.modid);
public static final RegistryObject<ContainerType<DisplayC>> display = container.register("dc", () -> IForgeContainerType.create(DisplayC::new));
}
Block RegisterClass:
package net.lager.system.init;
import net.lager.system.System;
import net.lager.system.common.block.ControllerBlock;
import net.lager.system.common.block.DisplayBlock;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
public class Block {
public static final DeferredRegister<net.minecraft.block.Block> block = DeferredRegister.create(ForgeRegistries.BLOCKS, System.modid);
public static final RegistryObject<DisplayBlock> ITEM = block.register("display", () -> new DisplayBlock());
public static final RegistryObject<ControllerBlock> Controller = block.register("controller", () -> new ControllerBlock());
}
Have fun reading through