Improve feature generation

This commit is contained in:
Martin Prokoph
2025-01-11 14:02:07 +01:00
parent f00ac39b79
commit 663e85e9a8
19 changed files with 316 additions and 164 deletions

View File

@@ -1,28 +1,49 @@
package eu.midnightdust.motschen.rocks.util;
import net.minecraft.block.Block;
import net.minecraft.block.WoodType;
import net.minecraft.registry.Registries;
import net.minecraft.sound.BlockSoundGroup;
import net.minecraft.block.Blocks;
import net.minecraft.util.Identifier;
import java.util.Objects;
import java.util.Arrays;
public class StickType {
public static WoodType fromBlockName(String name) {
return WoodType.stream().filter(woodType -> Objects.equals(woodType.name(), name
.replace("block.rocks.", "").replace("_stick", "")
)).findFirst().orElse(WoodType.OAK);
import static eu.midnightdust.motschen.rocks.RocksMain.id;
public enum StickType {
OAK("oak", Blocks.OAK_LOG), SPRUCE("spruce", Blocks.SPRUCE_LOG), BIRCH("birch", Blocks.BIRCH_LOG),
JUNGLE("jungle", Blocks.JUNGLE_LOG), ACACIA("acacia", Blocks.ACACIA_LOG), DARK_OAK("dark_oak", Blocks.DARK_OAK_LOG),
CHERRY("cherry", Blocks.CHERRY_LOG), MANGROVE("mangrove", Blocks.MANGROVE_LOG), PALE_OAK("pale_oak", Blocks.PALE_OAK_LOG),
BAMBOO("bamboo", Blocks.BAMBOO_BLOCK), WARPED("warped", Blocks.WARPED_STEM), CRIMSON("crimson", Blocks.CRIMSON_STEM);
private final String name;
private final Block baseBlock;
StickType(String name, Block baseBlock) {
this.name = name;
this.baseBlock = baseBlock;
}
public static Block getBaseBlock(WoodType woodType) {
String logName = woodType.name() + "_";
if (woodType.soundType() == BlockSoundGroup.NETHER_WOOD) logName += "stem";
else if (woodType.soundType() == BlockSoundGroup.BAMBOO_WOOD) logName += "block";
else logName += "log";
if (Registries.BLOCK.containsId(Identifier.ofVanilla(logName))) {
return Registries.BLOCK.get(Identifier.ofVanilla(logName));
}
return null;
public String getName() {
return this.name;
}
public Block getBaseBlock() {
return baseBlock;
}
public Identifier[] getVariations() {
var variations = new Identifier[3];
variations[0] = id("small_"+name);
variations[1] = id("medium_"+name);
variations[2] = id("large_"+name);
return variations;
}
public static StickType fromBlockName(String name) {
return Arrays.stream(values()).filter(type -> name
.replace("block.rocks.", "")
.replace("small_", "")
.replace("medium_", "")
.replace("large_", "")
.equals(type.getName())).findFirst().orElse(StickType.OAK);
}
}