Jump to content

[1.15.2] Trouble with BlockStates


AnZaNaMa

Recommended Posts

Hello, I'm having some troubles getting simple BlockStates to work in 1.15.2 (forge 31.1.1). Currently, I'm trying to get a simple rotatable block. Originally, I tried using the official Forge ReadTheDocs, but I've noticed that the Forge documentation is SEVERAL MAJOR VERSIONS out of date. The readthedocs says that the documentation is for 1.15.x, but most of the information in there is clearly out of date. All of the references it makes use the old naming scheme, and it often tells you to use methods that no longer exist.

 

I was following the instructions on the docs, but that tutorial says you have to implement getMetaFromState and getStateFromMeta, which are methods that don't exist in this version. I found Cabidoo's 1.15.2 example mod repository, so I've been trying to follow what they've done there with their ModFurnaceBlock.

 

For some reason when the game loads, I get errors saying that 'facing' is an unknown blockstate property, even though it's one of the built-in ones.

 

[22:48:40] [Server-Worker-2/WARN] [minecraft/ModelBakery]: Exception loading blockstate definition: 'smartshops:blockstates/trade_terminal.json' in resourcepack: 'Mod Resources' for variant: 'facing=south': Unknown blockstate property: 'facing'
[22:48:40] [Server-Worker-2/WARN] [minecraft/ModelBakery]: Exception loading blockstate definition: 'smartshops:blockstates/trade_terminal.json' in resourcepack: 'Mod Resources' for variant: 'facing=east': Unknown blockstate property: 'facing'
[22:48:40] [Server-Worker-2/WARN] [minecraft/ModelBakery]: Exception loading blockstate definition: 'smartshops:blockstates/trade_terminal.json' in resourcepack: 'Mod Resources' for variant: 'facing=north': Unknown blockstate property: 'facing'
[22:48:40] [Server-Worker-2/WARN] [minecraft/ModelBakery]: Exception loading blockstate definition: 'smartshops:blockstates/trade_terminal.json' in resourcepack: 'Mod Resources' for variant: 'facing=west': Unknown blockstate property: 'facing'
[22:48:40] [Server-Worker-2/WARN] [minecraft/ModelBakery]: Exception loading blockstate definition: 'smartshops:blockstates/trade_terminal.json' missing model for variant: 'smartshops:trade_terminal#'

 

I'm assuming the last message is only a problem because the BlockState variants failed to load properly. Also, the texture shows up as a full cube with the purple and black missing texture in game.

 

Here are the relevant files to my problem: TradeTerminalBlock, trade_terminal.json (blockstate file), trade_terminal.json (model file).

 

Also, is there an updated version of the documentation anywhere, or even just a set of update notes, telling what's changed since whenever the last time the docs were updated was?

- Just because things are the way they are doesn't mean they can't be the way you want them to be. Unless they're aspen trees. You can tell they're aspens 'cause the way they are.

Link to comment
Share on other sites

I think your jsons are wrong, both of them probably. Just look at the json files of a vanilla block that does what you want and copy that would be my suggestion.
As an example, here are the crafting table jsons:
That the blockstate I believe:

{
    "variants": {
        "": { "model": "block/crafting_table" }
    }
}

And this is the model:
 

{
    "parent": "block/cube",
    "textures": {
        "particle": "block/crafting_table_front",
        "down": "block/oak_planks",
        "up": "block/crafting_table_top",
        "north": "block/crafting_table_front",
        "east": "block/crafting_table_side",
        "south": "block/crafting_table_side",
        "west": "block/crafting_table_front"
    }
}

Try that I guess!

Edit: Just checked, you are using a "HorizontalBlock", so just check the jsons of any vanilla HorizontalBlock, the Crafting Table might be something else!

Edited by Slashking
Link to comment
Share on other sites

I checked out the Loom, because it uses HorizontalBlock

 

Loom BlockState:

{
    "variants": {
        "facing=north": { "model": "block/loom" },
        "facing=south": { "model": "block/loom", "y": 180 },
        "facing=west":  { "model": "block/loom", "y": 270 },
        "facing=east":  { "model": "block/loom", "y": 90 }
    }
}

 

Loom Model:

{
    "parent": "block/orientable",
    "textures": {
        "top": "block/loom_top",
        "bottom": "block/loom_bottom",
        "front": "block/loom_front",
        "side": "block/loom_side"
    }
}

 

As you can see, my blockstate is almost exactly the same as what's used in Vanilla, but for some reason, minecraft still isn't recognizing the BlockState property.

 

Do I need to register my block to tell the game it uses that property somehow? I've implemented fillStateContainer, getStateForPlacement, and I set the default state in my constructor.

- Just because things are the way they are doesn't mean they can't be the way you want them to be. Unless they're aspen trees. You can tell they're aspens 'cause the way they are.

Link to comment
Share on other sites

Huh, that's rather strange, I felt like your jsons look weird, but I guess that's actually how they're supposed to look then. You do seem to apply one less texture though in your model class, I'm counting 3 lines in yours and 4 in the loom's model class, might that be it? Maybe it's erroring out because one of the directions it needs isn't defined

Edit:
Unless I am completely wrong, this might be the problem:
 

public static final RegistryObject<Block> TRADE_TERMINAL = BLOCKS.register("trade_terminal", () -> new Block(Block.Properties.create(Material.ROCK).hardnessAndResistance(3.0F, 3.0F).sound(SoundType.STONE)));

You initialize a regular Block here, instead of your custom one

Edited by Slashking
Link to comment
Share on other sites

Oh wow I'm stupid. Yeah, originally I was just using the normal block class. Guess I forgot to change it after I made my custom block class. I've changed it to TradeTerminalBlock and that's solved my problems. However, I still have a couple of questions.

 

First off, it seems like the game is somehow saving my blockstate's properties when I quit the world, but I haven't written anything to translate the blockstate into nbt or metadata or anything. How is this information saved, since getStateFromMeta and getMetaFromState no longer exist? If I were to create my own custom BlockState property, would it also auto-magically be saved, or do I need to implement something to accomplish that? Also, do i need to manually send packets to the client when a blockstate changes, or is that handled by the game automatically?

 

One more thing: Who's in charge of maintaining the Forge ReadTheDocs? I'd be willing to help contribute to update them if needed, since they're so out of date, but I don't know a ton.

- Just because things are the way they are doesn't mean they can't be the way you want them to be. Unless they're aspen trees. You can tell they're aspens 'cause the way they are.

Link to comment
Share on other sites

1 hour ago, AnZaNaMa said:

Who's in charge of maintaining the Forge ReadTheDocs? I'd be willing to help contribute to update them if needed, since they're so out of date, but I don't know a ton.

Also Forge.

https://github.com/MinecraftForge/Documentation

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

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



×
×
  • Create New...

Important Information

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