Jump to content

[1.16.5] Trying to open invalid screen with name


RInventor7

Recommended Posts

I was about to test my GUI in game, but when I right clicked on the block I got this following message. Any idea what have I done wrong and where? Thanks!

[Render thread/WARN] [minecraft/ScreenManager]: Trying to open invalid screen with name: ticket_container

Block class

package com.rinventor.transportmod.objects.tileentities.ticket_machine;


import com.rinventor.transportmod.init.ModTileEntities;
import com.rinventor.transportmod.objects.blocks.BBDirectionalOp;

import io.netty.buffer.Unpooled;
import net.minecraft.block.BlockState;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.InventoryHelper;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.INamedContainerProvider;
import net.minecraft.network.PacketBuffer;
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.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.World;
import net.minecraftforge.fml.network.NetworkHooks;

public class TicketMachineBlock extends BBDirectionalOp  {

	public TicketMachineBlock() {
		super(Properties.create(Material.IRON)
				.sound(SoundType.METAL)
				.setLightLevel(s -> 15)
		);
	}
	
	@Override
	public boolean hasTileEntity(BlockState state) {
		return true;
	}
	
	@Override
	public TileEntity createTileEntity(BlockState state, IBlockReader world) {
		return ModTileEntities.TICKET_MACHINE.get().create();
	}

	@Override
	public int getOpacity(BlockState state, IBlockReader worldIn, BlockPos pos) {
		return 15;
	}
	
	@Override
	public ActionResultType onBlockActivated(BlockState blockstate, World world, BlockPos pos, PlayerEntity entity, Hand hand, BlockRayTraceResult hit) {
		super.onBlockActivated(blockstate, world, pos, entity, hand, hit);
		int x = pos.getX();
		int y = pos.getY();
		int z = pos.getZ();
		if (entity instanceof ServerPlayerEntity) {
			NetworkHooks.openGui((ServerPlayerEntity) entity, new INamedContainerProvider() {
				@Override
				public ITextComponent getDisplayName() {
					return new StringTextComponent("ticket_container");
				}

				@Override
				public Container createMenu(int id, PlayerInventory inventory, PlayerEntity player) {
					return new TicketContainer(id, inventory, new PacketBuffer(Unpooled.buffer()).writeBlockPos(new BlockPos(x, y, z)));
				}
			}, new BlockPos(x, y, z));
		}
		return ActionResultType.SUCCESS;

	}

	@Override
	public INamedContainerProvider getContainer(BlockState state, World worldIn, BlockPos pos) {
		TileEntity tileEntity = worldIn.getTileEntity(pos);
		return tileEntity instanceof INamedContainerProvider ? (INamedContainerProvider) tileEntity : null;
	}

	@Override
	public boolean eventReceived(BlockState state, World world, BlockPos pos, int eventID, int eventParam) {
		super.eventReceived(state, world, pos, eventID, eventParam);
		TileEntity tileentity = world.getTileEntity(pos);
		return tileentity == null ? false : tileentity.receiveClientEvent(eventID, eventParam);
	}

	@SuppressWarnings("deprecation")
	@Override
	public void onReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean isMoving) {
		if (state.getBlock() != newState.getBlock()) {
			TileEntity tileentity = world.getTileEntity(pos);
			if (tileentity instanceof TicketMachineTile) {
				InventoryHelper.dropInventoryItems(world, pos, (IInventory) tileentity);
				world.updateComparatorOutputLevel(pos, this);
			}
			super.onReplaced(state, world, pos, newState, isMoving);
		}
	}

	@Override
	public boolean hasComparatorInputOverride(BlockState state) {
		return true;
	}

	@Override
	public int getComparatorInputOverride(BlockState blockState, World world, BlockPos pos) {
		TileEntity tileentity = world.getTileEntity(pos);
		if (tileentity instanceof TicketMachineTile)
			return Container.calcRedstoneFromInventory((IInventory) tileentity);
		else
			return 0;
	}

}

TileEntity class

package com.rinventor.transportmod.objects.tileentities.ticket_machine;

import java.util.stream.IntStream;

import javax.annotation.Nullable;

import com.rinventor.transportmod.init.ModTileEntities;

import io.netty.buffer.Unpooled;
import net.minecraft.block.BlockState;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.inventory.ItemStackHelper;
import net.minecraft.inventory.container.Container;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.PacketBuffer;
import net.minecraft.network.play.server.SUpdateTileEntityPacket;
import net.minecraft.tileentity.LockableLootTileEntity;
import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.Direction;
import net.minecraft.util.NonNullList;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.wrapper.SidedInvWrapper;

public class TicketMachineTile extends LockableLootTileEntity implements ISidedInventory {
	
	private NonNullList<ItemStack> stacks = NonNullList.<ItemStack>withSize(3, ItemStack.EMPTY);

	public TicketMachineTile(TileEntityType<?> typeIn) {
		super(typeIn);
	}
	
	public TicketMachineTile() {
		this(ModTileEntities.TICKET_MACHINE.get());
	}
	
	@Override
	public void read(BlockState state, CompoundNBT compound) {
		super.read(state, compound);
		if (!this.checkLootAndRead(compound)) {
			this.stacks = NonNullList.withSize(this.getSizeInventory(), ItemStack.EMPTY);
		}
		ItemStackHelper.loadAllItems(compound, this.stacks);

	}
	
	@Override
	public CompoundNBT write(CompoundNBT compound) {
		super.write(compound);
		if (!this.checkLootAndWrite(compound)) {
			ItemStackHelper.saveAllItems(compound, this.stacks);
		}
		return compound;
	}
	
