Wooden Material
This commit is contained in:
parent
c20d0014cd
commit
6ec2b53edd
23 changed files with 388 additions and 5 deletions
|
@ -9,6 +9,7 @@ import net.minecraft.block.MaterialColor;
|
|||
import net.minecraft.sound.BlockSoundGroup;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.BlockView;
|
||||
import ru.betterend.blocks.basis.BlockBase;
|
||||
|
||||
public class AeterniumBlock extends BlockBase {
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import net.minecraft.block.Blocks;
|
|||
import net.minecraft.block.MaterialColor;
|
||||
import net.minecraft.sound.BlockSoundGroup;
|
||||
import net.minecraft.sound.SoundEvents;
|
||||
import ru.betterend.blocks.basis.BlockBase;
|
||||
|
||||
public class BlockTerrain extends BlockBase {
|
||||
public static final BlockSoundGroup TERRAIN_SOUND = new BlockSoundGroup(1.0F, 1.0F,
|
||||
|
|
|
@ -7,7 +7,6 @@ import java.util.Random;
|
|||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockRenderType;
|
||||
import net.minecraft.block.BlockState;
|
||||
|
@ -37,6 +36,7 @@ import net.minecraft.util.math.BlockPos;
|
|||
import net.minecraft.util.math.Direction;
|
||||
import net.minecraft.world.BlockView;
|
||||
import net.minecraft.world.World;
|
||||
import ru.betterend.blocks.basis.BaseBlockWithEntity;
|
||||
|
||||
public class EndStoneSmelter extends BaseBlockWithEntity {
|
||||
public static final DirectionProperty FACING = HorizontalFacingBlock.FACING;
|
||||
|
|
|
@ -9,6 +9,7 @@ import net.minecraft.block.MaterialColor;
|
|||
import net.minecraft.sound.BlockSoundGroup;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.BlockView;
|
||||
import ru.betterend.blocks.basis.BlockBase;
|
||||
|
||||
public class EnderBlock extends BlockBase {
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
|||
import net.minecraft.block.Material;
|
||||
import net.minecraft.block.MaterialColor;
|
||||
import net.minecraft.sound.BlockSoundGroup;
|
||||
import ru.betterend.blocks.basis.BlockBase;
|
||||
|
||||
public class TerminiteBlock extends BlockBase {
|
||||
public TerminiteBlock() {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package ru.betterend.blocks;
|
||||
package ru.betterend.blocks.basis;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
|
@ -1,4 +1,4 @@
|
|||
package ru.betterend.blocks;
|
||||
package ru.betterend.blocks.basis;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
33
src/main/java/ru/betterend/blocks/basis/BlockDoor.java
Normal file
33
src/main/java/ru/betterend/blocks/basis/BlockDoor.java
Normal file
|
@ -0,0 +1,33 @@
|
|||
package ru.betterend.blocks.basis;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.DoorBlock;
|
||||
import net.minecraft.block.enums.DoubleBlockHalf;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.loot.context.LootContext;
|
||||
import ru.betterend.client.ERenderLayer;
|
||||
import ru.betterend.client.IRenderTypeable;
|
||||
|
||||
public class BlockDoor extends DoorBlock implements IRenderTypeable {
|
||||
public BlockDoor(Block block) {
|
||||
super(FabricBlockSettings.copy(block).nonOpaque());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getDroppedStacks(BlockState state, LootContext.Builder builder) {
|
||||
if (state.get(HALF) == DoubleBlockHalf.LOWER)
|
||||
return Collections.singletonList(new ItemStack(this.asItem()));
|
||||
else
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ERenderLayer getRenderLayer() {
|
||||
return ERenderLayer.CUTOUT;
|
||||
}
|
||||
}
|
22
src/main/java/ru/betterend/blocks/basis/BlockFence.java
Normal file
22
src/main/java/ru/betterend/blocks/basis/BlockFence.java
Normal file
|
@ -0,0 +1,22 @@
|
|||
package ru.betterend.blocks.basis;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.FenceBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.loot.context.LootContext;
|
||||
|
||||
public class BlockFence extends FenceBlock {
|
||||
public BlockFence(Block source) {
|
||||
super(FabricBlockSettings.copyOf(source).nonOpaque());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getDroppedStacks(BlockState state, LootContext.Builder builder) {
|
||||
return Collections.singletonList(new ItemStack(this));
|
||||
}
|
||||
}
|
23
src/main/java/ru/betterend/blocks/basis/BlockGate.java
Normal file
23
src/main/java/ru/betterend/blocks/basis/BlockGate.java
Normal file
|
@ -0,0 +1,23 @@
|
|||
package ru.betterend.blocks.basis;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.FenceGateBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.loot.context.LootContext;
|
||||
|
||||
public class BlockGate extends FenceGateBlock
|
||||
{
|
||||
public BlockGate(Block source) {
|
||||
super(FabricBlockSettings.copyOf(source).nonOpaque());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getDroppedStacks(BlockState state, LootContext.Builder builder) {
|
||||
return Collections.singletonList(new ItemStack(this));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
package ru.betterend.blocks.basis;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.MaterialColor;
|
||||
import net.minecraft.block.PillarBlock;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.server.network.ServerPlayerEntity;
|
||||
import net.minecraft.sound.SoundCategory;
|
||||
import net.minecraft.sound.SoundEvents;
|
||||
import net.minecraft.util.ActionResult;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.hit.BlockHitResult;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class BlockLogStripable extends BlockPillar {
|
||||
private final Block striped;
|
||||
|
||||
public BlockLogStripable(MaterialColor color, Block striped) {
|
||||
super(FabricBlockSettings.copyOf(striped).materialColor(color));
|
||||
this.striped = striped;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) {
|
||||
if (player.getMainHandStack().getItem().isIn(FabricToolTags.AXES)) {
|
||||
world.playSound(player, pos, SoundEvents.ITEM_AXE_STRIP, SoundCategory.BLOCKS, 1.0F, 1.0F);
|
||||
if (!world.isClient) {
|
||||
world.setBlockState(pos, striped.getDefaultState().with(PillarBlock.AXIS, state.get(PillarBlock.AXIS)), 11);
|
||||
if (player != null && !player.isCreative()) {
|
||||
player.getMainHandStack().damage(1, world.random, (ServerPlayerEntity) player);
|
||||
}
|
||||
}
|
||||
return ActionResult.SUCCESS;
|
||||
}
|
||||
return ActionResult.FAIL;
|
||||
}
|
||||
}
|
20
src/main/java/ru/betterend/blocks/basis/BlockPillar.java
Normal file
20
src/main/java/ru/betterend/blocks/basis/BlockPillar.java
Normal file
|
@ -0,0 +1,20 @@
|
|||
package ru.betterend.blocks.basis;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.PillarBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.loot.context.LootContext;
|
||||
|
||||
public class BlockPillar extends PillarBlock {
|
||||
public BlockPillar(Settings settings) {
|
||||
super(settings);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getDroppedStacks(BlockState state, LootContext.Builder builder) {
|
||||
return Collections.singletonList(new ItemStack(this));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package ru.betterend.blocks.basis;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.PressurePlateBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.loot.context.LootContext;
|
||||
|
||||
public class BlockPressurePlate extends PressurePlateBlock {
|
||||
public BlockPressurePlate(Block source) {
|
||||
super(ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(source).nonOpaque());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getDroppedStacks(BlockState state, LootContext.Builder builder) {
|
||||
return Collections.singletonList(new ItemStack(this));
|
||||
}
|
||||
}
|
22
src/main/java/ru/betterend/blocks/basis/BlockSlab.java
Normal file
22
src/main/java/ru/betterend/blocks/basis/BlockSlab.java
Normal file
|
@ -0,0 +1,22 @@
|
|||
package ru.betterend.blocks.basis;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.SlabBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.loot.context.LootContext;
|
||||
|
||||
public class BlockSlab extends SlabBlock {
|
||||
public BlockSlab(Block source) {
|
||||
super(FabricBlockSettings.copyOf(source).nonOpaque());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getDroppedStacks(BlockState state, LootContext.Builder builder) {
|
||||
return Collections.singletonList(new ItemStack(this));
|
||||
}
|
||||
}
|
22
src/main/java/ru/betterend/blocks/basis/BlockStairs.java
Normal file
22
src/main/java/ru/betterend/blocks/basis/BlockStairs.java
Normal file
|
@ -0,0 +1,22 @@
|
|||
package ru.betterend.blocks.basis;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.StairsBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.loot.context.LootContext;
|
||||
|
||||
public class BlockStairs extends StairsBlock {
|
||||
public BlockStairs(Block source) {
|
||||
super(source.getDefaultState(), FabricBlockSettings.copyOf(source));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getDroppedStacks(BlockState state, LootContext.Builder builder) {
|
||||
return Collections.singletonList(new ItemStack(this));
|
||||
}
|
||||
}
|
22
src/main/java/ru/betterend/blocks/basis/BlockTrapdoor.java
Normal file
22
src/main/java/ru/betterend/blocks/basis/BlockTrapdoor.java
Normal file
|
@ -0,0 +1,22 @@
|
|||
package ru.betterend.blocks.basis;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.TrapdoorBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.loot.context.LootContext;
|
||||
|
||||
public class BlockTrapdoor extends TrapdoorBlock {
|
||||
public BlockTrapdoor(Block source) {
|
||||
super(FabricBlockSettings.copyOf(source).nonOpaque());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getDroppedStacks(BlockState state, LootContext.Builder builder) {
|
||||
return Collections.singletonList(new ItemStack(this));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package ru.betterend.blocks.basis;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.WoodenButtonBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.loot.context.LootContext;
|
||||
|
||||
public class BlockWoodenButton extends WoodenButtonBlock {
|
||||
public BlockWoodenButton(Block source) {
|
||||
super(FabricBlockSettings.copyOf(source).nonOpaque());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getDroppedStacks(BlockState state, LootContext.Builder builder) {
|
||||
return Collections.singletonList(new ItemStack(this));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,90 @@
|
|||
package ru.betterend.blocks.complex;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.Material;
|
||||
import net.minecraft.block.MaterialColor;
|
||||
import net.minecraft.item.Items;
|
||||
import ru.betterend.blocks.basis.BlockBase;
|
||||
import ru.betterend.blocks.basis.BlockDoor;
|
||||
import ru.betterend.blocks.basis.BlockFence;
|
||||
import ru.betterend.blocks.basis.BlockGate;
|
||||
import ru.betterend.blocks.basis.BlockLogStripable;
|
||||
import ru.betterend.blocks.basis.BlockPillar;
|
||||
import ru.betterend.blocks.basis.BlockPressurePlate;
|
||||
import ru.betterend.blocks.basis.BlockSlab;
|
||||
import ru.betterend.blocks.basis.BlockStairs;
|
||||
import ru.betterend.blocks.basis.BlockTrapdoor;
|
||||
import ru.betterend.blocks.basis.BlockWoodenButton;
|
||||
import ru.betterend.recipe.RecipeBuilder;
|
||||
import ru.betterend.registry.BlockRegistry;
|
||||
|
||||
public class WoodenMaterial
|
||||
{
|
||||
public final Block log;
|
||||
public final Block bark;
|
||||
|
||||
public final Block log_striped;
|
||||
public final Block bark_striped;
|
||||
|
||||
public final Block planks;
|
||||
|
||||
public final Block stairs;
|
||||
public final Block slab;
|
||||
public final Block fence;
|
||||
public final Block gate;
|
||||
public final Block button;
|
||||
public final Block pressure_plate;
|
||||
public final Block trapdoor;
|
||||
public final Block door;
|
||||
|
||||
//public final Block crafting_table;
|
||||
//public final Block ladder;
|
||||
//public final Block sign;
|
||||
|
||||
//public final Block chest;
|
||||
//public final Block barrel;
|
||||
|
||||
public WoodenMaterial(String name, MaterialColor woodColor, MaterialColor planksColor)
|
||||
{
|
||||
FabricBlockSettings materialPlanks = FabricBlockSettings.of(Material.WOOD).materialColor(planksColor);
|
||||
|
||||
log_striped = BlockRegistry.registerBlock(name + "_striped_log", new BlockPillar(materialPlanks));
|
||||
bark_striped = BlockRegistry.registerBlock(name + "_striped_bark", new BlockPillar(materialPlanks));
|
||||
|
||||
log = BlockRegistry.registerBlock(name + "_log", new BlockLogStripable(woodColor, log_striped));
|
||||
bark = BlockRegistry.registerBlock(name + "_bark", new BlockLogStripable(woodColor, bark_striped));
|
||||
|
||||
planks = BlockRegistry.registerBlock(name + "_planks", new BlockBase(materialPlanks));
|
||||
stairs = BlockRegistry.registerBlock(name + "_stairs", new BlockStairs(planks));
|
||||
slab = BlockRegistry.registerBlock(name + "_slab", new BlockSlab(planks));
|
||||
fence = BlockRegistry.registerBlock(name + "_fence", new BlockFence(planks));
|
||||
gate = BlockRegistry.registerBlock(name + "_gate", new BlockGate(planks));
|
||||
button = BlockRegistry.registerBlock(name + "_button", new BlockWoodenButton(planks));
|
||||
pressure_plate = BlockRegistry.registerBlock(name + "_plate", new BlockPressurePlate(planks));
|
||||
trapdoor = BlockRegistry.registerBlock(name + "_trapdoor", new BlockTrapdoor(planks));
|
||||
door = BlockRegistry.registerBlock(name + "_door", new BlockDoor(planks));
|
||||
|
||||
//crafting_table = BlockRegistry.registerBlock("crafting_table_" + name, planks);
|
||||
//ladder = BlockRegistry.registerBlock(name + "_ladder", planks);
|
||||
//sign = BlockRegistry.registerBlock("sign_" + name, planks);
|
||||
|
||||
//chest = BlockRegistry.registerBlock("chest_" + name, planks);
|
||||
//barrel = BlockRegistry.registerBlock("barrel_" + name, planks, planks_slab);
|
||||
|
||||
RecipeBuilder.make(name + "_planks", planks).setOutputCount(4).setList("#").addMaterial('#', log, bark).setGroup("end_planks").build();
|
||||
RecipeBuilder.make(name + "_stairs", stairs).setOutputCount(4).setShape("# ", "## ", "###").addMaterial('#', planks).setGroup("end_planks_stairs").build();
|
||||
RecipeBuilder.make(name + "_slab", slab).setOutputCount(6).setShape("###").addMaterial('#', planks).setGroup("end_planks_slabs").build();
|
||||
RecipeBuilder.make(name + "_fence", fence).setOutputCount(3).setShape("#I#", "#I#").addMaterial('#', planks).addMaterial('I', Items.STICK).setGroup("end_planks_fences").build();
|
||||
RecipeBuilder.make(name + "_gate", gate).setShape("I#I", "I#I").addMaterial('#', planks).addMaterial('I', Items.STICK).setGroup("end_planks_gates").build();
|
||||
RecipeBuilder.make(name + "_button", button).setList("#").addMaterial('#', planks).setGroup("end_planks_buttons").build();
|
||||
RecipeBuilder.make(name + "_pressure_plate", pressure_plate).setList("##").addMaterial('#', planks).setGroup("end_planks_plates").build();
|
||||
RecipeBuilder.make(name + "_trapdoor", trapdoor).setOutputCount(2).setShape("###", "###").addMaterial('#', planks).setGroup("end_trapdoors").build();
|
||||
RecipeBuilder.make(name + "_door", door).setOutputCount(3).setShape("##", "##", "##").addMaterial('#', planks).setGroup("end_doors").build();
|
||||
}
|
||||
|
||||
public boolean isTreeLog(Block block)
|
||||
{
|
||||
return block == log || block == bark;
|
||||
}
|
||||
}
|
28
src/main/java/ru/betterend/client/BetterEndClient.java
Normal file
28
src/main/java/ru/betterend/client/BetterEndClient.java
Normal file
|
@ -0,0 +1,28 @@
|
|||
package ru.betterend.client;
|
||||
|
||||
import net.fabricmc.api.ClientModInitializer;
|
||||
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
|
||||
import net.minecraft.client.render.RenderLayer;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
|
||||
public class BetterEndClient implements ClientModInitializer
|
||||
{
|
||||
@Override
|
||||
public void onInitializeClient() {
|
||||
registerRenderLayers();
|
||||
}
|
||||
|
||||
private void registerRenderLayers() {
|
||||
RenderLayer cutout = RenderLayer.getCutout();
|
||||
RenderLayer translucent = RenderLayer.getTranslucent();
|
||||
Registry.BLOCK.forEach(block -> {
|
||||
if (block instanceof IRenderTypeable) {
|
||||
ERenderLayer layer = ((IRenderTypeable) block).getRenderLayer();
|
||||
if (layer == ERenderLayer.CUTOUT)
|
||||
BlockRenderLayerMap.INSTANCE.putBlock(block, cutout);
|
||||
else if (layer == ERenderLayer.TRANSLUCENT)
|
||||
BlockRenderLayerMap.INSTANCE.putBlock(block, translucent);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
6
src/main/java/ru/betterend/client/ERenderLayer.java
Normal file
6
src/main/java/ru/betterend/client/ERenderLayer.java
Normal file
|
@ -0,0 +1,6 @@
|
|||
package ru.betterend.client;
|
||||
|
||||
public enum ERenderLayer {
|
||||
CUTOUT,
|
||||
TRANSLUCENT;
|
||||
}
|
6
src/main/java/ru/betterend/client/IRenderTypeable.java
Normal file
6
src/main/java/ru/betterend/client/IRenderTypeable.java
Normal file
|
@ -0,0 +1,6 @@
|
|||
package ru.betterend.client;
|
||||
|
||||
public interface IRenderTypeable
|
||||
{
|
||||
public ERenderLayer getRenderLayer();
|
||||
}
|
|
@ -51,7 +51,7 @@ public class RecipeBuilder {
|
|||
return this;
|
||||
}
|
||||
|
||||
public RecipeBuilder setShape(String[] shape) {
|
||||
public RecipeBuilder setShape(String... shape) {
|
||||
this.shape = shape;
|
||||
return this;
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@ public class BlockRegistry {
|
|||
|
||||
public static void register() {}
|
||||
|
||||
private static Block registerBlock(String name, Block block) {
|
||||
public static Block registerBlock(String name, Block block) {
|
||||
Registry.register(Registry.BLOCK, new Identifier(BetterEnd.MOD_ID, name), block);
|
||||
ItemRegistry.registerItem(name, new BlockItem(block, new Item.Settings().group(CreativeTab.END_TAB)));
|
||||
return block;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue