I am migrating a mod from 1.16.5 to 1.20.2
The version for 1.16.5 can be found here https://github.com/beothorn/automataCraft
For the block called automata_start, it uses TileEntities and has blockstates, model/block and textures on json files.
This is currently working fine on 1.16.5 https://github.com/beothorn/automataCraft/tree/master/src/main/resources/assets/automata
For 1.20.2 I migrated the logic from TileEntities to BlockEntity.
The mod is working fine. All blocks and Items are working with the correct textures except for the textures for each state of the automata_start block.
No changes where made to the json files. This is the branch I am working on (there were some refactorings, but all is basically the same):
https://github.com/beothorn/automataCraft/tree/1_20/src/main/resources/assets/automata
The only difference I can think that may be related is that i had to implement createBlockStateDefinition on the BaseEntityBlock:
https://github.com/beothorn/automataCraft/blob/1_20/src/main/java/br/com/isageek/automata/automata/AutomataStartBlock.java#L43
This is driving me crazy.
I know the jsons are being loaded as I put a breakpoint at `net.minecraft.client.resources.model.ModelBakery#loadModel` and I can see BlockModelDefinition.fromJsonElement being called with automata_start.
I also printed the state from the arguments of the tick function call and they look correct (https://github.com/beothorn/automataCraft/blob/1_20/src/main/java/br/com/isageek/automata/automata/Ticker.java#L32 ):
blockState Block{automata:automata_start}[state=loadreplaceables]
In game, all I see is the no textures. I think it is weird it is not the "missing texture" texture so I think it may be related to the material, but I had no success tweaking it (https://github.com/beothorn/automataCraft/blob/1_20/src/main/java/br/com/isageek/automata/automata/AutomataStartBlock.java#L37).
public static final Property<AutomataStartState> state = EnumProperty.create("state", AutomataStartState.class);
private final AtomicReference<RegistryObject<BlockEntityType<?>>> blockEntityType;
private final Map<String, RegistryObject<Block>> registeredBlocks;
public AutomataStartBlock(
final AtomicReference<RegistryObject<BlockEntityType<?>>> blockEntityType,
final Map<String, RegistryObject<Block>> registeredBlocks
) {
super(BlockBehaviour.Properties.of().mapColor(MapColor.STONE).strength(1.5F, 6.0F));
this.blockEntityType = blockEntityType;
this.registeredBlocks = registeredBlocks;
this.registerDefaultState(this.getStateDefinition().any().setValue(state, AutomataStartState.LOAD_REPLACEABLES));
}
@Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> stateBuilder) {
stateBuilder.add(state);
}
So my cry for help is, anyone has any ideas?
Is there a way to easily debug this, for example somewhere where I can list the textures for a given state, or make sure this is loaded?
Thanks in advance for the hints