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