Jump to content

[1.16.5] Custom Signs


TamsynnImogen

Recommended Posts

Hi all ive been trying to get a custom sign to work for a while and just cant seem to get it. The latest attempt ive got as far as load or create world and just crashes stating that other items arnt present (no idea what that means since there all there and work find when ive disabled the custom sign stuff)

 

heres the github repo as probably easier to see what ive got there

https://github.com/TamsynnImogen/NetherFarming

Link to comment
Share on other sites

  1. Do not put DeferredRegister and its entries in separate classes. That prevents you needing to use that terrible "empty method so the static initializers run" hack. Drop whatever tutorial taught you this.
  2. Forge has a test mod that shows you how to make custom signs: https://github.com/MinecraftForge/MinecraftForge/blob/1.16.x/src/test/java/net/minecraftforge/debug/block/CustomSignsTest.java.
Link to comment
Share on other sites

1) thats potentially my fault just trying to figure things out and messing things up (i think ive tried like 4 different ways to try and get these to work

2) pretty sure thats what ive used this time just had to up date some minor bits like stackTo(16) to maxStackSize(16) etc

Link to comment
Share on other sites

  • 4 weeks later...

so i got custom signs to work if i use a vanilla wood type. when i try and add my own wood type i get an error upon loading a world that states that theres missing registered blocks when there present

 

@Mod(NetherFarming.MOD_ID)
public class ModWoodTypes {

    public static final String MOD_ID = "netherfarming";

    public static final WoodType BLOODBARK = WoodType.create(new ResourceLocation(MOD_ID, "signs").toString());
    private void clientSetup(final FMLClientSetupEvent event)
        {
            ClientRegistry.bindTileEntityRenderer(ModTileEntitites.SIGN_TILE_ENTITIES.get(), SignTileEntityRenderer::new);
            event.enqueueWork(() -> {
                Atlases.addWoodType(BLOODBARK);
            });
        }

    private void commonSetup(final FMLCommonSetupEvent event)
    {
        event.enqueueWork(() -> WoodType.register(BLOODBARK));
    }
}

full project code (minus the custom woodtype code

https://github.com/TamsynnImogen/NetherFarming

Link to comment
Share on other sites

  • The practice of putting RegistryObjects in separate classes from their DeferredRegister and then using an empty register method is absolutely ugly. The f***ing tutorial that promotes this needs to be put down or something. Put your RegistryObjects in the same class as their DeferredRegister. Then you do not need this hack.
  • How am I supposed to test something if that very thing is what you left out of your repository? :D
Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now


×
×
  • Create New...

Important Information

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