	@Override
	public SUpdateTileEntityPacket getUpdatePacket() {
		return new SUpdateTileEntityPacket(this.pos, 0, this.getUpdateTag());
	}

	@Override
	public CompoundNBT getUpdateTag() {
		return this.write(new CompoundNBT());
	}

	@Override
	public void onDataPacket(NetworkManager net, SUpdateTileEntityPacket pkt) {
		this.read(this.getBlockState(), pkt.getNbtCompound());
	}

	@Override
	public int getSizeInventory() {
		return stacks.size();
	}

	@Override
	public boolean isEmpty() {
		for (ItemStack itemstack : this.stacks)
			if (!itemstack.isEmpty())
				return false;
		return true;
	}

	@Override
	public ITextComponent getDefaultName() {
		return new StringTextComponent("ticket_container");
	}

	@Override
	public int getInventoryStackLimit() {
		return 64;
	}

	@Override
	public Container createMenu(int id, PlayerInventory player) {
		return new TicketContainer(id, player, new PacketBuffer(Unpooled.buffer()).writeBlockPos(this.getPos()));
	}

	@Override
	public ITextComponent getDisplayName() {
		return new TranslationTextComponent("block.transportmod.ticket_machine");
	}

	@Override
	protected NonNullList<ItemStack> getItems() {
		return this.stacks;
	}

	@Override
	protected void setItems(NonNullList<ItemStack> stacks) {
		this.stacks = stacks;
	}

	@Override
	public boolean isItemValidForSlot(int index, ItemStack stack) {
		return true;
	}

	@Override
	public int[] getSlotsForFace(Direction side) {
		return IntStream.range(0, this.getSizeInventory()).toArray();
	}

	@Override
	public boolean canInsertItem(int index, ItemStack stack, @Nullable Direction direction) {
		return this.isItemValidForSlot(index, stack);
	}

	@Override
	public boolean canExtractItem(int index, ItemStack stack, Direction direction) {
		return true;
	}

	private final LazyOptional<? extends IItemHandler>[] handlers = SidedInvWrapper.create(this, Direction.values());

	@Override
	public <T> LazyOptional<T> getCapability(Capability<T> capability, @Nullable Direction facing) {
		if (!this.removed && facing != null && capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY)
			return handlers[facing.ordinal()].cast();
		return super.getCapability(capability, facing);
	}

	@Override
	public void remove() {
		super.remove();
		for (LazyOptional<? extends IItemHandler> handler : handlers)
			handler.invalidate();
	}
	
}

Container class

package com.rinventor.transportmod.objects.tileentities.ticket_machine;

import java.util.HashMap;
import java.util.Map;
import java.util.function.Supplier;

import com.rinventor.transportmod.accessibility.TransportDBG;
import com.rinventor.transportmod.init.ModNetwork;
import com.rinventor.transportmod.network.ticket_machine.TicketSlotMessage;

import net.minecraft.block.Blocks;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.ContainerType;
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.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.ItemStackHandler;
import net.minecraftforge.items.SlotItemHandler;

public class TicketContainer extends Container implements Supplier<Map<Integer, Slot>> {
	private final PlayerEntity playerEntity;
	private IItemHandler internal;
	World world;
	PlayerEntity entity;
	int x, y, z;
	private Map<Integer, Slot> customSlots = new HashMap<>();
	private boolean bound = false;

