BlockEntities fixes

This commit is contained in:
Aleksey 2021-06-03 17:00:32 +03:00
parent 7ce25e1bd3
commit d3c3e88614
7 changed files with 386 additions and 372 deletions

View file

@ -8,7 +8,7 @@ yarn_mappings=6
loader_version=0.11.3
# Mod Properties
mod_version = 0.1.13
mod_version = 0.1.14
maven_group = ru.bclib
archives_base_name = bclib

View file

@ -0,0 +1,28 @@
package ru.bclib.blockentities;
import com.google.common.collect.Sets;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import java.util.Collections;
import java.util.Set;
import java.util.function.Supplier;
public class DynamicBlockEntityType<T extends BlockEntity> extends BlockEntityType<T> {
private final Set<Block> validBlocks = Sets.newHashSet();
public DynamicBlockEntityType(Supplier<? extends T> supplier) {
super(supplier, Collections.emptySet(), null);
}
@Override
public boolean isValid(Block block) {
return validBlocks.contains(block);
}
public void registerBlock(Block block) {
validBlocks.add(block);
}
}

View file

@ -1,24 +1,11 @@
package ru.bclib.client;
import java.util.Arrays;
import net.fabricmc.api.ClientModInitializer;
import ru.bclib.blocks.BaseChestBlock;
import ru.bclib.blocks.BaseSignBlock;
import ru.bclib.client.render.BaseChestBlockEntityRenderer;
import ru.bclib.client.render.BaseSignBlockEntityRenderer;
import ru.bclib.registry.BaseBlockEntities;
import ru.bclib.registry.BaseBlockEntityRenders;
public class BCLibClient implements ClientModInitializer {
@Override
public void onInitializeClient() {
BaseBlockEntityRenders.register();
Arrays.stream(BaseBlockEntities.getChests()).forEach(chest -> {
BaseChestBlockEntityRenderer.registerRenderLayer((BaseChestBlock) chest);
});
Arrays.stream(BaseBlockEntities.getSigns()).forEach(sign -> {
BaseSignBlockEntityRenderer.registerRenderLayer((BaseSignBlock) sign);
});
}
}

View file

@ -155,7 +155,7 @@ public class BaseChestBlockEntityRenderer extends BlockEntityRenderer<BaseChestB
return provider.getBuffer(getChestTexture(chestType, layers));
}
public static void registerRenderLayer(BaseChestBlock block) {
public static void registerRenderLayer(Block block) {
ResourceLocation blockId = Registry.BLOCK.getKey(block);
String modId = blockId.getNamespace();
String path = blockId.getPath();

View file

@ -100,7 +100,7 @@ public class BaseSignBlockEntityRenderer extends BlockEntityRenderer<BaseSignBlo
return provider.getBuffer(LAYERS.getOrDefault(block, defaultLayer));
}
public static void registerRenderLayer(BaseSignBlock block) {
public static void registerRenderLayer(Block block) {
ResourceLocation blockId = Registry.BLOCK.getKey(block);
RenderType layer = RenderType.entitySolid(new ResourceLocation(blockId.getNamespace(),
"textures/entity/sign/" + blockId.getPath() + ".png"));
@ -108,6 +108,6 @@ public class BaseSignBlockEntityRenderer extends BlockEntityRenderer<BaseSignBlo
}
static {
defaultLayer = RenderType.entitySolid(new ResourceLocation("textures/entity/sign/oak.png"));
defaultLayer = RenderType.entitySolid(new ResourceLocation("textures/entity/signs/oak.png"));
}
}

View file

@ -7,27 +7,23 @@ import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import ru.bclib.BCLib;
import ru.bclib.blockentities.BaseBarrelBlockEntity;
import ru.bclib.blockentities.BaseChestBlockEntity;
import ru.bclib.blockentities.BaseFurnaceBlockEntity;
import ru.bclib.blockentities.BaseSignBlockEntity;
import ru.bclib.blockentities.*;
import ru.bclib.blocks.BaseBarrelBlock;
import ru.bclib.blocks.BaseChestBlock;
import ru.bclib.blocks.BaseFurnaceBlock;
import ru.bclib.blocks.BaseSignBlock;
public class BaseBlockEntities {
public static final BlockEntityType<BaseChestBlockEntity> CHEST = registerBlockEntityType(BCLib.makeID("chest"),
BlockEntityType.Builder.of(BaseChestBlockEntity::new, getChests()));
public static final BlockEntityType<BaseBarrelBlockEntity> BARREL = registerBlockEntityType(BCLib.makeID("barrel"),
BlockEntityType.Builder.of(BaseBarrelBlockEntity::new, getBarrels()));
public static final BlockEntityType<BaseSignBlockEntity> SIGN = registerBlockEntityType(BCLib.makeID("sign"),
BlockEntityType.Builder.of(BaseSignBlockEntity::new, getSigns()));
public static final BlockEntityType<BaseFurnaceBlockEntity> FURNACE = registerBlockEntityType(BCLib.makeID("furnace"),
BlockEntityType.Builder.of(BaseFurnaceBlockEntity::new, getFurnaces()));
import java.util.Arrays;
import java.util.function.Supplier;
public static <T extends BlockEntity> BlockEntityType<T> registerBlockEntityType(ResourceLocation blockId, BlockEntityType.Builder<T> builder) {
return Registry.register(Registry.BLOCK_ENTITY_TYPE, blockId, builder.build(null));
public class BaseBlockEntities {
public static final DynamicBlockEntityType<BaseChestBlockEntity> CHEST = registerBlockEntityType(BCLib.makeID("chest"), BaseChestBlockEntity::new);
public static final DynamicBlockEntityType<BaseBarrelBlockEntity> BARREL = registerBlockEntityType(BCLib.makeID("barrel"), BaseBarrelBlockEntity::new);
public static final DynamicBlockEntityType<BaseSignBlockEntity> SIGN = registerBlockEntityType(BCLib.makeID("sign"), BaseSignBlockEntity::new);
public static final DynamicBlockEntityType<BaseFurnaceBlockEntity> FURNACE = registerBlockEntityType(BCLib.makeID("furnace"), BaseFurnaceBlockEntity::new);
public static <T extends BlockEntity> DynamicBlockEntityType<T> registerBlockEntityType(ResourceLocation typeId, Supplier<? extends T> supplier) {
return Registry.register(Registry.BLOCK_ENTITY_TYPE, typeId, new DynamicBlockEntityType<>(supplier));
}
public static void register() {}

View file

@ -22,6 +22,9 @@
"entrypoints": {
"main": [
"ru.bclib.BCLib"
],
"client": [
"ru.bclib.client.BCLibClient"
]
},
"mixins": [