From af56d92130811d157624a9de56b37582d2ef7272 Mon Sep 17 00:00:00 2001 From: jaredk Date: Wed, 7 Oct 2026 12:04:43 -0700 Subject: [PATCH 1/5] [WIP] Muting Chimes - Functionally Complete --- .../blocks/decoration/GemstoneChimeBlock.java | 72 ++++++++++++++++--- .../spectrum/registries/SpectrumItemTags.java | 1 + .../resources/data/c/tags/item/wools.json | 20 ++++++ 3 files changed, 83 insertions(+), 10 deletions(-) create mode 100644 src/main/resources/data/c/tags/item/wools.json diff --git a/src/main/java/de/dafuqs/spectrum/blocks/decoration/GemstoneChimeBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/decoration/GemstoneChimeBlock.java index db0608fc11..13079ccffb 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/decoration/GemstoneChimeBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/decoration/GemstoneChimeBlock.java @@ -1,15 +1,29 @@ package de.dafuqs.spectrum.blocks.decoration; import com.mojang.serialization.*; +import de.dafuqs.spectrum.registries.*; import net.minecraft.core.*; import net.minecraft.core.particles.*; +import net.minecraft.core.registries.*; +import net.minecraft.resources.*; +import net.minecraft.server.level.*; import net.minecraft.sounds.*; +import net.minecraft.tags.*; import net.minecraft.util.*; +import net.minecraft.world.*; +import net.minecraft.world.entity.player.*; +import net.minecraft.world.item.*; +import net.minecraft.world.item.context.*; import net.minecraft.world.level.*; import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.state.*; +import net.minecraft.world.level.block.state.properties.*; import net.minecraft.world.level.pathfinder.*; +import net.minecraft.world.phys.*; import net.minecraft.world.phys.shapes.*; +import net.neoforged.bus.api.*; +import net.neoforged.neoforge.common.*; +import net.neoforged.neoforge.event.entity.player.*; import org.jspecify.annotations.*; public class GemstoneChimeBlock extends Block { @@ -21,11 +35,14 @@ public class GemstoneChimeBlock extends Block { protected final SoundEvent soundEvent; protected final ParticleOptions particleEffect; + //Is Muted holder + public static final BooleanProperty IS_MUTED = BooleanProperty.create("is_muted"); public GemstoneChimeBlock(Properties settings, SoundEvent soundEvent, ParticleOptions particleEffect) { super(settings); this.soundEvent = soundEvent; this.particleEffect = particleEffect; + registerDefaultState(stateDefinition.any().setValue(IS_MUTED, false)); } @Override @@ -36,16 +53,19 @@ public GemstoneChimeBlock(Properties settings, SoundEvent soundEvent, ParticleOp @Override public void animateTick(BlockState state, Level world, BlockPos pos, RandomSource random) { - super.animateTick(state, world, pos, random); - - world.addParticle(particleEffect, - pos.getX() + 0.25 + random.nextDouble() * 0.5, - pos.getY() + 0.15 + random.nextDouble() * 0.5, - pos.getZ() + 0.25 + random.nextDouble() * 0.5, - 0, -0.02 - random.nextDouble() * 0.025, 0); - - if (random.nextFloat() < 0.2) { - world.playLocalSound(pos.getX(), pos.getY(), pos.getZ(), soundEvent, SoundSource.BLOCKS, 0.7F + random.nextFloat() * 0.4F, 0.75F + random.nextFloat() * 0.5F, true); + //Check if it's muted before running the following code. + boolean muteState = state.getValue(IS_MUTED); + if (!muteState) { + super.animateTick(state, world, pos, random); + world.addParticle(particleEffect, + pos.getX() + 0.25 + random.nextDouble() * 0.5, + pos.getY() + 0.15 + random.nextDouble() * 0.5, + pos.getZ() + 0.25 + random.nextDouble() * 0.5, + 0, -0.02 - random.nextDouble() * 0.025, 0); + + if (random.nextFloat() < 0.2) { + world.playLocalSound(pos.getX(), pos.getY(), pos.getZ(), soundEvent, SoundSource.BLOCKS, 0.7F + random.nextFloat() * 0.4F, 0.75F + random.nextFloat() * 0.5F, true); + } } } @@ -74,4 +94,36 @@ public ParticleOptions getParticleEffect() { return this.particleEffect; } + @Override + protected void createBlockStateDefinition(StateDefinition.Builder pBuilder){ + pBuilder.add(IS_MUTED); + } + + //Mute with wool, Unmute with Empty + @Override + public ItemInteractionResult useItemOn(ItemStack handStack, BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { + //If the hand contains an item version of what is in the block tag #minecraft:wool, switch block state to the muted variant and set isMuted to true + + if (handStack.is(SpectrumItemTags.WOOLS)){ + setMuted(state.setValue(IS_MUTED, true), world, pos); + return ItemInteractionResult.SUCCESS; + }else if (handStack.isEmpty()){ + setMuted(state.setValue(IS_MUTED, false), world, pos); + return ItemInteractionResult.SUCCESS; + } + return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + + } + static void setMuted(BlockState state, Level world, BlockPos pos){ + world.setBlockAndUpdate(pos, state); + } + + //Additional Helper for BlockStates + @Override + @Nullable + public BlockState getStateForPlacement(BlockPlaceContext pContext) { + // code that determines which state will be used when + // placing down this block, depending on the BlockPlaceContext + return defaultBlockState(); + } } diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItemTags.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItemTags.java index 3b42f36f09..f7d5e72735 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItemTags.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItemTags.java @@ -11,6 +11,7 @@ public class SpectrumItemTags { // "c" namespace public static final TagKey SKULLS = conventional("skulls"); public static final TagKey FRUITS = conventional("foods/fruit"); + public static final TagKey WOOLS = conventional("wools"); // "spectrum" namespace public static final TagKey FISHING_RODS = spectrum("fishing_rods"); diff --git a/src/main/resources/data/c/tags/item/wools.json b/src/main/resources/data/c/tags/item/wools.json new file mode 100644 index 0000000000..0cf3103c27 --- /dev/null +++ b/src/main/resources/data/c/tags/item/wools.json @@ -0,0 +1,20 @@ +{ + "values": [ + "minecraft:black_wool", + "minecraft:blue_wool", + "minecraft:brown_wool", + "minecraft:cyan_wool", + "minecraft:gray_wool", + "minecraft:green_wool", + "minecraft:light_blue_wool", + "minecraft:light_gray_wool", + "minecraft:lime_wool", + "minecraft:magenta_wool", + "minecraft:orange_wool", + "minecraft:pink_wool", + "minecraft:purple_wool", + "minecraft:red_wool", + "minecraft:white_wool", + "minecraft:yellow_wool" + ] +} \ No newline at end of file From e66231a9a135329221478020078e9c06bd857712 Mon Sep 17 00:00:00 2001 From: jaredk Date: Fri, 9 Oct 2026 09:00:27 -0700 Subject: [PATCH 2/5] [WIP] Muting Chimes - Functionally Complete, Guidebook Complete, missing BlockState textures --- .../spectrum/blocks/decoration/GemstoneChimeBlock.java | 3 ++- src/main/resources/assets/spectrum/lang/en_us.json | 2 ++ .../books/guidebook/entries/decoration/gemstone_chimes.json | 5 +++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/dafuqs/spectrum/blocks/decoration/GemstoneChimeBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/decoration/GemstoneChimeBlock.java index 13079ccffb..a9d54715b4 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/decoration/GemstoneChimeBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/decoration/GemstoneChimeBlock.java @@ -102,7 +102,7 @@ protected void createBlockStateDefinition(StateDefinition.Builder Date: Fri, 9 Oct 2026 09:00:27 -0700 Subject: [PATCH 3/5] [WIP] Muting Chimes - Functionally Complete, Guidebook Complete, missing BlockState textures Appended changes: Removed a line from the guidebook's entry on AE2, mislabelling the Fusion Shrine Fluix Crystal recipe. --- .../spectrum/blocks/decoration/GemstoneChimeBlock.java | 3 ++- src/main/resources/assets/spectrum/lang/en_us.json | 2 ++ .../books/guidebook/entries/decoration/gemstone_chimes.json | 5 +++++ .../books/guidebook/entries/mod_integration/ae2.json | 1 - 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/blocks/decoration/GemstoneChimeBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/decoration/GemstoneChimeBlock.java index 13079ccffb..a9d54715b4 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/decoration/GemstoneChimeBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/decoration/GemstoneChimeBlock.java @@ -102,7 +102,7 @@ protected void createBlockStateDefinition(StateDefinition.Builder Date: Tue, 13 Oct 2026 08:58:06 -0700 Subject: [PATCH 4/5] [WIP] Muting Chimes - Functionally Complete, Guidebook Complete, Partial Work on BlockState textures Appended changes: Removed a line from the guidebook's entry on AE2, mislabelling the Fusion Shrine Fluix Crystal recipe. --- .../textures/block/amethyst_chime_muted.png | Bin 0 -> 133 bytes .../textures/block/citrine_chime_muted.png | Bin 0 -> 133 bytes .../textures/block/moonstone_chime_muted.png | Bin 0 -> 128 bytes .../spectrum/textures/block/onyx_chime_muted.png | Bin 0 -> 132 bytes .../spectrum/textures/block/topaz_chime_muted.png | Bin 0 -> 133 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/spectrum/textures/block/amethyst_chime_muted.png create mode 100644 src/main/resources/assets/spectrum/textures/block/citrine_chime_muted.png create mode 100644 src/main/resources/assets/spectrum/textures/block/moonstone_chime_muted.png create mode 100644 src/main/resources/assets/spectrum/textures/block/onyx_chime_muted.png create mode 100644 src/main/resources/assets/spectrum/textures/block/topaz_chime_muted.png diff --git a/src/main/resources/assets/spectrum/textures/block/amethyst_chime_muted.png b/src/main/resources/assets/spectrum/textures/block/amethyst_chime_muted.png new file mode 100644 index 0000000000000000000000000000000000000000..c150f176421f9996e848466ed09a83c7f5c6da12 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|>^)r^Lo9le zD{dA4wr6H$KK$*E@qbAV27|9Y28_0mbwOVaUp>q_K`$^>&t;ucLK6Tp!zX|M literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/spectrum/textures/block/citrine_chime_muted.png b/src/main/resources/assets/spectrum/textures/block/citrine_chime_muted.png new file mode 100644 index 0000000000000000000000000000000000000000..0851d6d998a7a4249f1b547fc69352150a3cd927 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|>^)r^Lo9le zf7IK5v}a~!K76li_kSK0h8b0AGa7FVdQ&MBb@0Jdr;qyPW_ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/spectrum/textures/block/onyx_chime_muted.png b/src/main/resources/assets/spectrum/textures/block/onyx_chime_muted.png new file mode 100644 index 0000000000000000000000000000000000000000..597f044e455b337c514ef157ab982faa744a54c4 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|>^xl@Lo9le z4ZQFDo!{8l=y+S{yFD`}!?JmtY6sT7b?>U%QMH3{`LkU{lTw&O3^)r^Lo9le zXMB6{xt@)Ut!>ZJ_W#Bc7!qF1Okk4Q#XB~)z4*}Q$iB}%eyLt literal 0 HcmV?d00001 From 3179854407c79b4ceec2707033df4dfcfef059a2 Mon Sep 17 00:00:00 2001 From: jaredk Date: Tue, 13 Oct 2026 09:23:08 -0700 Subject: [PATCH 5/5] [WIP] Muting Chimes - Functionally Complete, Guidebook Complete, BlockState textures Complete Appended changes: Removed a line from the guidebook's entry on AE2, mislabelling the Fusion Shrine Fluix Crystal recipe. --- .../assets/spectrum/blockstates/amethyst_chime.json | 5 ++++- .../assets/spectrum/blockstates/citrine_chime.json | 5 ++++- .../assets/spectrum/blockstates/moonstone_chime.json | 5 ++++- .../resources/assets/spectrum/blockstates/onyx_chime.json | 5 ++++- .../resources/assets/spectrum/blockstates/topaz_chime.json | 5 ++++- .../assets/spectrum/models/block/amethyst_chime_muted.json | 7 +++++++ .../assets/spectrum/models/block/citrine_chime_muted.json | 7 +++++++ .../spectrum/models/block/moonstone_chime_muted.json | 7 +++++++ .../assets/spectrum/models/block/onyx_chime_muted.json | 7 +++++++ .../assets/spectrum/models/block/topaz_chime_muted.json | 7 +++++++ 10 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 src/main/resources/assets/spectrum/models/block/amethyst_chime_muted.json create mode 100644 src/main/resources/assets/spectrum/models/block/citrine_chime_muted.json create mode 100644 src/main/resources/assets/spectrum/models/block/moonstone_chime_muted.json create mode 100644 src/main/resources/assets/spectrum/models/block/onyx_chime_muted.json create mode 100644 src/main/resources/assets/spectrum/models/block/topaz_chime_muted.json diff --git a/src/main/resources/assets/spectrum/blockstates/amethyst_chime.json b/src/main/resources/assets/spectrum/blockstates/amethyst_chime.json index 1016b3c167..b45571e8ce 100644 --- a/src/main/resources/assets/spectrum/blockstates/amethyst_chime.json +++ b/src/main/resources/assets/spectrum/blockstates/amethyst_chime.json @@ -1,7 +1,10 @@ { "variants": { - "": { + "is_muted=false": { "model": "spectrum:block/amethyst_chime" + }, + "is_muted=true": { + "model": "spectrum:block/amethyst_chime_muted" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/citrine_chime.json b/src/main/resources/assets/spectrum/blockstates/citrine_chime.json index 11be33df1e..d5a5b3787a 100644 --- a/src/main/resources/assets/spectrum/blockstates/citrine_chime.json +++ b/src/main/resources/assets/spectrum/blockstates/citrine_chime.json @@ -1,7 +1,10 @@ { "variants": { - "": { + "is_muted=false": { "model": "spectrum:block/citrine_chime" + }, + "is_muted=true": { + "model": "spectrum:block/citrine_chime_muted" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/moonstone_chime.json b/src/main/resources/assets/spectrum/blockstates/moonstone_chime.json index ddd6437235..e5a3b78bae 100644 --- a/src/main/resources/assets/spectrum/blockstates/moonstone_chime.json +++ b/src/main/resources/assets/spectrum/blockstates/moonstone_chime.json @@ -1,7 +1,10 @@ { "variants": { - "": { + "is_muted=false": { "model": "spectrum:block/moonstone_chime" + }, + "is_muted=true": { + "model": "spectrum:block/moonstone_chime_muted" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/onyx_chime.json b/src/main/resources/assets/spectrum/blockstates/onyx_chime.json index 5239a8314c..08de81ccc5 100644 --- a/src/main/resources/assets/spectrum/blockstates/onyx_chime.json +++ b/src/main/resources/assets/spectrum/blockstates/onyx_chime.json @@ -1,7 +1,10 @@ { "variants": { - "": { + "is_muted=false": { "model": "spectrum:block/onyx_chime" + }, + "is_muted=true": { + "model": "spectrum:block/onyx_chime_muted" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/topaz_chime.json b/src/main/resources/assets/spectrum/blockstates/topaz_chime.json index b92b6ebc31..b70b08d880 100644 --- a/src/main/resources/assets/spectrum/blockstates/topaz_chime.json +++ b/src/main/resources/assets/spectrum/blockstates/topaz_chime.json @@ -1,7 +1,10 @@ { "variants": { - "": { + "is_muted=false": { "model": "spectrum:block/topaz_chime" + }, + "is_muted=true": { + "model": "spectrum:block/topaz_chime_muted" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/block/amethyst_chime_muted.json b/src/main/resources/assets/spectrum/models/block/amethyst_chime_muted.json new file mode 100644 index 0000000000..ffcd16bad9 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/block/amethyst_chime_muted.json @@ -0,0 +1,7 @@ +{ + "parent": "spectrum:templates/chime", + "textures": { + "base": "spectrum:block/balcite_chime_base", + "gemstone": "spectrum:block/amethyst_chime_muted" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/block/citrine_chime_muted.json b/src/main/resources/assets/spectrum/models/block/citrine_chime_muted.json new file mode 100644 index 0000000000..930842f9fd --- /dev/null +++ b/src/main/resources/assets/spectrum/models/block/citrine_chime_muted.json @@ -0,0 +1,7 @@ +{ + "parent": "spectrum:templates/chime", + "textures": { + "base": "spectrum:block/balcite_chime_base", + "gemstone": "spectrum:block/citrine_chime_muted" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/block/moonstone_chime_muted.json b/src/main/resources/assets/spectrum/models/block/moonstone_chime_muted.json new file mode 100644 index 0000000000..908ca7024c --- /dev/null +++ b/src/main/resources/assets/spectrum/models/block/moonstone_chime_muted.json @@ -0,0 +1,7 @@ +{ + "parent": "spectrum:templates/chime", + "textures": { + "base": "spectrum:block/balcite_chime_base", + "gemstone": "spectrum:block/moonstone_chime_muted" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/block/onyx_chime_muted.json b/src/main/resources/assets/spectrum/models/block/onyx_chime_muted.json new file mode 100644 index 0000000000..873c2b02d6 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/block/onyx_chime_muted.json @@ -0,0 +1,7 @@ +{ + "parent": "spectrum:templates/chime", + "textures": { + "base": "spectrum:block/balcite_chime_base", + "gemstone": "spectrum:block/onyx_chime_muted" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/block/topaz_chime_muted.json b/src/main/resources/assets/spectrum/models/block/topaz_chime_muted.json new file mode 100644 index 0000000000..0f1abb2453 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/block/topaz_chime_muted.json @@ -0,0 +1,7 @@ +{ + "parent": "spectrum:templates/chime", + "textures": { + "base": "spectrum:block/balcite_chime_base", + "gemstone": "spectrum:block/topaz_chime_muted" + } +} \ No newline at end of file