	@SuppressWarnings("unchecked")
	public TicketContainer(int id, PlayerInventory inv, PacketBuffer extraData) {
		super(new ContainerType<>(new TicketContainerFactory()), id);
		this.entity = inv.player;
		this.world = inv.player.world;
		this.internal = new ItemStackHandler(3);
		BlockPos pos = null;
		if (extraData != null) {
			pos = extraData.readBlockPos();
			this.x = pos.getX();
			this.y = pos.getY();
			this.z = pos.getZ();
		}
		if (pos != null) {
			if (extraData.readableBytes() == 1) { // bound to item
				byte hand = extraData.readByte();
				ItemStack itemstack;
				if (hand == 0)
					itemstack = this.entity.getHeldItemMainhand();
				else
					itemstack = this.entity.getHeldItemOffhand();
				itemstack.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> {
					this.internal = capability;
					this.bound = true;
				});
			} else if (extraData.readableBytes() > 1) {
				extraData.readByte(); // drop padding
				Entity entity = world.getEntityByID(extraData.readVarInt());
				if (entity != null)
					entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> {
						this.internal = capability;
						this.bound = true;
					});
			} else { // might be bound to block
				TileEntity ent = inv.player != null ? inv.player.world.getTileEntity(pos) : null;
				if (ent != null) {
					ent.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> {
						this.internal = capability;
						this.bound = true;
					});
				}
			}
		}
		this.customSlots.put(0, this.addSlot(new SlotItemHandler(internal, 0, 15, 21) {
			@Override
			public void onSlotChanged() {
				super.onSlotChanged();
				TicketContainer.this.slotChanged(0, 0, 0);
			}

			@Override
			public boolean isItemValid(ItemStack stack) {
				return (Blocks.DIAMOND_BLOCK.asItem() == stack.getItem());
			}
		}));
		this.customSlots.put(1, this.addSlot(new SlotItemHandler(internal, 1, 39, 21) {
			@Override
			public void onSlotChanged() {
				super.onSlotChanged();
				TicketContainer.this.slotChanged(1, 0, 0);
			}

			@Override
			public ItemStack onTake(PlayerEntity entity, ItemStack stack) {
				ItemStack retval = super.onTake(entity, stack);
				TicketContainer.this.slotChanged(1, 1, 0);
				return retval;
			}

			@Override
			public boolean isItemValid(ItemStack stack) {
				return false;
			}
		}));
		this.customSlots.put(2, this.addSlot(new SlotItemHandler(internal, 2, 127, 21) {
			@Override
			public boolean canTakeStack(PlayerEntity player) {
				return false;
			}

			@Override
			public boolean isItemValid(ItemStack stack) {
				return false;
			}
		}));
		this.playerEntity = inv.player;

		int si;
		int sj;
		for (si = 0; si < 3; ++si)
			for (sj = 0; sj < 9; ++sj)
				this.addSlot(new Slot(inv, sj + (si + 1) * 9, 0 + 8 + sj * 18, 0 + 84 + si * 18));
		for (si = 0; si < 9; ++si)
			this.addSlot(new Slot(inv, si, 0 + 8 + si * 18, 0 + 142));
	}

	@Override
	public boolean canInteractWith(PlayerEntity player) {
		return true;
	}

    private static final int HOTBAR_SLOT_COUNT = 9;
    private static final int PLAYER_INVENTORY_ROW_COUNT = 3;
    private static final int PLAYER_INVENTORY_COLUMN_COUNT = 9;
    private static final int PLAYER_INVENTORY_SLOT_COUNT = PLAYER_INVENTORY_COLUMN_COUNT * PLAYER_INVENTORY_ROW_COUNT;
    private static final int VANILLA_SLOT_COUNT = HOTBAR_SLOT_COUNT + PLAYER_INVENTORY_SLOT_COUNT;
    private static final int VANILLA_FIRST_SLOT_INDEX = 0;
    private static final int TE_INVENTORY_FIRST_SLOT_INDEX = VANILLA_FIRST_SLOT_INDEX + VANILLA_SLOT_COUNT;
    private static final int TE_INVENTORY_SLOT_COUNT = 3;  // must match TileEntityInventoryBasic.NUMBER_OF_SLOTS

    @Override
    public ItemStack transferStackInSlot(PlayerEntity playerIn, int index) {
        Slot sourceSlot = inventorySlots.get(index);
        if (sourceSlot == null || !sourceSlot.getHasStack()) return ItemStack.EMPTY;  //EMPTY_ITEM
        ItemStack sourceStack = sourceSlot.getStack();
        ItemStack copyOfSourceStack = sourceStack.copy();

        // Check if the slot clicked is one of the vanilla container slots
        if (index < VANILLA_FIRST_SLOT_INDEX + VANILLA_SLOT_COUNT) {
            // This is a vanilla container slot so merge the stack into the tile inventory
            if (!mergeItemStack(sourceStack, TE_INVENTORY_FIRST_SLOT_INDEX, TE_INVENTORY_FIRST_SLOT_INDEX
                    + TE_INVENTORY_SLOT_COUNT, false)) {
                return ItemStack.EMPTY;  // EMPTY_ITEM
            }
        } else if (index < TE_INVENTORY_FIRST_SLOT_INDEX + TE_INVENTORY_SLOT_COUNT) {
            // This is a TE slot so merge the stack into the players inventory
            if (!mergeItemStack(sourceStack, VANILLA_FIRST_SLOT_INDEX, VANILLA_FIRST_SLOT_INDEX + VANILLA_SLOT_COUNT, false)) {
                return ItemStack.EMPTY;
            }
        } else {
            TransportDBG.Dbg("Invalid slotIndex:" + index);
            return ItemStack.EMPTY;
        }
        // If stack size == 0 (the entire stack was moved) set slot contents to null
        if (sourceStack.getCount() == 0) {
            sourceSlot.putStack(ItemStack.EMPTY);
        } else {
            sourceSlot.onSlotChanged();
        }
        sourceSlot.onTake(playerEntity, sourceStack);
        return copyOfSourceStack;
    }

    public Map<Integer, Slot> get() {
		return customSlots;
	}

    @Override
	protected boolean mergeItemStack(ItemStack stack, int startIndex, int endIndex, boolean reverseDirection) {
		boolean flag = false;
		int i = startIndex;
		if (reverseDirection) {
			i = endIndex - 1;
		}
		if (stack.isStackable()) {
		while (!stack.isEmpty()) {
			if (reverseDirection) {
				if (i < startIndex) {
					break;
				}
			} else if (i >= endIndex) {
				break;
			}
			Slot slot = this.inventorySlots.get(i);
			ItemStack itemstack = slot.getStack();
			if (slot.isItemValid(itemstack) && !itemstack.isEmpty() && areItemsAndTagsEqual(stack, itemstack)) {
				int j = itemstack.getCount() + stack.getCount();
				int maxSize = Math.min(slot.getSlotStackLimit(), stack.getMaxStackSize());
				if (j <= maxSize) {
					stack.setCount(0);
					itemstack.setCount(j);
					slot.putStack(itemstack);
					flag = true;
				} 
				else if (itemstack.getCount() < maxSize) {
					stack.shrink(maxSize - itemstack.getCount());
					itemstack.setCount(maxSize);
					slot.putStack(itemstack);
					flag = true;
				}
			}
			if (reverseDirection) { --i; } 
			else { ++i; }
		}
	}
	if (!stack.isEmpty()) {
		if (reverseDirection) { i = endIndex - 1; } 
		else { i = startIndex; }
		while (true) {
			if (reverseDirection) {
				if (i < startIndex) {
					break;
				}
			} else if (i >= endIndex) {
				break;
			}
			Slot slot1 = this.inventorySlots.get(i);
			ItemStack itemstack1 = slot1.getStack();
			if (itemstack1.isEmpty() && slot1.isItemValid(stack)) {
				if (stack.getCount() > slot1.getSlotStackLimit()) {
					slot1.putStack(stack.split(slot1.getSlotStackLimit()));
				} else {
					slot1.putStack(stack.split(stack.getCount()));
				}
				slot1.onSlotChanged();
				flag = true;
				break;
			}
			if (reverseDirection) { --i; } 
			else { ++i; }
		}
	}
	return flag;
	}
	
    @Override
	public void onContainerClosed(PlayerEntity playerIn) {
		super.onContainerClosed(playerIn);
		if (!bound && (playerIn instanceof ServerPlayerEntity)) {
			if (!playerIn.isAlive() || playerIn instanceof ServerPlayerEntity && ((ServerPlayerEntity) playerIn).hasDisconnected()) {
				for (int j = 0; j < internal.getSlots(); ++j) {
					playerIn.dropItem(internal.extractItem(j, internal.getStackInSlot(j).getCount(), false), false);
				}
			} else {
				for (int i = 0; i < internal.getSlots(); ++i) {
					playerIn.inventory.placeItemBackInInventory(playerIn.world,
							internal.extractItem(i, internal.getStackInSlot(i).getCount(), false));
				}
			}
		}
	}

	private void slotChanged(int slotid, int ctype, int meta) {
		if (this.world != null && this.world.isRemote()) {
			ModNetwork.PACKET_HANDLER.sendToServer(new TicketSlotMessage(slotid, x, y, z, ctype, meta));
			TicketMachineEvents.slotItemChanged(slotid, this.world, x, y, z, entity);
		}
	}

	
}

ContainerFactory class

package com.rinventor.transportmod.objects.tileentities.ticket_machine;

import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.network.PacketBuffer;
import net.minecraftforge.fml.network.IContainerFactory;

public class TicketContainerFactory implements IContainerFactory {

	public TicketContainer create(int id, PlayerInventory inv, PacketBuffer extraData) {
		return new TicketContainer(id, inv, extraData);
	}
	
}

Screen class

package com.rinventor.transportmod.objects.tileentities.ticket_machine;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
import com.rinventor.transportmod.init.ModNetwork;
import com.rinventor.transportmod.network.ticket_machine.TicketButtonMessage;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.TranslationTextComponent;

public class TicketScreen extends ContainerScreen<TicketContainer> {
	private static final ResourceLocation texture = new ResourceLocation("transportmod:textures/ticket_menu.png");
	private int x, y, z;
	private PlayerEntity entity;


	public TicketScreen(TicketContainer container, PlayerInventory inventory, ITextComponent titleIn) {
		super(container, inventory, titleIn);
		this.x = container.x;
		this.y = container.y;
		this.z = container.z;
		this.entity = container.entity;
		this.xSize = 176;
		this.ySize = 166;
	}
	
	@Override
	public void render(MatrixStack ms, int mouseX, int mouseY, float partialTicks) {
		this.renderBackground(ms);
		super.render(ms, mouseX, mouseY, partialTicks);
		this.renderHoveredTooltip(ms, mouseX, mouseY);
	}
	
	@Override
	protected void drawGuiContainerBackgroundLayer(MatrixStack ms, float partialTicks, int gx, int gy) {
		RenderSystem.color4f(1, 1, 1, 1);
		RenderSystem.enableBlend();
		RenderSystem.defaultBlendFunc();
		Minecraft.getInstance().getTextureManager().bindTexture(texture);
		int k = (this.width - this.xSize) / 2;
		int l = (this.height - this.ySize) / 2;
		TicketScreen.blit(ms, k, l, 0, 0, this.xSize, this.ySize, this.xSize, this.ySize);
		RenderSystem.disableBlend();
	}

	@Override
	public boolean keyPressed(int key, int b, int c) {
		if (key == 256) {
			this.minecraft.player.closeScreen();
			return true;
		}
		return super.keyPressed(key, b, c);
	}

	@Override
	public void tick() {
		super.tick();
	}

	@Override
	protected void drawGuiContainerForegroundLayer(MatrixStack ms, int mouseX, int mouseY) {
		this.font.drawString(ms, new TranslationTextComponent("transportmod.ticket_machine.tickets").toString(), 119, 9, -12829636);
		this.font.drawString(ms, new TranslationTextComponent("transportmod.transport_factory.price").toString(), 15, 9, -12829636);
		this.font.drawString(ms, new TranslationTextComponent("container.inventory").toString(), 7, 61, -12829636);
	}

	@Override
	public void onClose() {
		super.onClose();
		Minecraft.getInstance().keyboardListener.enableRepeatEvents(false);
	}

	@Override
	public void init(Minecraft minecraft, int width, int height) {
		super.init(minecraft, width, height);
		minecraft.keyboardListener.enableRepeatEvents(true);
		this.addButton(new Button(this.guiLeft + 75, this.guiTop + 20, 40, 20, new StringTextComponent("->"), e -> {
			if (true) {
				ModNetwork.PACKET_HANDLER.sendToServer(new TicketButtonMessage(0, x, y, z));
				TicketButtonMessage.handleButtonAction(entity, 0, x, y, z);
			}
		}));
	}
	
}

Container registring

package com.rinventor.transportmod.init;

import com.rinventor.transportmod.TransportMod;
import com.rinventor.transportmod.objects.tileentities.ticket_machine.TicketContainer;

import io.netty.buffer.Unpooled;
import net.minecraft.inventory.container.ContainerType;
import net.minecraft.network.PacketBuffer;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.common.extensions.IForgeContainerType;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;

public class ModContainers {
	
	public static final DeferredRegister<ContainerType<?>> CONTAINERS = DeferredRegister.create(ForgeRegistries.CONTAINERS, TransportMod.MOD_ID);
	
