From f6a46c555c66ae33f6d6d813a42c96b63fb84de6 Mon Sep 17 00:00:00 2001 From: Vos Date: Thu, 6 Nov 2025 18:58:15 -0600 Subject: [PATCH] Evil Block --- .../assets/acesbs/blockstates/evil_block.json | 10 ++++++ .../acesbs/models/block/evil_block.json | 6 ++++ .../acesbs/models/block/evil_block_on.json | 6 ++++ .../assets/acesbs/models/item/evil_block.json | 3 ++ .../acesbs/block/ModBlocks.java | 8 +++++ .../acesbs/block/custom/EvilBlock.java | 34 ++++++++++++++++++ .../acesbs/datagen/ModModelProvider.java | 10 ++++-- .../acesbs/item/ModItemGroups.java | 2 ++ .../resources/assets/acesbs/lang/en_us.json | 2 ++ .../acesbs/textures/block/evil_block.png | Bin 0 -> 4716 bytes .../acesbs/textures/block/evil_block_on.png | Bin 0 -> 4742 bytes 11 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 src/main/generated/assets/acesbs/blockstates/evil_block.json create mode 100644 src/main/generated/assets/acesbs/models/block/evil_block.json create mode 100644 src/main/generated/assets/acesbs/models/block/evil_block_on.json create mode 100644 src/main/generated/assets/acesbs/models/item/evil_block.json create mode 100644 src/main/java/com/acethewildfire/acesbs/block/custom/EvilBlock.java create mode 100644 src/main/resources/assets/acesbs/textures/block/evil_block.png create mode 100644 src/main/resources/assets/acesbs/textures/block/evil_block_on.png 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 0000000000000000000000000000000000000000..d3992be766ab614cddb780fd631105bd28c7f8a9 GIT binary patch literal 4716 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 E0Uy@gga7~l literal 0 HcmV?d00001