Jump to content

Recommended Posts

Posted

Hello everyone! I am working on my first mod, a minimalistic thing that adds a trash bin custom block (The block, the custom gui for the block, recipe, a loot table, block item) to the game.

 

Everything is working in single player, but when I add it to the mods folder of my forge server, I get log messages that loading the recipes and loot tables fails because it doesn't find the items I'm referencing in them. I realise I am likely doing something wrong with where I'm registering the items, like reaching across the sides or something, but I can't figure out exactly what I should be doing differently.

 

The full server log is here https://pastebin.com/z6B0uwh8 but I think this is the relevant part:

...
[13:25:38.185] [Server thread/INFO] [minecraft/DedicatedServer]: Preparing level "world"
[13:25:38.369] [Server thread/INFO] [minecraft/SimpleReloadableResourceManager]: Reloading ResourceManager: trashbin-1.0.0.jar, forge-1.14.4-28.0.45-universal.jar, Default
[13:25:38.813] [Server thread/ERROR] [minecraft/RecipeManager]: Parsing error loading recipe trashbin:item_trashbin
com.google.gson.JsonSyntaxException: Unknown item 'trashbin:item_trashbin'
	at net.minecraft.item.crafting.ShapedRecipe.lambda$deserializeItem$0(ShapedRecipe.java:264) ~[?:?]
	at java.util.Optional.orElseThrow(Unknown Source) ~[?:1.8.0_221]
	...
...
[13:25:39.048] [Server thread/ERROR] [minecraft/LootTableManager]: Couldn't parse loot table trashbin:blocks/block_trashbin
com.google.gson.JsonSyntaxException: Expected name to be an item, was unknown string 'trashbin:item_trashbin'
	at net.minecraft.util.JSONUtils.func_219793_a(SourceFile:128) ~[?:?]
	at java.util.Optional.orElseThrow(Unknown Source) ~[?:1.8.0_221]
	...
...

 

So it seems to me it's loading the mod but "trashbin:item_trashbin" can't be found because it wasn't registered properly (?).

 

The full source can be found here https://github.com/PekkaAstala/minecraft-mod-trashbin but I think this is the relevant file:

@Mod("trashbin")
public class TrashbinMod
{
    private static final Logger LOGGER = LogManager.getLogger();

    public TrashbinMod() {
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::doClientStuff);
        MinecraftForge.EVENT_BUS.register(this);
    }

    private void doClientStuff(final FMLClientSetupEvent event) {
        ScreenManager.registerFactory(ModBlocks.TRASHBIN_CONTAINER, BlockTrashbinScreen::new);
    }

    @Mod.EventBusSubscriber(bus=Mod.EventBusSubscriber.Bus.MOD)
    public static class RegistryEvents {

        @SubscribeEvent
        public static void onBlocksRegistry(final RegistryEvent.Register<Block> event) {

            event.getRegistry().registerAll(
                new BlockTrashbin().setRegistryName(Reference.MODID, "block_trashbin")
            );

        }

        @SubscribeEvent
        public static void onTileEntityRegistry(final RegistryEvent.Register<TileEntityType<?>> event) {
            event.getRegistry().register(TileEntityType.Builder.create(BlockTrashbinTile::new, ModBlocks.TRASHBIN).build(null).setRegistryName("tile_trashbin"));
        }

        @SubscribeEvent
        public static void onItemsRegistry(final RegistryEvent.Register<Item> event) {
            event.getRegistry().registerAll(
                new BlockItem(
                    GameRegistry.findRegistry(Block.class).getValue(ResourceLocation.tryCreate("trashbin:block_trashbin")),
                    new Item.Properties()
                ).setRegistryName(Reference.MODID, "item_trashbin")
            );
        }

        @SubscribeEvent
        public static void onContainerRegistry(final RegistryEvent.Register<ContainerType<?>> event) {
            event.getRegistry().registerAll(
                IForgeContainerType.create(((windowId, inv, data) -> {
                    BlockPos pos = data.readBlockPos();
                    return new BlockTrashbinContainer(windowId, Minecraft.getInstance().world, pos, inv, Minecraft.getInstance().player);
                })).setRegistryName("container_trashbin")
            );
        }
    }
}

 

Could someone help me forward? I have read the basic docs on the forge site about sides and registries but I might need a code example of this being done right or something. Thank you!

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



×
×
  • Create New...

Important Information

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