removed slab mode... and instead added custom class passing
This commit is contained in:
parent
03af07cb04
commit
3b387e05de
|
@ -1,22 +1,26 @@
|
|||
package com.danitheskunk.skunkstuff;
|
||||
|
||||
|
||||
import com.danitheskunk.skunkstuff.Blocks.Blocks;
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.SlabBlock;
|
||||
import net.minecraft.world.level.block.state.BlockBehaviour;
|
||||
import net.minecraft.world.level.material.Material;
|
||||
import org.quiltmc.qsl.block.extensions.api.QuiltBlockSettings;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
public class BlockBuilder extends QuiltBlockSettings {
|
||||
public String name;
|
||||
public CreativeModeTab creativeModeTab = CreativeModeTab.TAB_MISC;
|
||||
public BlockType blockType;
|
||||
public Class<? extends Block> blockClass;
|
||||
public Block block;
|
||||
|
||||
public BlockBuilder() {
|
||||
super(QuiltBlockSettings.of(Material.WOOD));
|
||||
strength(2);
|
||||
opaque(false);
|
||||
blockType = BlockType.Full;
|
||||
blockClass = Block.class;
|
||||
}
|
||||
|
||||
public BlockBuilder name(String name) {
|
||||
|
@ -29,19 +33,24 @@ public class BlockBuilder extends QuiltBlockSettings {
|
|||
return this;
|
||||
}
|
||||
|
||||
public BlockBuilder slab() {
|
||||
blockType = BlockType.Slab;
|
||||
public BlockBuilder type(Class<? extends Block> blockClass) {
|
||||
this.blockClass = blockClass;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Block build() {
|
||||
block = switch(blockType) {
|
||||
case Full -> new Block(this);
|
||||
case Slab -> new SlabBlock(this);
|
||||
};
|
||||
try {
|
||||
var constructor =
|
||||
blockClass.getDeclaredConstructor(BlockBehaviour.Properties.class);
|
||||
block = constructor.newInstance(this);
|
||||
} catch(NoSuchMethodException | InvocationTargetException |
|
||||
InstantiationException | IllegalAccessException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
Blocks.addToDeffered(this);
|
||||
return block;
|
||||
}
|
||||
|
||||
private enum BlockType {
|
||||
Full, Slab
|
||||
}
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
package com.danitheskunk.skunkstuff.Blocks;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
|
||||
public class BlockGoban extends Block {
|
||||
private static final VoxelShape AABB = Block.box(0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
16.0,
|
||||
8.0,
|
||||
16.0
|
||||
);
|
||||
|
||||
public BlockGoban(Properties properties) {
|
||||
super(properties);
|
||||
}
|
||||
|
||||
@Override
|
||||
public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) {
|
||||
return AABB;
|
||||
}
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package com.danitheskunk.skunkstuff;
|
||||
package com.danitheskunk.skunkstuff.Blocks;
|
||||
|
||||
import com.danitheskunk.skunkstuff.BlockBuilder;
|
||||
import net.minecraft.core.Registry;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.BlockItem;
|
|
@ -1,5 +1,7 @@
|
|||
package com.danitheskunk.skunkstuff;
|
||||
|
||||
import com.danitheskunk.skunkstuff.Blocks.BlockGoban;
|
||||
import com.danitheskunk.skunkstuff.Blocks.Blocks;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import org.quiltmc.loader.api.ModContainer;
|
||||
import org.quiltmc.qsl.base.api.entrypoint.ModInitializer;
|
||||
|
@ -10,23 +12,23 @@ public class SkunkStuff implements ModInitializer {
|
|||
public static final Logger LOGGER = LoggerFactory.getLogger("SkunkStuff");
|
||||
|
||||
public static final Block OAK_GOBAN_BLOCK = Blocks.register().name(
|
||||
"oak_goban").build();
|
||||
"oak_goban").type(BlockGoban.class).build();
|
||||
public static final Block SPRUCE_GOBAN_BLOCK = Blocks.register().name(
|
||||
"spruce_goban").build();
|
||||
"spruce_goban").type(BlockGoban.class).build();
|
||||
public static final Block BIRCH_GOBAN_BLOCK = Blocks.register().name(
|
||||
"birch_goban").build();
|
||||
"birch_goban").type(BlockGoban.class).build();
|
||||
public static final Block JUNGLE_GOBAN_BLOCK = Blocks.register().name(
|
||||
"jungle_goban").build();
|
||||
"jungle_goban").type(BlockGoban.class).build();
|
||||
public static final Block ACACIA_GOBAN_BLOCK = Blocks.register().name(
|
||||
"acacia_goban").build();
|
||||
"acacia_goban").type(BlockGoban.class).build();
|
||||
public static final Block DARK_OAK_GOBAN_BLOCK = Blocks.register().name(
|
||||
"dark_oak_goban").build();
|
||||
"dark_oak_goban").type(BlockGoban.class).build();
|
||||
public static final Block WARPED_GOBAN_BLOCK = Blocks.register().name(
|
||||
"warped_goban").build();
|
||||
"warped_goban").type(BlockGoban.class).build();
|
||||
public static final Block CRIMSON_GOBAN_BLOCK = Blocks.register().name(
|
||||
"crimson_goban").build();
|
||||
"crimson_goban").type(BlockGoban.class).build();
|
||||
public static final Block MANGROVE_GOBAN_BLOCK = Blocks.register().name(
|
||||
"mangrove_goban").build();
|
||||
"mangrove_goban").type(BlockGoban.class).build();
|
||||
|
||||
@Override
|
||||
public void onInitialize(ModContainer mod) {
|
||||
|
|
Loading…
Reference in New Issue