	public static final RegistryObject<ContainerType<TicketContainer>> TICKET_CONTAINER = CONTAINERS.register("ticket_container", 
			() -> IForgeContainerType.create(((windowId, inv, data) -> {
				BlockPos pos = data.readBlockPos();
				return new TicketContainer(windowId, inv, new PacketBuffer(Unpooled.buffer()).writeBlockPos(pos));
			})));
	
}

Main class

 public TransportMod() 
    {
    	final IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();

    	ModBlocks.BLOCKS.register(bus);
    	ModTileEntities.TILE_ENTITIES.register(bus);
    	ModContainers.CONTAINERS.register(bus);
    	ModEntities.ENTITIES.register(bus);
    	
    	instance_m = this;
    	MinecraftForge.EVENT_BUS.register(this);
    }
    
    @SubscribeEvent
    public static void onRegisterEntities(final RegistryEvent.Register<EntityType<?>> event) {
    }
    
	
	@SubscribeEvent
	public void clientSetup(final FMLClientSetupEvent event) {
    	event.enqueueWork(() -> {
        	ScreenManager.registerFactory(ModContainers.TICKET_CONTAINER.get(), TicketScreen::new);
    	});
    }

 

Link to comment
Share on other sites

It's still giving the same error. Maybe I'm still registring my screen wrong?

@Mod("transportmod")
@Mod.EventBusSubscriber(modid = TransportMod.MOD_ID, bus = Bus.MOD)
public class TransportMod
{
    public static final String MOD_ID = "transportmod";
    public static TransportMod instance_m;

    public TransportMod() 
    {
    	final IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
    	
    	bus.addListener(this::commonSetup);
    	bus.addListener(this::clientSetup);
    	
    	ModItems.ITEMS.register(bus);
    	ModBlocks.BLOCKS.register(bus);
    	ModTileEntities.TILE_ENTITIES.register(bus);
    	ModContainers.CONTAINERS.register(bus);
    	
    	instance_m = this;
    	MinecraftForge.EVENT_BUS.register(this);
    }
    
    @SubscribeEvent
	public void commonSetup(final FMLCommonSetupEvent event) {
		event.enqueueWork(ModNetwork::init);
    }
	
