mirror of
https://github.com/Minestom/Minestom.git
synced 2024-09-24 20:42:39 +02:00
Support for non-linear protocol IDs in codegen
This commit is contained in:
parent
1b4f55bb9f
commit
7b53ec0999
@ -7,95 +7,97 @@ import net.minestom.server.utils.NamespaceID;
|
||||
@SuppressWarnings({"deprecation"})
|
||||
|
||||
public enum Biome {
|
||||
OCEAN("minecraft:ocean"),
|
||||
PLAINS("minecraft:plains"),
|
||||
DESERT("minecraft:desert"),
|
||||
MOUNTAINS("minecraft:mountains"),
|
||||
FOREST("minecraft:forest"),
|
||||
TAIGA("minecraft:taiga"),
|
||||
SWAMP("minecraft:swamp"),
|
||||
RIVER("minecraft:river"),
|
||||
NETHER_WASTES("minecraft:nether_wastes"),
|
||||
THE_END("minecraft:the_end"),
|
||||
FROZEN_OCEAN("minecraft:frozen_ocean"),
|
||||
FROZEN_RIVER("minecraft:frozen_river"),
|
||||
SNOWY_TUNDRA("minecraft:snowy_tundra"),
|
||||
SNOWY_MOUNTAINS("minecraft:snowy_mountains"),
|
||||
MUSHROOM_FIELDS("minecraft:mushroom_fields"),
|
||||
MUSHROOM_FIELD_SHORE("minecraft:mushroom_field_shore"),
|
||||
BEACH("minecraft:beach"),
|
||||
DESERT_HILLS("minecraft:desert_hills"),
|
||||
WOODED_HILLS("minecraft:wooded_hills"),
|
||||
TAIGA_HILLS("minecraft:taiga_hills"),
|
||||
MOUNTAIN_EDGE("minecraft:mountain_edge"),
|
||||
JUNGLE("minecraft:jungle"),
|
||||
JUNGLE_HILLS("minecraft:jungle_hills"),
|
||||
JUNGLE_EDGE("minecraft:jungle_edge"),
|
||||
DEEP_OCEAN("minecraft:deep_ocean"),
|
||||
STONE_SHORE("minecraft:stone_shore"),
|
||||
SNOWY_BEACH("minecraft:snowy_beach"),
|
||||
BIRCH_FOREST("minecraft:birch_forest"),
|
||||
BIRCH_FOREST_HILLS("minecraft:birch_forest_hills"),
|
||||
DARK_FOREST("minecraft:dark_forest"),
|
||||
SNOWY_TAIGA("minecraft:snowy_taiga"),
|
||||
SNOWY_TAIGA_HILLS("minecraft:snowy_taiga_hills"),
|
||||
GIANT_TREE_TAIGA("minecraft:giant_tree_taiga"),
|
||||
GIANT_TREE_TAIGA_HILLS("minecraft:giant_tree_taiga_hills"),
|
||||
WOODED_MOUNTAINS("minecraft:wooded_mountains"),
|
||||
SAVANNA("minecraft:savanna"),
|
||||
SAVANNA_PLATEAU("minecraft:savanna_plateau"),
|
||||
BADLANDS("minecraft:badlands"),
|
||||
WOODED_BADLANDS_PLATEAU("minecraft:wooded_badlands_plateau"),
|
||||
BADLANDS_PLATEAU("minecraft:badlands_plateau"),
|
||||
SMALL_END_ISLANDS("minecraft:small_end_islands"),
|
||||
END_MIDLANDS("minecraft:end_midlands"),
|
||||
END_HIGHLANDS("minecraft:end_highlands"),
|
||||
END_BARRENS("minecraft:end_barrens"),
|
||||
WARM_OCEAN("minecraft:warm_ocean"),
|
||||
LUKEWARM_OCEAN("minecraft:lukewarm_ocean"),
|
||||
COLD_OCEAN("minecraft:cold_ocean"),
|
||||
DEEP_WARM_OCEAN("minecraft:deep_warm_ocean"),
|
||||
DEEP_LUKEWARM_OCEAN("minecraft:deep_lukewarm_ocean"),
|
||||
DEEP_COLD_OCEAN("minecraft:deep_cold_ocean"),
|
||||
DEEP_FROZEN_OCEAN("minecraft:deep_frozen_ocean"),
|
||||
THE_VOID("minecraft:the_void"),
|
||||
SUNFLOWER_PLAINS("minecraft:sunflower_plains"),
|
||||
DESERT_LAKES("minecraft:desert_lakes"),
|
||||
GRAVELLY_MOUNTAINS("minecraft:gravelly_mountains"),
|
||||
FLOWER_FOREST("minecraft:flower_forest"),
|
||||
TAIGA_MOUNTAINS("minecraft:taiga_mountains"),
|
||||
SWAMP_HILLS("minecraft:swamp_hills"),
|
||||
ICE_SPIKES("minecraft:ice_spikes"),
|
||||
MODIFIED_JUNGLE("minecraft:modified_jungle"),
|
||||
MODIFIED_JUNGLE_EDGE("minecraft:modified_jungle_edge"),
|
||||
TALL_BIRCH_FOREST("minecraft:tall_birch_forest"),
|
||||
TALL_BIRCH_HILLS("minecraft:tall_birch_hills"),
|
||||
DARK_FOREST_HILLS("minecraft:dark_forest_hills"),
|
||||
SNOWY_TAIGA_MOUNTAINS("minecraft:snowy_taiga_mountains"),
|
||||
GIANT_SPRUCE_TAIGA("minecraft:giant_spruce_taiga"),
|
||||
GIANT_SPRUCE_TAIGA_HILLS("minecraft:giant_spruce_taiga_hills"),
|
||||
MODIFIED_GRAVELLY_MOUNTAINS("minecraft:modified_gravelly_mountains"),
|
||||
SHATTERED_SAVANNA("minecraft:shattered_savanna"),
|
||||
SHATTERED_SAVANNA_PLATEAU("minecraft:shattered_savanna_plateau"),
|
||||
ERODED_BADLANDS("minecraft:eroded_badlands"),
|
||||
MODIFIED_WOODED_BADLANDS_PLATEAU("minecraft:modified_wooded_badlands_plateau"),
|
||||
MODIFIED_BADLANDS_PLATEAU("minecraft:modified_badlands_plateau"),
|
||||
BAMBOO_JUNGLE("minecraft:bamboo_jungle"),
|
||||
BAMBOO_JUNGLE_HILLS("minecraft:bamboo_jungle_hills"),
|
||||
SOUL_SAND_VALLEY("minecraft:soul_sand_valley"),
|
||||
CRIMSON_FOREST("minecraft:crimson_forest"),
|
||||
WARPED_FOREST("minecraft:warped_forest"),
|
||||
BASALT_DELTAS("minecraft:basalt_deltas"),
|
||||
OCEAN("minecraft:ocean", 0),
|
||||
PLAINS("minecraft:plains", 1),
|
||||
DESERT("minecraft:desert", 2),
|
||||
MOUNTAINS("minecraft:mountains", 3),
|
||||
FOREST("minecraft:forest", 4),
|
||||
TAIGA("minecraft:taiga", 5),
|
||||
SWAMP("minecraft:swamp", 6),
|
||||
RIVER("minecraft:river", 7),
|
||||
NETHER_WASTES("minecraft:nether_wastes", 8),
|
||||
THE_END("minecraft:the_end", 9),
|
||||
FROZEN_OCEAN("minecraft:frozen_ocean", 10),
|
||||
FROZEN_RIVER("minecraft:frozen_river", 11),
|
||||
SNOWY_TUNDRA("minecraft:snowy_tundra", 12),
|
||||
SNOWY_MOUNTAINS("minecraft:snowy_mountains", 13),
|
||||
MUSHROOM_FIELDS("minecraft:mushroom_fields", 14),
|
||||
MUSHROOM_FIELD_SHORE("minecraft:mushroom_field_shore", 15),
|
||||
BEACH("minecraft:beach", 16),
|
||||
DESERT_HILLS("minecraft:desert_hills", 17),
|
||||
WOODED_HILLS("minecraft:wooded_hills", 18),
|
||||
TAIGA_HILLS("minecraft:taiga_hills", 19),
|
||||
MOUNTAIN_EDGE("minecraft:mountain_edge", 20),
|
||||
JUNGLE("minecraft:jungle", 21),
|
||||
JUNGLE_HILLS("minecraft:jungle_hills", 22),
|
||||
JUNGLE_EDGE("minecraft:jungle_edge", 23),
|
||||
DEEP_OCEAN("minecraft:deep_ocean", 24),
|
||||
STONE_SHORE("minecraft:stone_shore", 25),
|
||||
SNOWY_BEACH("minecraft:snowy_beach", 26),
|
||||
BIRCH_FOREST("minecraft:birch_forest", 27),
|
||||
BIRCH_FOREST_HILLS("minecraft:birch_forest_hills", 28),
|
||||
DARK_FOREST("minecraft:dark_forest", 29),
|
||||
SNOWY_TAIGA("minecraft:snowy_taiga", 30),
|
||||
SNOWY_TAIGA_HILLS("minecraft:snowy_taiga_hills", 31),
|
||||
GIANT_TREE_TAIGA("minecraft:giant_tree_taiga", 32),
|
||||
GIANT_TREE_TAIGA_HILLS("minecraft:giant_tree_taiga_hills", 33),
|
||||
WOODED_MOUNTAINS("minecraft:wooded_mountains", 34),
|
||||
SAVANNA("minecraft:savanna", 35),
|
||||
SAVANNA_PLATEAU("minecraft:savanna_plateau", 36),
|
||||
BADLANDS("minecraft:badlands", 37),
|
||||
WOODED_BADLANDS_PLATEAU("minecraft:wooded_badlands_plateau", 38),
|
||||
BADLANDS_PLATEAU("minecraft:badlands_plateau", 39),
|
||||
SMALL_END_ISLANDS("minecraft:small_end_islands", 40),
|
||||
END_MIDLANDS("minecraft:end_midlands", 41),
|
||||
END_HIGHLANDS("minecraft:end_highlands", 42),
|
||||
END_BARRENS("minecraft:end_barrens", 43),
|
||||
WARM_OCEAN("minecraft:warm_ocean", 44),
|
||||
LUKEWARM_OCEAN("minecraft:lukewarm_ocean", 45),
|
||||
COLD_OCEAN("minecraft:cold_ocean", 46),
|
||||
DEEP_WARM_OCEAN("minecraft:deep_warm_ocean", 47),
|
||||
DEEP_LUKEWARM_OCEAN("minecraft:deep_lukewarm_ocean", 48),
|
||||
DEEP_COLD_OCEAN("minecraft:deep_cold_ocean", 49),
|
||||
DEEP_FROZEN_OCEAN("minecraft:deep_frozen_ocean", 50),
|
||||
THE_VOID("minecraft:the_void", 127),
|
||||
SUNFLOWER_PLAINS("minecraft:sunflower_plains", 129),
|
||||
DESERT_LAKES("minecraft:desert_lakes", 130),
|
||||
GRAVELLY_MOUNTAINS("minecraft:gravelly_mountains", 131),
|
||||
FLOWER_FOREST("minecraft:flower_forest", 132),
|
||||
TAIGA_MOUNTAINS("minecraft:taiga_mountains", 133),
|
||||
SWAMP_HILLS("minecraft:swamp_hills", 134),
|
||||
ICE_SPIKES("minecraft:ice_spikes", 140),
|
||||
MODIFIED_JUNGLE("minecraft:modified_jungle", 149),
|
||||
MODIFIED_JUNGLE_EDGE("minecraft:modified_jungle_edge", 151),
|
||||
TALL_BIRCH_FOREST("minecraft:tall_birch_forest", 155),
|
||||
TALL_BIRCH_HILLS("minecraft:tall_birch_hills", 156),
|
||||
DARK_FOREST_HILLS("minecraft:dark_forest_hills", 157),
|
||||
SNOWY_TAIGA_MOUNTAINS("minecraft:snowy_taiga_mountains", 158),
|
||||
GIANT_SPRUCE_TAIGA("minecraft:giant_spruce_taiga", 160),
|
||||
GIANT_SPRUCE_TAIGA_HILLS("minecraft:giant_spruce_taiga_hills", 161),
|
||||
MODIFIED_GRAVELLY_MOUNTAINS("minecraft:modified_gravelly_mountains", 162),
|
||||
SHATTERED_SAVANNA("minecraft:shattered_savanna", 163),
|
||||
SHATTERED_SAVANNA_PLATEAU("minecraft:shattered_savanna_plateau", 164),
|
||||
ERODED_BADLANDS("minecraft:eroded_badlands", 165),
|
||||
MODIFIED_WOODED_BADLANDS_PLATEAU("minecraft:modified_wooded_badlands_plateau", 166),
|
||||
MODIFIED_BADLANDS_PLATEAU("minecraft:modified_badlands_plateau", 167),
|
||||
BAMBOO_JUNGLE("minecraft:bamboo_jungle", 168),
|
||||
BAMBOO_JUNGLE_HILLS("minecraft:bamboo_jungle_hills", 169),
|
||||
SOUL_SAND_VALLEY("minecraft:soul_sand_valley", 170),
|
||||
CRIMSON_FOREST("minecraft:crimson_forest", 171),
|
||||
WARPED_FOREST("minecraft:warped_forest", 172),
|
||||
BASALT_DELTAS("minecraft:basalt_deltas", 173),
|
||||
;
|
||||
private String namespaceID;
|
||||
private int id;
|
||||
|
||||
Biome(String namespaceID) {
|
||||
Biome(String namespaceID, int id) {
|
||||
this.namespaceID = namespaceID;
|
||||
this.id = id;
|
||||
Registries.biomes.put(NamespaceID.from(namespaceID), this);
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return ordinal();
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getNamespaceID() {
|
||||
@ -103,8 +105,10 @@ public enum Biome {
|
||||
}
|
||||
|
||||
public static Biome fromId(int id) {
|
||||
if(id >= 0 && id < values().length) {
|
||||
return values()[id];
|
||||
for(Biome o : values()) {
|
||||
if(o.getId() == id) {
|
||||
return o;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -15,9 +15,18 @@ import java.util.TreeSet;
|
||||
public abstract class BasicEnumGenerator extends MinestomEnumGenerator<BasicEnumGenerator.Container> {
|
||||
|
||||
private static final String MC_DATA_REGISTRIES_PATH = "minecraft_data/reports/registries.json";
|
||||
/**
|
||||
* Are IDs linear? Biomes are not for instance.
|
||||
*/
|
||||
private final boolean linear;
|
||||
private NamespaceID defaultEntry;
|
||||
|
||||
protected BasicEnumGenerator(File targetFolder) throws IOException {
|
||||
this(targetFolder, true);
|
||||
}
|
||||
|
||||
protected BasicEnumGenerator(File targetFolder, boolean linear) throws IOException {
|
||||
this.linear = linear;
|
||||
generateTo(targetFolder);
|
||||
}
|
||||
|
||||
@ -47,12 +56,23 @@ public abstract class BasicEnumGenerator extends MinestomEnumGenerator<BasicEnum
|
||||
|
||||
@Override
|
||||
protected void postWrite(EnumGenerator generator) {
|
||||
generator.addMethod("fromId", "(int id)", "static "+getClassName(),
|
||||
"if(id >= 0 && id < values().length) {",
|
||||
"\treturn values()[id];",
|
||||
"}",
|
||||
"return "+(defaultEntry == null ? "null" : identifier(defaultEntry))+";"
|
||||
);
|
||||
if(linear) {
|
||||
generator.addMethod("fromId", "(int id)", "static "+getClassName(),
|
||||
"if(id >= 0 && id < values().length) {",
|
||||
"\treturn values()[id];",
|
||||
"}",
|
||||
"return "+(defaultEntry == null ? "null" : identifier(defaultEntry))+";"
|
||||
);
|
||||
} else {
|
||||
generator.addMethod("fromId", "(int id)", "static "+getClassName(),
|
||||
"for("+getClassName()+" o : values()) {",
|
||||
"\tif(o.getId() == id) {",
|
||||
"\t\treturn o;",
|
||||
"\t}",
|
||||
"}",
|
||||
"return "+(defaultEntry == null ? "null" : identifier(defaultEntry))+";"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private String identifier(NamespaceID id) {
|
||||
@ -67,8 +87,13 @@ public abstract class BasicEnumGenerator extends MinestomEnumGenerator<BasicEnum
|
||||
generator.addClassAnnotation("@SuppressWarnings({\"deprecation\"})");
|
||||
generator.addImport(Registries.class.getCanonicalName());
|
||||
generator.addImport(NamespaceID.class.getCanonicalName());
|
||||
generator.setParams("String namespaceID");
|
||||
generator.addMethod("getId", "()", "int", "return ordinal();");
|
||||
if(linear) {
|
||||
generator.setParams("String namespaceID");
|
||||
generator.addMethod("getId", "()", "int", "return ordinal();");
|
||||
} else {
|
||||
generator.setParams("String namespaceID", "int id");
|
||||
generator.addMethod("getId", "()", "int", "return id;");
|
||||
}
|
||||
generator.addMethod("getNamespaceID", "()", "String", "return namespaceID;");
|
||||
|
||||
generator.appendToConstructor("Registries."+CodeGenerator.decapitalize(getClassName())+"s.put(NamespaceID.from(namespaceID), this);");
|
||||
@ -76,7 +101,11 @@ public abstract class BasicEnumGenerator extends MinestomEnumGenerator<BasicEnum
|
||||
|
||||
@Override
|
||||
protected void writeSingle(EnumGenerator generator, Container item) {
|
||||
generator.addInstance(identifier(item.name), "\""+item.name.toString()+"\"");
|
||||
if(linear) {
|
||||
generator.addInstance(identifier(item.name), "\""+item.name.toString()+"\"");
|
||||
} else {
|
||||
generator.addInstance(identifier(item.name), "\""+item.name.toString()+"\"", item.id);
|
||||
}
|
||||
}
|
||||
|
||||
static class Container implements Comparable<Container> {
|
||||
|
@ -36,7 +36,7 @@ public class BiomesEnumGenerator extends BasicEnumGenerator {
|
||||
}
|
||||
|
||||
private BiomesEnumGenerator(File targetFolder) throws IOException {
|
||||
super(targetFolder);
|
||||
super(targetFolder, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
Reference in New Issue
Block a user