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
|
loader_version=0.11.3
|
||||||
|
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version = 0.1.13
|
mod_version = 0.1.14
|
||||||
maven_group = ru.bclib
|
maven_group = ru.bclib
|
||||||
archives_base_name = 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;
|
package ru.bclib.client;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
|
|
||||||
import net.fabricmc.api.ClientModInitializer;
|
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;
|
import ru.bclib.registry.BaseBlockEntityRenders;
|
||||||
|
|
||||||
public class BCLibClient implements ClientModInitializer {
|
public class BCLibClient implements ClientModInitializer {
|
||||||
@Override
|
@Override
|
||||||
public void onInitializeClient() {
|
public void onInitializeClient() {
|
||||||
BaseBlockEntityRenders.register();
|
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));
|
return provider.getBuffer(getChestTexture(chestType, layers));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void registerRenderLayer(BaseChestBlock block) {
|
public static void registerRenderLayer(Block block) {
|
||||||
ResourceLocation blockId = Registry.BLOCK.getKey(block);
|
ResourceLocation blockId = Registry.BLOCK.getKey(block);
|
||||||
String modId = blockId.getNamespace();
|
String modId = blockId.getNamespace();
|
||||||
String path = blockId.getPath();
|
String path = blockId.getPath();
|
||||||
|
|
|
@ -100,7 +100,7 @@ public class BaseSignBlockEntityRenderer extends BlockEntityRenderer<BaseSignBlo
|
||||||
return provider.getBuffer(LAYERS.getOrDefault(block, defaultLayer));
|
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);
|
ResourceLocation blockId = Registry.BLOCK.getKey(block);
|
||||||
RenderType layer = RenderType.entitySolid(new ResourceLocation(blockId.getNamespace(),
|
RenderType layer = RenderType.entitySolid(new ResourceLocation(blockId.getNamespace(),
|
||||||
"textures/entity/sign/" + blockId.getPath() + ".png"));
|
"textures/entity/sign/" + blockId.getPath() + ".png"));
|
||||||
|
@ -108,6 +108,6 @@ public class BaseSignBlockEntityRenderer extends BlockEntityRenderer<BaseSignBlo
|
||||||
}
|
}
|
||||||
|
|
||||||
static {
|
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.BlockEntity;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||||
import ru.bclib.BCLib;
|
import ru.bclib.BCLib;
|
||||||
import ru.bclib.blockentities.BaseBarrelBlockEntity;
|
import ru.bclib.blockentities.*;
|
||||||
import ru.bclib.blockentities.BaseChestBlockEntity;
|
|
||||||
import ru.bclib.blockentities.BaseFurnaceBlockEntity;
|
|
||||||
import ru.bclib.blockentities.BaseSignBlockEntity;
|
|
||||||
import ru.bclib.blocks.BaseBarrelBlock;
|
import ru.bclib.blocks.BaseBarrelBlock;
|
||||||
import ru.bclib.blocks.BaseChestBlock;
|
import ru.bclib.blocks.BaseChestBlock;
|
||||||
import ru.bclib.blocks.BaseFurnaceBlock;
|
import ru.bclib.blocks.BaseFurnaceBlock;
|
||||||
import ru.bclib.blocks.BaseSignBlock;
|
import ru.bclib.blocks.BaseSignBlock;
|
||||||
|
|
||||||
public class BaseBlockEntities {
|
import java.util.Arrays;
|
||||||
public static final BlockEntityType<BaseChestBlockEntity> CHEST = registerBlockEntityType(BCLib.makeID("chest"),
|
import java.util.function.Supplier;
|
||||||
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()));
|
|
||||||
|
|
||||||
public static <T extends BlockEntity> BlockEntityType<T> registerBlockEntityType(ResourceLocation blockId, BlockEntityType.Builder<T> builder) {
|
public class BaseBlockEntities {
|
||||||
return Registry.register(Registry.BLOCK_ENTITY_TYPE, blockId, builder.build(null));
|
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() {}
|
public static void register() {}
|
||||||
|
|
|
@ -22,6 +22,9 @@
|
||||||
"entrypoints": {
|
"entrypoints": {
|
||||||
"main": [
|
"main": [
|
||||||
"ru.bclib.BCLib"
|
"ru.bclib.BCLib"
|
||||||
|
],
|
||||||
|
"client": [
|
||||||
|
"ru.bclib.client.BCLibClient"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"mixins": [
|
"mixins": [
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue