mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2026-01-03 22:26:16 +00:00
声音重构part 2
This commit is contained in:
@@ -14,7 +14,10 @@ import net.momirealms.craftengine.core.block.parser.BlockNbtParser;
|
||||
import net.momirealms.craftengine.core.block.properties.Properties;
|
||||
import net.momirealms.craftengine.core.block.properties.Property;
|
||||
import net.momirealms.craftengine.core.loot.LootTable;
|
||||
import net.momirealms.craftengine.core.pack.*;
|
||||
import net.momirealms.craftengine.core.pack.LoadingSequence;
|
||||
import net.momirealms.craftengine.core.pack.Pack;
|
||||
import net.momirealms.craftengine.core.pack.PendingConfigSection;
|
||||
import net.momirealms.craftengine.core.pack.ResourceLocation;
|
||||
import net.momirealms.craftengine.core.pack.cache.IdAllocator;
|
||||
import net.momirealms.craftengine.core.pack.model.generation.AbstractModelGenerator;
|
||||
import net.momirealms.craftengine.core.pack.model.generation.ModelGeneration;
|
||||
@@ -79,7 +82,8 @@ public abstract class AbstractBlockManager extends AbstractModelGenerator implem
|
||||
// 原版方块的属性缓存
|
||||
protected final BlockSettings[] vanillaBlockSettings;
|
||||
// 临时存储哪些视觉方块被使用了
|
||||
protected final Set<BlockStateWrapper> tempVisualBlocksInUse = new HashSet<>();
|
||||
protected final Set<BlockStateWrapper> tempVisualBlockStatesInUse = new HashSet<>();
|
||||
protected final Set<Key> tempVisualBlocksInUse = new HashSet<>();
|
||||
// 声音映射表,和使用了哪些视觉方块有关
|
||||
protected Map<Key, Key> soundReplacements = Map.of();
|
||||
|
||||
@@ -184,6 +188,7 @@ public abstract class AbstractBlockManager extends AbstractModelGenerator implem
|
||||
|
||||
protected void clearCache() {
|
||||
this.tempVanillaBlockStateModels.clear();
|
||||
this.tempVisualBlockStatesInUse.clear();
|
||||
this.tempVisualBlocksInUse.clear();
|
||||
}
|
||||
|
||||
@@ -528,12 +533,14 @@ public abstract class AbstractBlockManager extends AbstractModelGenerator implem
|
||||
}
|
||||
state.setBehavior(blockBehavior);
|
||||
int internalId = state.customBlockState().registryId();
|
||||
int appearanceId = state.vanillaBlockState().registryId();
|
||||
BlockStateWrapper visualState = state.vanillaBlockState();
|
||||
int appearanceId = visualState.registryId();
|
||||
int index = internalId - AbstractBlockManager.this.vanillaBlockStateCount;
|
||||
AbstractBlockManager.this.immutableBlockStates[index] = state;
|
||||
AbstractBlockManager.this.blockStateMappings[internalId] = appearanceId;
|
||||
AbstractBlockManager.this.appearanceToRealState.computeIfAbsent(appearanceId, k -> new IntArrayList()).add(internalId);
|
||||
AbstractBlockManager.this.tempVisualBlocksInUse.add(state.vanillaBlockState());
|
||||
AbstractBlockManager.this.tempVisualBlockStatesInUse.add(visualState);
|
||||
AbstractBlockManager.this.tempVisualBlocksInUse.add(getBlockOwnerId(visualState));
|
||||
AbstractBlockManager.this.applyPlatformSettings(state);
|
||||
// generate mod assets
|
||||
if (Config.generateModAssets()) {
|
||||
|
||||
@@ -2,6 +2,8 @@ package net.momirealms.craftengine.core.block;
|
||||
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public final class BlockKeys {
|
||||
private BlockKeys() {}
|
||||
|
||||
@@ -243,4 +245,33 @@ public final class BlockKeys {
|
||||
public static final Key BAMBOO_WALL_HANGING_SIGN = Key.of("minecraft:bamboo_wall_hanging_sign");
|
||||
|
||||
public static final Key CACTUS = Key.of("minecraft:cactus");
|
||||
|
||||
public static final List<Key> WOODEN_TRAPDOORS = List.of(OAK_TRAPDOOR, SPRUCE_TRAPDOOR, BIRCH_TRAPDOOR,
|
||||
ACACIA_TRAPDOOR, PALE_OAK_TRAPDOOR, DARK_OAK_TRAPDOOR, MANGROVE_TRAPDOOR, JUNGLE_TRAPDOOR);
|
||||
public static final List<Key> CHERRY_TRAPDOORS = List.of(CHERRY_TRAPDOOR);
|
||||
public static final List<Key> BAMBOO_TRAPDOORS = List.of(BAMBOO_TRAPDOOR);
|
||||
public static final List<Key> NETHER_TRAPDOORS = List.of(WARPED_TRAPDOOR, CRIMSON_TRAPDOOR);
|
||||
public static final List<Key> COPPER_TRAPDOORS = List.of(COPPER_TRAPDOOR, EXPOSED_COPPER_TRAPDOOR, WEATHERED_COPPER_TRAPDOOR, OXIDIZED_COPPER_DOOR,
|
||||
WAXED_COPPER_TRAPDOOR, WAXED_EXPOSED_COPPER_TRAPDOOR, WAXED_WEATHERED_COPPER_TRAPDOOR, WAXED_OXIDIZED_COPPER_TRAPDOOR);
|
||||
|
||||
public static final List<Key> WOODEN_DOORS = List.of(OAK_DOOR, SPRUCE_DOOR, BIRCH_DOOR,
|
||||
ACACIA_DOOR, PALE_OAK_DOOR, DARK_OAK_DOOR, MANGROVE_DOOR, JUNGLE_DOOR);
|
||||
public static final List<Key> CHERRY_DOORS = List.of(CHERRY_DOOR);
|
||||
public static final List<Key> BAMBOO_DOORS = List.of(BAMBOO_DOOR);
|
||||
public static final List<Key> NETHER_DOORS = List.of(WARPED_DOOR, CRIMSON_DOOR);
|
||||
public static final List<Key> COPPER_DOORS = List.of(COPPER_DOOR, EXPOSED_COPPER_DOOR, WEATHERED_COPPER_DOOR, OXIDIZED_COPPER_DOOR,
|
||||
WAXED_COPPER_DOOR, WAXED_EXPOSED_COPPER_DOOR, WAXED_WEATHERED_COPPER_DOOR, WAXED_OXIDIZED_COPPER_DOOR);
|
||||
|
||||
public static final List<Key> WOODEN_FENCE_GATES = List.of(OAK_FENCE_GATE, SPRUCE_FENCE_GATE, BIRCH_FENCE_GATE,
|
||||
ACACIA_FENCE_GATE, PALE_OAK_FENCE_GATE, DARK_OAK_FENCE_GATE, MANGROVE_FENCE_GATE, JUNGLE_FENCE_GATE);
|
||||
public static final List<Key> CHERRY_FENCE_GATES = List.of(CHERRY_FENCE_GATE);
|
||||
public static final List<Key> BAMBOO_FENCE_GATES = List.of(BAMBOO_FENCE_GATE);
|
||||
public static final List<Key> NETHER_FENCE_GATES = List.of(WARPED_FENCE_GATE, CRIMSON_FENCE_GATE);
|
||||
|
||||
public static final List<Key> WOODEN_BUTTONS = List.of(OAK_BUTTON, SPRUCE_BUTTON, BIRCH_BUTTON, JUNGLE_BUTTON,
|
||||
ACACIA_BUTTON, DARK_OAK_BUTTON, PALE_OAK_BUTTON, MANGROVE_BUTTON);
|
||||
public static final List<Key> CHERRY_BUTTONS = List.of(CHERRY_BUTTON);
|
||||
public static final List<Key> BAMBOO_BUTTONS = List.of(BAMBOO_BUTTON);
|
||||
public static final List<Key> NETHER_BUTTONS = List.of(CRIMSON_BUTTON, WARPED_BUTTON);
|
||||
public static final List<Key> STONE_BUTTONS = List.of(STONE_BUTTON, POLISHED_BLACKSTONE_BUTTON);
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@ import net.momirealms.craftengine.core.item.context.BlockPlaceContext;
|
||||
import net.momirealms.craftengine.core.loot.LootTable;
|
||||
import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext;
|
||||
import net.momirealms.craftengine.core.plugin.context.event.EventTrigger;
|
||||
import net.momirealms.craftengine.core.plugin.context.function.Function;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.sparrow.nbt.CompoundTag;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -13,7 +12,6 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface CustomBlock {
|
||||
|
||||
|
||||
@@ -62,11 +62,6 @@ public final class ItemKeys {
|
||||
public static final Key BLACK_DYE = Key.of("minecraft:black_dye");
|
||||
public static final Key FIREWORK_STAR = Key.of("minecraft:firework_star");
|
||||
|
||||
public static final Key[] AXES = new Key[] {
|
||||
WOODEN_AXE, STONE_AXE, IRON_AXE, GOLDEN_AXE, DIAMOND_AXE, NETHERITE_AXE
|
||||
};
|
||||
|
||||
public static final Key[] WATER_BUCKETS = new Key[] {
|
||||
WATER_BUCKET, COD_BUCKET, SALMON_BUCKET, TROPICAL_FISH_BUCKET, TADPOLE_BUCKET, PUFFERFISH_BUCKET, AXOLOTL_BUCKET
|
||||
};
|
||||
public static final Key[] AXES = new Key[] {WOODEN_AXE, STONE_AXE, IRON_AXE, GOLDEN_AXE, DIAMOND_AXE, NETHERITE_AXE};
|
||||
public static final Key[] WATER_BUCKETS = new Key[] {WATER_BUCKET, COD_BUCKET, SALMON_BUCKET, TROPICAL_FISH_BUCKET, TADPOLE_BUCKET, PUFFERFISH_BUCKET, AXOLOTL_BUCKET};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
package net.momirealms.craftengine.core.sound;
|
||||
|
||||
import net.momirealms.craftengine.core.block.BlockKeys;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public record SoundSet(List<Key> blocks, Key openSound, Key closeSound) {
|
||||
// Trapdoor sound sets
|
||||
public static final SoundSet WOODEN_TRAPDOOR = new SoundSet(BlockKeys.WOODEN_TRAPDOORS, Sounds.WOODEN_TRAPDOOR_OPEN, Sounds.WOODEN_TRAPDOOR_CLOSE);
|
||||
public static final SoundSet NETHER_WOOD_TRAPDOOR = new SoundSet(BlockKeys.NETHER_TRAPDOORS, Sounds.NETHER_WOOD_TRAPDOOR_OPEN, Sounds.NETHER_WOOD_TRAPDOOR_CLOSE);
|
||||
public static final SoundSet BAMBOO_WOOD_TRAPDOOR = new SoundSet(BlockKeys.BAMBOO_TRAPDOORS, Sounds.BAMBOO_WOOD_TRAPDOOR_OPEN, Sounds.BAMBOO_WOOD_TRAPDOOR_CLOSE);
|
||||
public static final SoundSet CHERRY_WOOD_TRAPDOOR = new SoundSet(BlockKeys.CHERRY_TRAPDOORS, Sounds.CHERRY_WOOD_TRAPDOOR_OPEN, Sounds.CHERRY_WOOD_TRAPDOOR_CLOSE);
|
||||
public static final SoundSet COPPER_TRAPDOOR = new SoundSet(BlockKeys.COPPER_TRAPDOORS, Sounds.COPPER_TRAPDOOR_OPEN, Sounds.COPPER_TRAPDOOR_CLOSE);
|
||||
|
||||
// Door sound sets
|
||||
public static final SoundSet WOODEN_DOOR = new SoundSet(BlockKeys.WOODEN_DOORS, Sounds.WOODEN_DOOR_OPEN, Sounds.WOODEN_DOOR_CLOSE);
|
||||
public static final SoundSet NETHER_WOOD_DOOR = new SoundSet(BlockKeys.NETHER_DOORS, Sounds.NETHER_WOOD_DOOR_OPEN, Sounds.NETHER_WOOD_DOOR_CLOSE);
|
||||
public static final SoundSet BAMBOO_WOOD_DOOR = new SoundSet(BlockKeys.BAMBOO_DOORS, Sounds.BAMBOO_WOOD_DOOR_OPEN, Sounds.BAMBOO_WOOD_DOOR_CLOSE);
|
||||
public static final SoundSet CHERRY_WOOD_DOOR = new SoundSet(BlockKeys.CHERRY_DOORS, Sounds.CHERRY_WOOD_DOOR_OPEN, Sounds.CHERRY_WOOD_DOOR_CLOSE);
|
||||
public static final SoundSet COPPER_DOOR = new SoundSet(BlockKeys.COPPER_DOORS, Sounds.COPPER_DOOR_OPEN, Sounds.COPPER_DOOR_CLOSE);
|
||||
|
||||
// Button sound sets
|
||||
public static final SoundSet WOODEN_BUTTON = new SoundSet(BlockKeys.WOODEN_BUTTONS, Sounds.WOODEN_BUTTON_CLICK_ON, Sounds.WOODEN_BUTTON_CLICK_OFF);
|
||||
public static final SoundSet NETHER_WOOD_BUTTON = new SoundSet(BlockKeys.NETHER_BUTTONS, Sounds.NETHER_WOOD_BUTTON_CLICK_ON, Sounds.NETHER_WOOD_BUTTON_CLICK_OFF);
|
||||
public static final SoundSet BAMBOO_WOOD_BUTTON = new SoundSet(BlockKeys.BAMBOO_BUTTONS, Sounds.BAMBOO_WOOD_BUTTON_CLICK_ON, Sounds.BAMBOO_WOOD_BUTTON_CLICK_OFF);
|
||||
public static final SoundSet CHERRY_WOOD_BUTTON = new SoundSet(BlockKeys.CHERRY_BUTTONS, Sounds.CHERRY_WOOD_BUTTON_CLICK_ON, Sounds.CHERRY_WOOD_BUTTON_CLICK_OFF);
|
||||
public static final SoundSet STONE_BUTTON = new SoundSet(BlockKeys.STONE_BUTTONS, Sounds.STONE_BUTTON_CLICK_ON, Sounds.STONE_BUTTON_CLICK_OFF);
|
||||
|
||||
// Fence gate sound sets
|
||||
public static final SoundSet WOODEN_FENCE_GATE = new SoundSet(BlockKeys.WOODEN_FENCE_GATES, Sounds.WOODEN_FENCE_GATE_OPEN, Sounds.WOODEN_FENCE_GATE_CLOSE);
|
||||
public static final SoundSet NETHER_WOOD_FENCE_GATE = new SoundSet(BlockKeys.NETHER_FENCE_GATES, Sounds.NETHER_WOOD_FENCE_GATE_OPEN, Sounds.NETHER_WOOD_FENCE_GATE_CLOSE);
|
||||
public static final SoundSet BAMBOO_WOOD_FENCE_GATE = new SoundSet(BlockKeys.BAMBOO_FENCE_GATES, Sounds.BAMBOO_WOOD_FENCE_GATE_OPEN, Sounds.BAMBOO_WOOD_FENCE_GATE_CLOSE);
|
||||
public static final SoundSet CHERRY_WOOD_FENCE_GATE = new SoundSet(BlockKeys.CHERRY_FENCE_GATES, Sounds.CHERRY_WOOD_FENCE_GATE_OPEN, Sounds.CHERRY_WOOD_FENCE_GATE_CLOSE);
|
||||
|
||||
// 获取所有声音集合的便捷方法
|
||||
public static List<SoundSet> getAllSoundSets() {
|
||||
return List.of(
|
||||
// Trapdoors
|
||||
WOODEN_TRAPDOOR, NETHER_WOOD_TRAPDOOR, BAMBOO_WOOD_TRAPDOOR,
|
||||
CHERRY_WOOD_TRAPDOOR, COPPER_TRAPDOOR,
|
||||
// Doors
|
||||
WOODEN_DOOR, NETHER_WOOD_DOOR, BAMBOO_WOOD_DOOR,
|
||||
CHERRY_WOOD_DOOR, COPPER_DOOR,
|
||||
// Fence gates
|
||||
WOODEN_FENCE_GATE, NETHER_WOOD_FENCE_GATE,
|
||||
BAMBOO_WOOD_FENCE_GATE, CHERRY_WOOD_FENCE_GATE,
|
||||
// Buttons
|
||||
WOODEN_BUTTON, NETHER_WOOD_BUTTON, BAMBOO_WOOD_BUTTON,
|
||||
CHERRY_WOOD_BUTTON, STONE_BUTTON
|
||||
);
|
||||
}
|
||||
|
||||
// 按类型获取声音集合的方法
|
||||
public static List<SoundSet> getTrapdoorSoundSets() {
|
||||
return List.of(WOODEN_TRAPDOOR, NETHER_WOOD_TRAPDOOR, BAMBOO_WOOD_TRAPDOOR,
|
||||
CHERRY_WOOD_TRAPDOOR, COPPER_TRAPDOOR);
|
||||
}
|
||||
|
||||
public static List<SoundSet> getDoorSoundSets() {
|
||||
return List.of(WOODEN_DOOR, NETHER_WOOD_DOOR, BAMBOO_WOOD_DOOR,
|
||||
CHERRY_WOOD_DOOR, COPPER_DOOR);
|
||||
}
|
||||
|
||||
public static List<SoundSet> getFenceGateSoundSets() {
|
||||
return List.of(WOODEN_FENCE_GATE, NETHER_WOOD_FENCE_GATE,
|
||||
BAMBOO_WOOD_FENCE_GATE, CHERRY_WOOD_FENCE_GATE);
|
||||
}
|
||||
|
||||
public static List<SoundSet> getButtonSoundSets() {
|
||||
return List.of(WOODEN_BUTTON, NETHER_WOOD_BUTTON, BAMBOO_WOOD_BUTTON,
|
||||
CHERRY_WOOD_BUTTON, STONE_BUTTON);
|
||||
}
|
||||
|
||||
private static final Map<Key, SoundSet> SOUND_SETS = new HashMap<>();
|
||||
|
||||
static {
|
||||
for (SoundSet set : getAllSoundSets()) {
|
||||
set.blocks.forEach(block -> {
|
||||
SOUND_SETS.put(block, set);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static SoundSet getByBlock(Key blockType) {
|
||||
return SOUND_SETS.get(blockType);
|
||||
}
|
||||
}
|
||||
@@ -1,35 +1,10 @@
|
||||
package net.momirealms.craftengine.core.sound;
|
||||
|
||||
import net.momirealms.craftengine.core.block.BlockKeys;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public final class Sounds {
|
||||
private Sounds() {}
|
||||
|
||||
public static final List<Key> WOODEN_TRAPDOORS = List.of(BlockKeys.OAK_TRAPDOOR, BlockKeys.SPRUCE_TRAPDOOR, BlockKeys.BIRCH_TRAPDOOR,
|
||||
BlockKeys.ACACIA_TRAPDOOR, BlockKeys.PALE_OAK_TRAPDOOR, BlockKeys.DARK_OAK_TRAPDOOR, BlockKeys.MANGROVE_TRAPDOOR, BlockKeys.JUNGLE_TRAPDOOR);
|
||||
public static final List<Key> CHERRY_TRAPDOORS = List.of(BlockKeys.CHERRY_TRAPDOOR);
|
||||
public static final List<Key> BAMBOO_TRAPDOORS = List.of(BlockKeys.BAMBOO_TRAPDOOR);
|
||||
public static final List<Key> NETHER_TRAPDOORS = List.of(BlockKeys.WARPED_TRAPDOOR, BlockKeys.CRIMSON_TRAPDOOR);
|
||||
public static final List<Key> COPPER_TRAPDOORS = List.of(BlockKeys.COPPER_TRAPDOOR, BlockKeys.EXPOSED_COPPER_TRAPDOOR, BlockKeys.WEATHERED_COPPER_TRAPDOOR, BlockKeys.OXIDIZED_COPPER_DOOR,
|
||||
BlockKeys.WAXED_COPPER_TRAPDOOR, BlockKeys.WAXED_EXPOSED_COPPER_TRAPDOOR, BlockKeys.WAXED_WEATHERED_COPPER_TRAPDOOR, BlockKeys.WAXED_OXIDIZED_COPPER_TRAPDOOR);
|
||||
|
||||
public static final List<Key> WOODEN_DOORS = List.of(BlockKeys.OAK_DOOR, BlockKeys.SPRUCE_DOOR, BlockKeys.BIRCH_DOOR,
|
||||
BlockKeys.ACACIA_DOOR, BlockKeys.PALE_OAK_DOOR, BlockKeys.DARK_OAK_DOOR, BlockKeys.MANGROVE_DOOR, BlockKeys.JUNGLE_DOOR);
|
||||
public static final List<Key> CHERRY_DOORS = List.of(BlockKeys.CHERRY_DOOR);
|
||||
public static final List<Key> BAMBOO_DOORS = List.of(BlockKeys.BAMBOO_DOOR);
|
||||
public static final List<Key> NETHER_DOORS = List.of(BlockKeys.WARPED_DOOR, BlockKeys.CRIMSON_DOOR);
|
||||
public static final List<Key> COPPER_DOORS = List.of(BlockKeys.COPPER_DOOR, BlockKeys.EXPOSED_COPPER_DOOR, BlockKeys.WEATHERED_COPPER_DOOR, BlockKeys.OXIDIZED_COPPER_DOOR,
|
||||
BlockKeys.WAXED_COPPER_DOOR, BlockKeys.WAXED_EXPOSED_COPPER_DOOR, BlockKeys.WAXED_WEATHERED_COPPER_DOOR, BlockKeys.WAXED_OXIDIZED_COPPER_DOOR);
|
||||
|
||||
public static final List<Key> WOODEN_FENCE_GATES = List.of(BlockKeys.OAK_FENCE_GATE, BlockKeys.SPRUCE_FENCE_GATE, BlockKeys.BIRCH_FENCE_GATE,
|
||||
BlockKeys.ACACIA_FENCE_GATE, BlockKeys.PALE_OAK_FENCE_GATE, BlockKeys.DARK_OAK_FENCE_GATE, BlockKeys.MANGROVE_FENCE_GATE, BlockKeys.JUNGLE_FENCE_GATE);
|
||||
public static final List<Key> CHERRY_FENCE_GATES = List.of(BlockKeys.CHERRY_FENCE_GATE);
|
||||
public static final List<Key> BAMBOO_FENCE_GATES = List.of(BlockKeys.BAMBOO_FENCE_GATE);
|
||||
public static final List<Key> NETHER_FENCE_GATES = List.of(BlockKeys.WARPED_FENCE_GATE, BlockKeys.CRIMSON_FENCE_GATE);
|
||||
|
||||
public static final Key WOODEN_TRAPDOOR_OPEN = Key.of("block.wooden_trapdoor.open");
|
||||
public static final Key WOODEN_TRAPDOOR_CLOSE = Key.of("block.wooden_trapdoor.close");
|
||||
public static final Key WOODEN_DOOR_OPEN = Key.of("block.wooden_door.open");
|
||||
@@ -58,4 +33,14 @@ public final class Sounds {
|
||||
public static final Key COPPER_TRAPDOOR_CLOSE = Key.of("block.copper_trapdoor.close");
|
||||
public static final Key COPPER_DOOR_OPEN = Key.of("block.copper_door.open");
|
||||
public static final Key COPPER_DOOR_CLOSE = Key.of("block.copper_door.close");
|
||||
public static final Key STONE_BUTTON_CLICK_OFF = Key.of("block.stone_button.click_off");
|
||||
public static final Key STONE_BUTTON_CLICK_ON = Key.of("block.stone_button.click_on");
|
||||
public static final Key CHERRY_WOOD_BUTTON_CLICK_OFF = Key.of("block.cherry_wood_button.click_off");
|
||||
public static final Key CHERRY_WOOD_BUTTON_CLICK_ON = Key.of("block.cherry_wood_button.click_on");
|
||||
public static final Key NETHER_WOOD_BUTTON_CLICK_OFF = Key.of("block.nether_wood_button.click_off");
|
||||
public static final Key NETHER_WOOD_BUTTON_CLICK_ON = Key.of("block.nether_wood_button.click_on");
|
||||
public static final Key BAMBOO_WOOD_BUTTON_CLICK_OFF = Key.of("block.bamboo_wood_button.click_off");
|
||||
public static final Key BAMBOO_WOOD_BUTTON_CLICK_ON = Key.of("block.bamboo_wood_button.click_on");
|
||||
public static final Key WOODEN_BUTTON_CLICK_OFF = Key.of("block.wooden_button.click_off");
|
||||
public static final Key WOODEN_BUTTON_CLICK_ON = Key.of("block.wooden_button.click_on");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user