Terra (Fabric/Forge/Paper)

Terra (Fabric/Forge/Paper)

74.2k Downloads

Rotation of custom structures changes custom blocks inside them

crxyne opened this issue ยท 8 comments

commented
Name Value
Terra Version 5.4.1-BETA
Platform / Platform Version Paper
Any External Plugins or Mods NBTAPI, ParticleNativeAPI, Protocollib, worldedit & my own plugin to create custom blocks
Terra Packs In Use My own
Terra Addons In Use None

Issue Description

When adding custom structures in a pack, containing any custom block (overriden blocks through mushroom blockstates) and loading the structure with any rotation other than 0, the custom blocks change to other custom blocks with different blockstates. This includes the generation of these structures throughout the world. It's highly likely that this is caused by mushroom blocks connecting to other ones (which cannot be turned off, except when placing the block without causing a block update), however in my structure the custom blocks were entirely seperate from other custom blocks.

Steps to reproduce

  1. Export a structure as a .tesf file, which should contain a custom block.
  2. Either let it generate on its own, or load it with a rotation that isn't 0.
  3. The custom block will randomly morph into another and have other blockstates.

Expected behavior

The custom block should stay the way it is in the .tesf file.

Actual behavior

The custom block loses its saved blockstates and gets other ones, morphing it into another custom block.

Full stacktrace

No exceptions thrown.

Additional details

Normally the custom blocks have these states:
grafik
grafik

However loading the structure with a nonzero rotation (or generating it with a random rotation) causes this to happen:
grafik
grafik

Edit:
Even after removing all plugins except worldedit and Terra, the issue persists.

commented

It seems the plugin is using the rotation of mushrooms as different blocks.

The best solution to this would be to add some means to configure an "exclusion" for the rotation behaviour, as in all other circumstances, you'd want it to be rotated.

commented

Also,

Terra Packs In Use: My own

and

my own plugin to create custom blocks

does not help.

Could you upload both of these for testing?

commented

Ah, my bad. I thought there wasn't a means to do that.

commented

@dfsek imo this shouldn't be a "won't fix"

I don't think that adding a "do not rotate this block" feature is that bad of an idea. There may be some instances where it is wanted.

commented

This is working as intended; the blocks are being rotated. If you don't want those particular blocks to be rotated, you are able to do that with TerraScript.

commented

This is working as intended; the blocks are being rotated. If you don't want those particular blocks to be rotated, you are able to do that with TerraScript.

Ah thanks. Alright then, but how would I do that?

commented

This is working as intended; the blocks are being rotated. If you don't want those particular blocks to be rotated, you are able to do that with TerraScript.

I just tried doing it using the state() function, right after the block() in the .tesf file:
state(14, y + 1, 34, "down=false, east=false,north=false,south=true,up=true,west=true");
which didn't work; Then I tried only putting the false blockstates:
state(14, y + 1, 34, "down=false, east=false,north=false");
which also didn't work, it just ignored the state() function. I searched all around the wiki and I still can't find a way to do this.

commented

you would use the rotation() function. You really shouldn't have components of structures be unrotated while others are rotated, if you really want to you though can use an if block on the output of rotation().