Skip to content

Commit

Permalink
Fix bamboo and nether block sfx
Browse files Browse the repository at this point in the history
  • Loading branch information
Vazkii committed Dec 6, 2023
1 parent b809d44 commit 2af9786
Show file tree
Hide file tree
Showing 8 changed files with 49 additions and 43 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ public static WoodSet addWoodSet(ZRegister event, ZetaModule module, String name

//TODO 1.20: maybe expose stuff like canOpenByHand, sound types, etc
BlockSetType setType = new BlockSetType(Quark.MOD_ID + ":" + name);
SoundType sound = SoundType.WOOD;

WoodType type = WoodType.register(new WoodType(Quark.MOD_ID + ":" + name, setType));
WoodSet set = new WoodSet(name, module, type);
Expand Down Expand Up @@ -119,15 +120,15 @@ public static WoodSet addWoodSet(ZRegister event, ZetaModule module, String name
set.ceilingHangingSign = new ZetaCeilingHangingSignBlock(name + "_hanging_sign", module, type, OldMaterials.wood().forceSolidOn().mapColor(color).noCollission().strength(1.0F).sound(SoundType.WOOD));
set.wallHangingSign = new ZetaWallHangingSignBlock(name + "_wall_hanging_sign", module, type, OldMaterials.wood().forceSolidOn().mapColor(color).noCollission().strength(1.0F).sound(SoundType.WOOD).lootFrom(() -> set.sign));

set.bookshelf = new VariantBookshelfBlock(name, module, true).setCondition(() -> Quark.ZETA.modules.isEnabledOrOverlapping(VariantBookshelvesModule.class));
set.bookshelf = new VariantBookshelfBlock(name, module, true, sound).setCondition(() -> Quark.ZETA.modules.isEnabledOrOverlapping(VariantBookshelvesModule.class));
set.ladder = new VariantLadderBlock(name, module, true).setCondition(() -> Quark.ZETA.modules.isEnabledOrOverlapping(VariantLaddersModule.class));

set.post = new WoodPostBlock(module, set.fence, "", false).setCondition(() -> Quark.ZETA.modules.isEnabledOrOverlapping(WoodenPostsModule.class));
set.strippedPost = new WoodPostBlock(module, set.fence, "stripped_", false).setCondition(() -> Quark.ZETA.modules.isEnabledOrOverlapping(WoodenPostsModule.class));
set.post = new WoodPostBlock(module, set.fence, "", sound).setCondition(() -> Quark.ZETA.modules.isEnabledOrOverlapping(WoodenPostsModule.class));
set.strippedPost = new WoodPostBlock(module, set.fence, "stripped_", sound).setCondition(() -> Quark.ZETA.modules.isEnabledOrOverlapping(WoodenPostsModule.class));

set.hollowLog = new HollowLogBlock(set.log, module, flammable).setCondition(() -> Quark.ZETA.modules.isEnabledOrOverlapping(HollowLogsModule.class));

VariantChestsModule.makeChestBlocksExternal(module, name, Blocks.CHEST, () -> true);
VariantChestsModule.makeChestBlocksExternal(module, name, Blocks.CHEST, sound, () -> true);

set.signItem = new ZetaSignItem(module, set.sign, set.wallSign);
set.hangingSignItem = new ZetaHangingSignItem(module, set.ceilingHangingSign, set.wallHangingSign);
Expand Down
25 changes: 13 additions & 12 deletions src/main/java/org/violetmoon/quark/base/util/VanillaWoods.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,24 @@

import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.SoundType;

public class VanillaWoods {

public static record Wood(String name, Block log, Block wood, Block planks, Block leaf, Block fence, boolean nether) { }
public static record Wood(String name, Block log, Block wood, Block planks, Block leaf, Block fence, boolean nether, SoundType sound) { }

public static Wood OAK = new Wood("oak", Blocks.OAK_LOG, Blocks.OAK_WOOD, Blocks.OAK_PLANKS, Blocks.OAK_LEAVES, Blocks.OAK_FENCE, false);
public static Wood SPRUCE = new Wood("spruce", Blocks.SPRUCE_LOG, Blocks.SPRUCE_WOOD, Blocks.SPRUCE_PLANKS, Blocks.SPRUCE_LEAVES, Blocks.SPRUCE_FENCE, false);
public static Wood BIRCH = new Wood("birch", Blocks.BIRCH_LOG, Blocks.BIRCH_WOOD, Blocks.BIRCH_PLANKS, Blocks.BIRCH_LEAVES, Blocks.BIRCH_FENCE, false);
public static Wood JUNGLE = new Wood("jungle", Blocks.JUNGLE_LOG, Blocks.JUNGLE_WOOD, Blocks.JUNGLE_PLANKS, Blocks.JUNGLE_LEAVES, Blocks.JUNGLE_FENCE, false);
public static Wood ACACIA = new Wood("acacia", Blocks.ACACIA_LOG, Blocks.ACACIA_WOOD, Blocks.ACACIA_PLANKS, Blocks.ACACIA_LEAVES, Blocks.ACACIA_FENCE, false);
public static Wood DARK_OAK = new Wood("dark_oak", Blocks.DARK_OAK_LOG, Blocks.DARK_OAK_WOOD, Blocks.DARK_OAK_PLANKS, Blocks.DARK_OAK_LEAVES, Blocks.DARK_OAK_FENCE, false);
public static Wood MANGROVE = new Wood("mangrove", Blocks.MANGROVE_LOG, Blocks.MANGROVE_WOOD, Blocks.MANGROVE_PLANKS, Blocks.MANGROVE_LEAVES, Blocks.MANGROVE_FENCE, false);
public static Wood BAMBOO = new Wood("bamboo", Blocks.BAMBOO_BLOCK, null, Blocks.BAMBOO_PLANKS, null, Blocks.BAMBOO_FENCE, false);
public static Wood CHERRY = new Wood("cherry", Blocks.CHERRY_LOG, Blocks.CHERRY_WOOD, Blocks.CHERRY_PLANKS, Blocks.CHERRY_LEAVES, Blocks.CHERRY_FENCE, false);
public static Wood OAK = new Wood("oak", Blocks.OAK_LOG, Blocks.OAK_WOOD, Blocks.OAK_PLANKS, Blocks.OAK_LEAVES, Blocks.OAK_FENCE, false, SoundType.WOOD);
public static Wood SPRUCE = new Wood("spruce", Blocks.SPRUCE_LOG, Blocks.SPRUCE_WOOD, Blocks.SPRUCE_PLANKS, Blocks.SPRUCE_LEAVES, Blocks.SPRUCE_FENCE, false, SoundType.WOOD);
public static Wood BIRCH = new Wood("birch", Blocks.BIRCH_LOG, Blocks.BIRCH_WOOD, Blocks.BIRCH_PLANKS, Blocks.BIRCH_LEAVES, Blocks.BIRCH_FENCE, false, SoundType.WOOD);
public static Wood JUNGLE = new Wood("jungle", Blocks.JUNGLE_LOG, Blocks.JUNGLE_WOOD, Blocks.JUNGLE_PLANKS, Blocks.JUNGLE_LEAVES, Blocks.JUNGLE_FENCE, false, SoundType.WOOD);
public static Wood ACACIA = new Wood("acacia", Blocks.ACACIA_LOG, Blocks.ACACIA_WOOD, Blocks.ACACIA_PLANKS, Blocks.ACACIA_LEAVES, Blocks.ACACIA_FENCE, false, SoundType.WOOD);
public static Wood DARK_OAK = new Wood("dark_oak", Blocks.DARK_OAK_LOG, Blocks.DARK_OAK_WOOD, Blocks.DARK_OAK_PLANKS, Blocks.DARK_OAK_LEAVES, Blocks.DARK_OAK_FENCE, false, SoundType.WOOD);
public static Wood MANGROVE = new Wood("mangrove", Blocks.MANGROVE_LOG, Blocks.MANGROVE_WOOD, Blocks.MANGROVE_PLANKS, Blocks.MANGROVE_LEAVES, Blocks.MANGROVE_FENCE, false, SoundType.WOOD);
public static Wood BAMBOO = new Wood("bamboo", Blocks.BAMBOO_BLOCK, null, Blocks.BAMBOO_PLANKS, null, Blocks.BAMBOO_FENCE, false, SoundType.BAMBOO_WOOD);
public static Wood CHERRY = new Wood("cherry", Blocks.CHERRY_LOG, Blocks.CHERRY_WOOD, Blocks.CHERRY_PLANKS, Blocks.CHERRY_LEAVES, Blocks.CHERRY_FENCE, false, SoundType.BAMBOO);

public static Wood CRIMSON = new Wood("crimson", Blocks.CRIMSON_STEM, Blocks.CRIMSON_HYPHAE, Blocks.CRIMSON_PLANKS, null, Blocks.CRIMSON_FENCE, true);
public static Wood WARPED = new Wood("warped", Blocks.WARPED_STEM, Blocks.WARPED_HYPHAE, Blocks.WARPED_PLANKS, null, Blocks.WARPED_FENCE, true);
public static Wood CRIMSON = new Wood("crimson", Blocks.CRIMSON_STEM, Blocks.CRIMSON_HYPHAE, Blocks.CRIMSON_PLANKS, null, Blocks.CRIMSON_FENCE, true, SoundType.STEM);
public static Wood WARPED = new Wood("warped", Blocks.WARPED_STEM, Blocks.WARPED_HYPHAE, Blocks.WARPED_PLANKS, null, Blocks.WARPED_FENCE, true, SoundType.STEM);


public static final Wood[] OVERWORLD_NON_OAK = new Wood[] {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,24 @@
package org.violetmoon.quark.content.building.block;

import org.violetmoon.zeta.block.ZetaBlock;
import org.violetmoon.zeta.module.ZetaModule;

import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.item.CreativeModeTabs;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.SoundType;
import net.minecraft.world.level.block.state.BlockState;
import org.violetmoon.zeta.block.ZetaBlock;
import org.violetmoon.zeta.module.ZetaModule;

public class VariantBookshelfBlock extends ZetaBlock {

private final boolean flammable;

public VariantBookshelfBlock(String type, ZetaModule module, boolean flammable) {
super(type + "_bookshelf", module, Block.Properties.copy(Blocks.BOOKSHELF));
public VariantBookshelfBlock(String type, ZetaModule module, boolean flammable, SoundType sound) {
super(type + "_bookshelf", module, Block.Properties.copy(Blocks.BOOKSHELF).sound(sound));
this.flammable = flammable;
setCreativeTab(CreativeModeTabs.FUNCTIONAL_BLOCKS, Blocks.BOOKSHELF, false);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,19 @@

import java.util.function.BooleanSupplier;

import org.jetbrains.annotations.NotNull;
import org.violetmoon.zeta.block.IZetaBlock;
import org.violetmoon.zeta.module.ZetaModule;
import org.violetmoon.zeta.registry.CreativeTabManager;
import org.violetmoon.zeta.registry.RenderLayerRegistry;

import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.NonNullList;
import net.minecraft.world.item.CreativeModeTabs;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.LadderBlock;
import net.minecraft.world.level.block.state.BlockState;
import org.violetmoon.zeta.block.IZetaBlock;
import org.violetmoon.zeta.module.ZetaModule;
import org.violetmoon.zeta.registry.CreativeTabManager;
import org.violetmoon.zeta.registry.RenderLayerRegistry;

public class VariantLadderBlock extends LadderBlock implements IZetaBlock {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,10 @@ public class WoodPostBlock extends ZetaBlock implements SimpleWaterloggedBlock {
BooleanProperty.create("chain_east")
};

public WoodPostBlock(ZetaModule module, Block parent, String prefix, boolean nether) {
public WoodPostBlock(ZetaModule module, Block parent, String prefix, SoundType sound) {
super(Quark.ZETA.registryUtil.inherit(parent, s -> prefix + s.replace("_fence", "_post")),
module,
Properties.copy(parent).sound(nether ? SoundType.STEM : SoundType.WOOD));
Properties.copy(parent).sound(sound));

BlockState state = stateDefinition.any().setValue(WATERLOGGED, false).setValue(AXIS, Axis.Y);
for(BooleanProperty prop : CHAINED)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public class VariantBookshelvesModule extends ZetaModule {
public final void register(ZRegister event) {
CreativeTabManager.daisyChain();
for(Wood type : VanillaWoods.NON_OAK)
new VariantBookshelfBlock(type.name(), this, !type.nether());
new VariantBookshelfBlock(type.name(), this, !type.nether(), type.sound());
CreativeTabManager.endDaisyChain();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
import net.minecraft.world.level.ServerLevelAccessor;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.SoundType;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
Expand Down Expand Up @@ -99,10 +100,10 @@ public final void register(ZRegister event) {
event.getRegistry().register(MixedExclusionRecipe.SERIALIZER, "mixed_exclusion", Registries.RECIPE_SERIALIZER);

for(Wood s : VanillaWoods.ALL)
makeChestBlocks(s.name(), Blocks.CHEST);
makeChestBlocks("nether_brick", Blocks.NETHER_BRICKS);
makeChestBlocks("purpur", Blocks.PURPUR_BLOCK);
makeChestBlocks("prismarine", Blocks.PRISMARINE);
makeChestBlocks(s.name(), Blocks.CHEST, s.sound());
makeChestBlocks("nether_brick", Blocks.NETHER_BRICKS, null);
makeChestBlocks("purpur", Blocks.PURPUR_BLOCK, null);
makeChestBlocks("prismarine", Blocks.PRISMARINE, null);

CreativeTabManager.daisyChain();
for(Block regularChest : regularChests)
Expand All @@ -117,26 +118,30 @@ public final void register(ZRegister event) {
StructureBlockReplacementHandler.addReplacement(this::getGenerationChestBlockState);
}

private void makeChestBlocks(String name, Block base) {
makeChestBlocks(this, name, base, () -> true);
private void makeChestBlocks(String name, Block base, @Nullable SoundType sound) {
makeChestBlocks(this, name, base, sound, () -> true);
}

private void makeChestBlocks(ZetaModule module, String name, Block base, BooleanSupplier condition) {
VariantChestBlock regularChest = new VariantChestBlock(name, module, () -> chestTEType, BlockBehaviour.Properties.copy(base)).setCondition(condition);
private void makeChestBlocks(ZetaModule module, String name, Block base, @Nullable SoundType sound, BooleanSupplier condition) {
BlockBehaviour.Properties props = BlockBehaviour.Properties.copy(base);
if(sound != null)
props = props.sound(sound);

VariantChestBlock regularChest = new VariantChestBlock(name, module, () -> chestTEType, props).setCondition(condition);
regularChests.add(regularChest);
chestMappings.put(TagKey.create(Registries.STRUCTURE, new ResourceLocation(Quark.MOD_ID, name + "_chest_structures")), regularChest);

VariantTrappedChestBlock trappedChest = new VariantTrappedChestBlock(name, module, () -> trappedChestTEType, BlockBehaviour.Properties.copy(base)).setCondition(condition);
VariantTrappedChestBlock trappedChest = new VariantTrappedChestBlock(name, module, () -> trappedChestTEType, props).setCondition(condition);
trappedChests.add(trappedChest);
trappedChestMappings.put(TagKey.create(Registries.STRUCTURE, new ResourceLocation(Quark.MOD_ID, name + "_chest_structures")), trappedChest);

Quark.LOOTR_INTEGRATION.makeChestBlocks(module, name, base, condition, regularChest, trappedChest);
}

//only enables the block if the variant chests module is enabled
public static void makeChestBlocksExternal(ZetaModule module, String name, Block base, BooleanSupplier condition) {
public static void makeChestBlocksExternal(ZetaModule module, String name, Block base, @Nullable SoundType sound, BooleanSupplier condition) {
VariantChestsModule me = Quark.ZETA.modules.get(VariantChestsModule.class);
me.makeChestBlocks(module, name, base, () -> me.enabled && condition.getAsBoolean());
me.makeChestBlocks(module, name, base, sound, () -> me.enabled && condition.getAsBoolean());
}

/// STUFF that has to happen after all the makeChestBlocks calls are performed...! ///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ public final void register(ZRegister event) {
Block b = wood.fence();

boolean nether = wood.nether();
WoodPostBlock post = new WoodPostBlock(this, b, "", nether);
WoodPostBlock stripped = new WoodPostBlock(this, b, "stripped_", nether);
WoodPostBlock post = new WoodPostBlock(this, b, "", wood.sound());
WoodPostBlock stripped = new WoodPostBlock(this, b, "stripped_", wood.sound());
ToolInteractionHandler.registerInteraction(ToolActions.AXE_STRIP, post, stripped);
}
}
Expand Down

0 comments on commit 2af9786

Please sign in to comment.