	@SubscribeEvent
	public void clientSetup(final FMLClientSetupEvent event) {
    	event.enqueueWork(() -> {
        	ScreenManager.registerFactory(ModContainers.TICKET_CONTAINER.get(), TicketScreen::new);
    	});
    }

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I installed forge and few mods, created a world and everything was doing okay then few hours ago I wanted to add more and got four that is diagnal fences, suplementaries, mcw lights and sophisticatedbackpacks. When I was loading the mods one by one I noticed that a MixinExtras thing appeared (which I believe was not there when looking at the mod list in game but I could be wrong about that) and then when I tried loading up the world that I modded first I had an error. I reinstalled forge, reinstalled mods. I can generate a whole new world and everything works fine but that one specific world. First I had put all of the libraries, installed some more, then added mods and still I can't load that world. I don't know anything about these things and I don't know what to do. Is there even anything I could do or is it a lost cause? Crash report: https://paste.ee/p/1ETiF
    • Recent testing for a new minecraft modpack has been hitting a snag. the beta version of https://www.curseforge.com/minecraft/modpacks/growing-villages-2 i have been running into issues with a few errors i cant seem to get past. see logs latest https://pastebin.com/jqWtHtw5 Debug https://drive.google.com/file/d/1hf6S3NMrZ50KT3TTmxfPQTA63I3ljPLs/view?usp=sharing specificly lines such as [02Dec2023 21:10:32.700] [Server thread/WARN] [net.dries007.tfc.util.calendar.Calendar/]: Calendar is out of sync - trying to fix: Calendar = false, Daylight = false, Sync = 6 Attempted to load class net/minecraft/client/Minecraft for invalid dist DEDICATED_SERVER [main/WARN] [mixin/]: Error loading class: vectorwing/farmersdelight/client/renderer/CanvasSignRenderer (a mod i have removed entirely. ) i am unable to get the server to load to the point a client can connect but client side works as normal. it feels like a client mod is still enabled but i cant seem to trace it down. any help is appreciated.
    • Hi, I was wondering if you could expand on this? I'm trying to remove the clouds from my custom dimension but I don't really know where to start.
    • My server console: INFO java.lang.NullPointerException: Cannot invoke "net.minecraft.server.level.ServerLevel.m_6857_()" because "serverlevel2" is null 02.12 22:25:44 [Server] net.minecraft.server.MinecraftServer.m_129885_(MinecraftServer.java:513) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:? {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A} 02.12 22:25:44 [Server] net.minecraft.server.MinecraftServer.m_7041_(MinecraftServer.java:584) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:? {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A} 02.12 22:25:44 [Server] net.minecraft.server.dedicated.DedicatedServer.m_7041_(DedicatedServer.java:510) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:? {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:tombstone.mixins.json:DedicatedServerMixin,pl:mixin:A} 02.12 22:25:44 [Server] net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:689) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:? {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A} 02.12 22:25:44 [Multicraft] Server shut down (running) 02.12 22:25:44 [Multicraft] Not restarting crashed server. 02.12 22:25:44 [Multicraft] Stopping server! 02.12 22:25:46 [Multicraft] Server stopped ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Crash file:  ---- Minecraft Crash Report ---- // Oops. Time: 2023-12-02 22:25:43 Description: Exception in server tick loop java.lang.NullPointerException: Cannot invoke "com.google.gson.JsonArray.iterator()" because "$$1" is null     at net.minecraft.server.players.StoredUserList.m_11399_(StoredUserList.java:121) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:classloading}     at net.minecraft.server.dedicated.DedicatedPlayerList.m_139596_(DedicatedPlayerList.java:85) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:classloading}     at net.minecraft.server.dedicated.DedicatedPlayerList.<init>(DedicatedPlayerList.java:24) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:classloading}     at net.minecraft.server.dedicated.DedicatedServer.m_7038_(DedicatedServer.java:158) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:tombstone.mixins.json:DedicatedServerMixin,pl:mixin:A}     at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:634) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A}     at net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:251) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A}     at java.lang.Thread.run(Thread.java:833) ~[?:?] {re:mixin} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details:     Minecraft Version: 1.20.1     Minecraft Version ID: 1.20.1     Operating System: Linux (amd64) version 4.15.0-206-generic     Java Version: 17, Oracle Corporation     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), Oracle Corporation     Memory: 554926416 bytes (529 MiB) / 1665138688 bytes (1588 MiB) up to 6442450944 bytes (6144 MiB)     CPUs: 24     Processor Vendor: AuthenticAMD     Processor Name: AMD Ryzen 9 3900X 12-Core Processor     Identifier: AuthenticAMD Family 23 Model 113 Stepping 0     Microarchitecture: Zen 2     Frequency (GHz): -0.00     Number of physical packages: 1     Number of physical CPUs: 12     Number of logical CPUs: 24     Graphics card #0 name: ASPEED Graphics Family     Graphics card #0 vendor: ASPEED Technology, Inc. (0x1a03)     Graphics card #0 VRAM (MB): 0.00     Graphics card #0 deviceId: 0x2000     Graphics card #0 versionInfo: unknown     Virtual memory max (MB): 70588.73     Virtual memory used (MB): 99740.80     Swap memory total (MB): 6144.00     Swap memory used (MB): 46.75     JVM Flags: 2 total; -Xmx6144M -Xms512M     Server Running: true     Data Packs: vanilla, mod:betterdungeons, mod:villagesandpillages (incompatible), mod:supermartijn642configlib (incompatible), mod:mutantmonsters, mod:rechiseled (incompatible), mod:geckolib, mod:jei, mod:graveyard (incompatible), mod:libraryferret, mod:goblintraders (incompatible), mod:dynamiclights (incompatible), mod:sophisticatedcore (incompatible), mod:reap, mod:waystones, mod:monsterplus (incompatible), mod:forgeendertech, mod:structory, mod:journeymap (incompatible), mod:citadel (incompatible), mod:alexsmobs (incompatible), mod:artifacts, mod:yungsapi, mod:mixinextras (incompatible), mod:dungeoncrawl, mod:sophisticatedbackpacks (incompatible), mod:balm, mod:terralith, mod:fusion, mod:usefulslime (incompatible), mod:imst, mod:puzzlesaccessapi, mod:betterfortresses, mod:cloth_config (incompatible), mod:forge, mod:twilightforest, mod:supplementaries, mod:geophilic, mod:athena, mod:dungeons_arise, mod:chipped (incompatible), mod:vanillaplustools (incompatible), mod:moonlight (incompatible), mod:mixinsquared (incompatible), mod:jade (incompatible), mod:creativecore, mod:sleep_tight (incompatible), mod:supermartijn642corelib (incompatible), mod:curios (incompatible), mod:brutalbosses (incompatible), mod:securitycraft, mod:bettervillage, mod:elevatorid, mod:betterstrongholds, mod:tombstone, mod:resourcefullib (incompatible), mod:architectury (incompatible), mod:appleskin (incompatible), mod:cupboard (incompatible), mod:puzzleslib, mod:jadeaddons (incompatible), mod:framework, mod:expandability (incompatible), mod:bettermineshafts, mod:playerrevive, mod:cristellib (incompatible), Supplementaries Generated Pack, mutantmonsters:biome_modifications     Enabled Feature Flags: minecraft:vanilla     World Generation: Experimental     Is Modded: Definitely; Server brand changed to 'forge'     Type: Dedicated Server (map_server.txt)     ModLauncher: 10.0.9+10.0.9+main.dcd20f30     ModLauncher launch target: forgeserver     ModLauncher naming: srg     ModLauncher services:          mixin-0.8.5.jar mixin PLUGINSERVICE          eventbus-6.0.5.jar eventbus PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar slf4jfixer PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar object_holder_definalize PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar runtime_enum_extender PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar capability_token_subclass PLUGINSERVICE          accesstransformers-8.0.4.jar accesstransformer PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar runtimedistcleaner PLUGINSERVICE          modlauncher-10.0.9.jar mixin TRANSFORMATIONSERVICE          modlauncher-10.0.9.jar fml TRANSFORMATIONSERVICE      FML Language Providers:          minecraft@1.0         lowcodefml@null         javafml@null     Mod List:          YungsBetterDungeons-1.20-Forge-4.0.3.jar          |YUNG's Better Dungeons        |betterdungeons                |1.20-Forge-4.0.3    |DONE      |Manifest: NOSIGNATURE         villagesandpillages-forge-mc1.20.1-1.0.0.jar      |Villages&Pillages             |villagesandpillages           |1.0.0               |DONE      |Manifest: NOSIGNATURE         supermartijn642configlib-1.1.8-forge-mc1.20.jar   |SuperMartijn642's Config Libra|supermartijn642configlib      |1.1.8               |DONE      |Manifest: NOSIGNATURE         MutantMonsters-v8.0.4-1.20.1-Forge.jar            |Mutant Monsters               |mutantmonsters                |8.0.4               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         rechiseled-1.1.5c-forge-mc1.20.jar                |Rechiseled                    |rechiseled                    |1.1.5c              |DONE      |Manifest: NOSIGNATURE         geckolib-forge-1.20.1-4.2.4.jar                   |GeckoLib 4                    |geckolib                      |4.2.4               |DONE      |Manifest: NOSIGNATURE         jei-1.20.1-forge-15.2.0.27.jar                    |Just Enough Items             |jei                           |15.2.0.27           |DONE      |Manifest: NOSIGNATURE         The_Graveyard_2.6.2_(FORGE)_for_1.20+.jar         |The Graveyard                 |graveyard                     |2.6.2               |DONE      |Manifest: NOSIGNATURE         libraryferret-forge-1.20.1-4.0.0.jar              |Library ferret                |libraryferret                 |4.0.0               |DONE      |Manifest: NOSIGNATURE         goblintraders-forge-1.20.1-1.9.3.jar              |Goblin Traders                |goblintraders                 |1.9.3               |DONE      |Manifest: 0d:78:5f:44:c0:47:0c:8c:e2:63:a3:04:43:d4:12:7d:b0:7c:35:37:dc:40:b1:c1:98:ec:51:eb:3b:3c:45:99         dynamiclights-1.20.1.2.jar                        |Dynamic Lights                |dynamiclights                 |1.20.1.2            |DONE      |Manifest: NOSIGNATURE         sophisticatedcore-1.20.1-0.5.107.496.jar          |Sophisticated Core            |sophisticatedcore             |0.5.107.496         |DONE      |Manifest: NOSIGNATURE         reap-1.20.1-1.0.2.jar                             |Reap Mod                      |reap                          |1.20.1-1.0.2        |DONE      |Manifest: NOSIGNATURE         waystones-forge-1.20-14.0.2.jar                   |Waystones                     |waystones                     |14.0.2              |DONE      |Manifest: NOSIGNATURE         MonsterPlus-Forge1.20.1-v1.1.6.1.jar              |Monster Plus                  |monsterplus                   |1.0                 |DONE      |Manifest: NOSIGNATURE         ForgeEndertech-1.20.1-11.1.0.0-build.0142.jar     |ForgeEndertech                |forgeendertech                |11.1.0.0            |DONE      |Manifest: NOSIGNATURE         Structory_1.20.2_v1.3.3.jar                       |Structory                     |structory                     |1.3.3               |DONE      |Manifest: NOSIGNATURE         journeymap-1.20.1-5.9.18-neoforge.jar             |Journeymap                    |journeymap                    |5.9.18              |DONE      |Manifest: NOSIGNATURE         citadel-2.4.9-1.20.1.jar                          |Citadel                       |citadel                       |2.4.9               |DONE      |Manifest: NOSIGNATURE         alexsmobs-1.22.6.jar                              |Alex's Mobs                   |alexsmobs                     |1.22.6              |DONE      |Manifest: NOSIGNATURE         artifacts-forge-9.2.0.jar                         |Artifacts                     |artifacts                     |9.2.0               |DONE      |Manifest: NOSIGNATURE         YungsApi-1.20-Forge-4.0.2.jar                     |YUNG's API                    |yungsapi                      |1.20-Forge-4.0.2    |DONE      |Manifest: NOSIGNATURE         mixinextras-forge-0.2.1-beta.2.jar                |MixinExtras                   |mixinextras                   |0.2.1-beta.2        |DONE      |Manifest: NOSIGNATURE         Dungeon+Crawl-1.20.1-2.3.14.jar                   |Dungeon Crawl                 |dungeoncrawl                  |2.3.14              |DONE      |Manifest: NOSIGNATURE         sophisticatedbackpacks-1.20.1-3.18.68.952.jar     |Sophisticated Backpacks       |sophisticatedbackpacks        |3.18.68.952         |DONE      |Manifest: NOSIGNATURE         balm-forge-1.20.1-7.1.4.jar                       |Balm                          |balm                          |7.1.4               |DONE      |Manifest: NOSIGNATURE         Terralith_1.20.2_v2.4.8.jar                       |Terralith                     |terralith                     |2.4.8               |DONE      |Manifest: NOSIGNATURE         fusion-1.1.0b-forge-mc1.20.1.jar                  |Fusion                        |fusion                        |1.1.0b              |DONE      |Manifest: NOSIGNATURE         UsefulSlime-forge-1.20.2-1.7.1.jar                |Useful Slime                  |usefulslime                   |1.7.1               |DONE      |Manifest: NOSIGNATURE         imst-2.1.0.jar                                    |Immersive Structures          |imst                          |2.1.0               |DONE      |Manifest: NOSIGNATURE         puzzlesaccessapi-forge-8.0.7.jar                  |Puzzles Access Api            |puzzlesaccessapi              |8.0.7               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         YungsBetterNetherFortresses-1.20-Forge-2.0.5.jar  |YUNG's Better Nether Fortresse|betterfortresses              |1.20-Forge-2.0.5    |DONE      |Manifest: NOSIGNATURE         cloth-config-11.1.106-forge.jar                   |Cloth Config v10 API          |cloth_config                  |11.1.106            |DONE      |Manifest: NOSIGNATURE         forge-1.20.1-47.2.8-universal.jar                 |Forge                         |forge                         |47.2.8              |DONE      |Manifest: 84:ce:76:e8:45:35:e4:0e:63:86:df:47:59:80:0f:67:6c:c1:5f:6e:5f:4d:b3:54:47:1a:9f:7f:ed:5e:f2:90         twilightforest-1.20.1-4.3.1893-universal.jar      |The Twilight Forest           |twilightforest                |4.3.1893            |DONE      |Manifest: NOSIGNATURE         supplementaries-1.20-2.6.31.jar                   |Supplementaries               |supplementaries               |1.20-2.6.31         |DONE      |Manifest: NOSIGNATURE         geophilic-v2.1.0-mc1.20u1.20.2.jar                |Geophilic                     |geophilic                     |2.1.0-mc1.20u1.20.2 |DONE      |Manifest: NOSIGNATURE         athena-forge-1.20.1-3.1.1.jar                     |Athena                        |athena                        |3.1.1               |DONE      |Manifest: NOSIGNATURE         DungeonsArise-1.20.1-2.1.57-release.jar           |When Dungeons Arise           |dungeons_arise                |2.1.57-1.20.1       |DONE      |Manifest: NOSIGNATURE         chipped-forge-1.20.1-3.0.1.jar                    |Chipped                       |chipped                       |3.0.1               |DONE      |Manifest: NOSIGNATURE         server-1.20.1-20230612.114412-srg.jar             |Minecraft                     |minecraft                     |1.20.1              |DONE      |Manifest: NOSIGNATURE         vanillaplustools-1.20-1.0.jar                     |Vanilla+ Tools                |vanillaplustools              |1.20-1.0            |DONE      |Manifest: NOSIGNATURE         moonlight-1.20-2.8.66-forge.jar                   |Moonlight Library             |moonlight                     |1.20-2.8.66         |DONE      |Manifest: NOSIGNATURE         mixinsquared-forge-0.1.1.jar                      |MixinSquared                  |mixinsquared                  |0.1.1               |DONE      |Manifest: NOSIGNATURE         Jade-1.20.1-forge-11.6.3.jar                      |Jade                          |jade                          |11.6.3              |DONE      |Manifest: NOSIGNATURE         CreativeCore_FORGE_v2.11.10_mc1.20.1.jar          |CreativeCore                  |creativecore                  |2.11.10             |DONE      |Manifest: NOSIGNATURE         sleep_tight-1.20-1.1.8.jar                        |Sleep Tight                   |sleep_tight                   |1.20-1.1.8          |DONE      |Manifest: NOSIGNATURE         supermartijn642corelib-1.1.15-forge-mc1.20.jar    |SuperMartijn642's Core Lib    |supermartijn642corelib        |1.1.15              |DONE      |Manifest: NOSIGNATURE         curios-forge-5.4.3+1.20.1.jar                     |Curios API                    |curios                        |5.4.3+1.20.1        |DONE      |Manifest: NOSIGNATURE         brutalbosses-1.20.1-6.6.jar                       |brutalbosses mod              |brutalbosses                  |1.20.1-6.6          |DONE      |Manifest: NOSIGNATURE         [1.20.1]+SecurityCraft+v1.9.8.jar                 |SecurityCraft                 |securitycraft                 |1.9.8               |DONE      |Manifest: NOSIGNATURE         bettervillage-forge-1.20.1-3.2.0 (1).jar          |Better village                |bettervillage                 |3.1.0               |DONE      |Manifest: NOSIGNATURE         elevatorid-1.20.1-lex-1.9.jar                     |Elevator Mod                  |elevatorid                    |1.20.1-lex-1.9      |DONE      |Manifest: NOSIGNATURE         YungsBetterStrongholds-1.20-Forge-4.0.3.jar       |YUNG's Better Strongholds     |betterstrongholds             |1.20-Forge-4.0.3    |DONE      |Manifest: NOSIGNATURE         tombstone-8.5.5-1.20.1.jar                        |Corail Tombstone              |tombstone                     |8.5.5               |DONE      |Manifest: NOSIGNATURE         resourcefullib-forge-1.20.1-2.1.18.jar            |Resourceful Lib               |resourcefullib                |2.1.18              |DONE      |Manifest: NOSIGNATURE         architectury-9.1.12-forge.jar                     |Architectury                  |architectury                  |9.1.12              |DONE      |Manifest: NOSIGNATURE         appleskin-forge-mc1.20.1-2.5.1.jar                |AppleSkin                     |appleskin                     |2.5.1+mc1.20.1      |DONE      |Manifest: NOSIGNATURE         cupboard-1.20.1-2.1.jar                           |Cupboard utilities            |cupboard                      |1.20.1-2.1          |DONE      |Manifest: NOSIGNATURE         PuzzlesLib-v8.1.9-1.20.1-Forge.jar                |Puzzles Lib                   |puzzleslib                    |8.1.9               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         JadeAddons-1.20.1-forge-5.2.1.jar                 |Jade Addons                   |jadeaddons                    |5.2.1               |DONE      |Manifest: NOSIGNATURE         framework-forge-1.20.1-0.6.16.jar                 |Framework                     |framework                     |0.6.16              |DONE      |Manifest: 0d:78:5f:44:c0:47:0c:8c:e2:63:a3:04:43:d4:12:7d:b0:7c:35:37:dc:40:b1:c1:98:ec:51:eb:3b:3c:45:99         expandability-forge-9.0.0.jar                     |ExpandAbility                 |expandability                 |9.0.0               |DONE      |Manifest: NOSIGNATURE         YungsBetterMineshafts-1.20-Forge-4.0.4.jar        |YUNG's Better Mineshafts      |bettermineshafts              |1.20-Forge-4.0.4    |DONE      |Manifest: NOSIGNATURE         PlayerRevive_FORGE_v2.0.19_mc1.20.1.jar           |PlayerRevive                  |playerrevive                  |2.0.19              |DONE      |Manifest: NOSIGNATURE         cristellib-1.1.5-forge.jar                        |Cristel Lib                   |cristellib                    |1.1.5               |DONE      |Manifest: NOSIGNATURE     Crash Report UUID: 0bd76986-5800-4dc8-8381-8851e0739175     FML: 47.2     Forge: net.minecraftforge:47.2.8
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.