BlockEntities fixes
This commit is contained in:
parent
7ce25e1bd3
commit
d3c3e88614
7 changed files with 386 additions and 372 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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() {}
|
||||
|
|
|
@ -22,6 +22,9 @@
|
|||
"entrypoints": {
|
||||
"main": [
|
||||
"ru.bclib.BCLib"
|
||||
],
|
||||
"client": [
|
||||
"ru.bclib.client.BCLibClient"
|
||||
]
|
||||
},
|
||||
"mixins": [
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue