diff --git a/src/main/generated/assets/acesbs/blockstates/evil_block.json b/src/main/generated/assets/acesbs/blockstates/evil_block.json new file mode 100644 index 0000000..88f1c01 --- /dev/null +++ b/src/main/generated/assets/acesbs/blockstates/evil_block.json @@ -0,0 +1,10 @@ +{ + "variants": { + "clicked=false": { + "model": "acesbs:block/evil_block" + }, + "clicked=true": { + "model": "acesbs:block/evil_block_on" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/block/evil_block.json b/src/main/generated/assets/acesbs/models/block/evil_block.json new file mode 100644 index 0000000..d9dc33b --- /dev/null +++ b/src/main/generated/assets/acesbs/models/block/evil_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "acesbs:block/evil_block" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/block/evil_block_on.json b/src/main/generated/assets/acesbs/models/block/evil_block_on.json new file mode 100644 index 0000000..e2b57c9 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/block/evil_block_on.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "acesbs:block/evil_block_on" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/evil_block.json b/src/main/generated/assets/acesbs/models/item/evil_block.json new file mode 100644 index 0000000..c34ced8 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/evil_block.json @@ -0,0 +1,3 @@ +{ + "parent": "acesbs:block/evil_block" +} \ No newline at end of file diff --git a/src/main/java/com/acethewildfire/acesbs/block/ModBlocks.java b/src/main/java/com/acethewildfire/acesbs/block/ModBlocks.java index 7431ceb..5596766 100644 --- a/src/main/java/com/acethewildfire/acesbs/block/ModBlocks.java +++ b/src/main/java/com/acethewildfire/acesbs/block/ModBlocks.java @@ -2,6 +2,7 @@ package com.acethewildfire.acesbs.block; import com.acethewildfire.acesbs.AcesBS; import com.acethewildfire.acesbs.block.custom.EntropyBlock; +import com.acethewildfire.acesbs.block.custom.EvilBlock; import com.acethewildfire.acesbs.block.custom.StableEntropyBlock; import net.minecraft.block.*; import net.minecraft.block.enums.NoteBlockInstrument; @@ -132,6 +133,13 @@ public class ModBlocks { .nonOpaque() )); + public static final Block EVIL_BLOCK = registerBlock("evil_block", + new EvilBlock(AbstractBlock.Settings.create() + .strength(5f) + .luminance(state -> state.get(EvilBlock.CLICKED) ? 15 : 0) + .requiresTool() + .sounds(BlockSoundGroup.LODESTONE))); + private static Block registerBlock(String name, Block block){ registerBlockItem(name, block); return Registry.register(Registries.BLOCK, Identifier.of(AcesBS.MOD_ID, name), block); diff --git a/src/main/java/com/acethewildfire/acesbs/block/custom/EvilBlock.java b/src/main/java/com/acethewildfire/acesbs/block/custom/EvilBlock.java new file mode 100644 index 0000000..e3fe35c --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/block/custom/EvilBlock.java @@ -0,0 +1,34 @@ +package com.acethewildfire.acesbs.block.custom; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.util.ActionResult; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class EvilBlock extends Block { + + public static final BooleanProperty CLICKED = BooleanProperty.of("clicked"); + + public EvilBlock(Settings settings) { + super(settings); + setDefaultState(this.getDefaultState().with(CLICKED, false)); + } + + @Override + protected ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, BlockHitResult hit) { + if(!world.isClient()){ + world.setBlockState(pos, state.cycle(CLICKED)); + } + return ActionResult.SUCCESS; + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(CLICKED); + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java b/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java index 82e5d51..c8c38c3 100644 --- a/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java +++ b/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java @@ -1,12 +1,12 @@ package com.acethewildfire.acesbs.datagen; import com.acethewildfire.acesbs.block.ModBlocks; +import com.acethewildfire.acesbs.block.custom.EvilBlock; import com.acethewildfire.acesbs.item.ModItems; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.provider.FabricModelProvider; -import net.minecraft.data.client.BlockStateModelGenerator; -import net.minecraft.data.client.ItemModelGenerator; -import net.minecraft.data.client.Models; +import net.minecraft.data.client.*; +import net.minecraft.util.Identifier; public class ModModelProvider extends FabricModelProvider { @@ -36,6 +36,10 @@ public class ModModelProvider extends FabricModelProvider { blockStateModelGenerator.registerDoor(ModBlocks.LEMONWOOD_DOOR); blockStateModelGenerator.registerTrapdoor(ModBlocks.LEMONWOOD_TRAPDOOR); + Identifier lampOffIdentifier = TexturedModel.CUBE_ALL.upload(ModBlocks.EVIL_BLOCK, blockStateModelGenerator.modelCollector); + Identifier lampOnIdentifier = blockStateModelGenerator.createSubModel(ModBlocks.EVIL_BLOCK, "_on", Models.CUBE_ALL, TextureMap::all); + blockStateModelGenerator.blockStateCollector.accept(VariantsBlockStateSupplier.create(ModBlocks.EVIL_BLOCK) + .coordinate(BlockStateModelGenerator.createBooleanModelMap(EvilBlock.CLICKED, lampOnIdentifier, lampOffIdentifier))); } diff --git a/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java b/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java index 9536a79..2ba1816 100644 --- a/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java +++ b/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java @@ -47,6 +47,8 @@ public class ModItemGroups { entries.add(ModBlocks.LEMONWOOD_DOOR); entries.add(ModBlocks.LEMONWOOD_TRAPDOOR); + entries.add(ModBlocks.EVIL_BLOCK); + }) .build()); diff --git a/src/main/resources/assets/acesbs/lang/en_us.json b/src/main/resources/assets/acesbs/lang/en_us.json index f83b088..75f836a 100644 --- a/src/main/resources/assets/acesbs/lang/en_us.json +++ b/src/main/resources/assets/acesbs/lang/en_us.json @@ -26,6 +26,8 @@ "block.acesbs.lemonwood_door": "Lemonwood Door", "block.acesbs.lemonwood_trapdoor": "Lemonwood Trapdoor", + "block.acesbs.evil_block": "Evil Block", + "itemgroup.acesbs.items": "Ace's BS Items", "itemgroup.acesbs.blocks": "Ace's BS Blocks", diff --git a/src/main/resources/assets/acesbs/textures/block/evil_block.png b/src/main/resources/assets/acesbs/textures/block/evil_block.png new file mode 100644 index 0000000..d3992be Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/block/evil_block.png differ diff --git a/src/main/resources/assets/acesbs/textures/block/evil_block_on.png b/src/main/resources/assets/acesbs/textures/block/evil_block_on.png new file mode 100644 index 0000000..ae494d2 Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/block/evil_block_on.png differ