Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
import java.util.Arrays;
import java.util.EnumMap;
import java.util.EnumSet;
import java.util.Map;
import java.util.Set;
import net.elytrium.limboapi.api.utils.EnumUniverse;

public enum BlockEntityVersion {
LEGACY(EnumSet.range(ProtocolVersion.MINECRAFT_1_7_2, ProtocolVersion.MINECRAFT_1_18_2)),
Expand All @@ -26,9 +28,11 @@ public enum BlockEntityVersion {
MINECRAFT_1_21(EnumSet.of(ProtocolVersion.MINECRAFT_1_21)),
MINECRAFT_1_21_2(EnumSet.of(ProtocolVersion.MINECRAFT_1_21_2)),
MINECRAFT_1_21_4(EnumSet.of(ProtocolVersion.MINECRAFT_1_21_4)),
MINECRAFT_1_21_5(EnumSet.of(ProtocolVersion.MINECRAFT_1_21_5));
MINECRAFT_1_21_5(EnumSet.of(ProtocolVersion.MINECRAFT_1_21_5)),
MINECRAFT_1_21_6(EnumSet.of(ProtocolVersion.MINECRAFT_1_21_6));

private static final EnumMap<ProtocolVersion, BlockEntityVersion> MC_VERSION_TO_ITEM_VERSIONS = new EnumMap<>(ProtocolVersion.class);
private static final Map<String, BlockEntityVersion> KEY_LOOKUP = Map.copyOf(EnumUniverse.createProtocolLookup(values()));

private final Set<ProtocolVersion> versions;

Expand Down Expand Up @@ -57,21 +61,7 @@ public Set<ProtocolVersion> getVersions() {
}

public static BlockEntityVersion parse(String from) {
return switch (from) {
case "1.19" -> MINECRAFT_1_19;
case "1.19.1" -> MINECRAFT_1_19_1;
case "1.19.3" -> MINECRAFT_1_19_3;
case "1.19.4" -> MINECRAFT_1_19_4;
case "1.20" -> MINECRAFT_1_20;
case "1.20.2" -> MINECRAFT_1_20_2;
case "1.20.3" -> MINECRAFT_1_20_3;
case "1.20.5" -> MINECRAFT_1_20_5;
case "1.21" -> MINECRAFT_1_21;
case "1.21.2" -> MINECRAFT_1_21_2;
case "1.21.4" -> MINECRAFT_1_21_4;
case "1.21.5" -> MINECRAFT_1_21_5;
default -> LEGACY;
};
return KEY_LOOKUP.getOrDefault(from, LEGACY);
}

public static BlockEntityVersion from(ProtocolVersion protocolVersion) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
import java.util.Arrays;
import java.util.EnumMap;
import java.util.EnumSet;
import java.util.Map;
import java.util.Set;
import net.elytrium.limboapi.api.utils.EnumUniverse;

public enum WorldVersion {
LEGACY(EnumSet.range(ProtocolVersion.MINECRAFT_1_7_2, ProtocolVersion.MINECRAFT_1_12_2)),
Expand All @@ -30,9 +32,11 @@ public enum WorldVersion {
MINECRAFT_1_20_5(EnumSet.range(ProtocolVersion.MINECRAFT_1_20_5, ProtocolVersion.MINECRAFT_1_21)),
MINECRAFT_1_21_2(ProtocolVersion.MINECRAFT_1_21_2),
MINECRAFT_1_21_4(ProtocolVersion.MINECRAFT_1_21_4),
MINECRAFT_1_21_5(EnumSet.range(ProtocolVersion.MINECRAFT_1_21_5, ProtocolVersion.MAXIMUM_VERSION));
MINECRAFT_1_21_5(ProtocolVersion.MINECRAFT_1_21_5),
MINECRAFT_1_21_6(EnumSet.range(ProtocolVersion.MINECRAFT_1_21_6, ProtocolVersion.MAXIMUM_VERSION));

private static final EnumMap<ProtocolVersion, WorldVersion> MC_VERSION_TO_ITEM_VERSIONS = new EnumMap<>(ProtocolVersion.class);
private static final Map<String, WorldVersion> KEY_LOOKUP = Map.copyOf(EnumUniverse.createProtocolLookup(values()));

private final Set<ProtocolVersion> versions;

Expand Down Expand Up @@ -61,25 +65,7 @@ public Set<ProtocolVersion> getVersions() {
}

public static WorldVersion parse(String from) {
return switch (from) {
case "1.13" -> MINECRAFT_1_13;
case "1.13.2" -> MINECRAFT_1_13_2;
case "1.14" -> MINECRAFT_1_14;
case "1.15" -> MINECRAFT_1_15;
case "1.16" -> MINECRAFT_1_16;
case "1.16.2" -> MINECRAFT_1_16_2;
case "1.17" -> MINECRAFT_1_17;
case "1.19" -> MINECRAFT_1_19;
case "1.19.3" -> MINECRAFT_1_19_3;
case "1.19.4" -> MINECRAFT_1_19_4;
case "1.20" -> MINECRAFT_1_20;
case "1.20.3" -> MINECRAFT_1_20_3;
case "1.20.5" -> MINECRAFT_1_20_5;
case "1.21.2" -> MINECRAFT_1_21_2;
case "1.21.4" -> MINECRAFT_1_21_4;
case "1.21.5" -> MINECRAFT_1_21_5;
default -> LEGACY;
};
return KEY_LOOKUP.getOrDefault(from, LEGACY);
}

public static WorldVersion from(ProtocolVersion protocolVersion) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/*
* Copyright (C) 2021 - 2025 Elytrium
*
* The LimboAPI (excluding the LimboAPI plugin) is licensed under the terms of the MIT License. For more details,
* reference the LICENSE file in the api top-level directory.
*/

package net.elytrium.limboapi.api.utils;

import java.util.HashMap;
import java.util.Map;

public final class EnumUniverse {

private EnumUniverse() {

}

public static <T extends Enum<T>> Map<String, T> createProtocolLookup(T[] values) {
Map<String, T> lookup = new HashMap<>();
for (T value : values) {
if (value.name().startsWith("MINECRAFT_")) {
lookup.put(value.name().substring("MINECRAFT_".length()).replace("_", "."), value);
}
}
return lookup;
}
}
6 changes: 4 additions & 2 deletions plugin/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,8 @@ enum MinecraftVersion {
MINECRAFT_1_21(767),
MINECRAFT_1_21_2(768),
MINECRAFT_1_21_4(769),
MINECRAFT_1_21_5(770)
MINECRAFT_1_21_5(770),
MINECRAFT_1_21_6(771)

public static final List<MinecraftVersion> WORLD_VERSIONS = List.of(
MINECRAFT_1_13,
Expand All @@ -149,7 +150,8 @@ enum MinecraftVersion {
MINECRAFT_1_20_5,
MINECRAFT_1_21_2,
MINECRAFT_1_21_4,
MINECRAFT_1_21_5
MINECRAFT_1_21_5,
MINECRAFT_1_21_6
)

public static final MinecraftVersion MINIMUM_VERSION = MINECRAFT_1_7_2
Expand Down
3 changes: 3 additions & 0 deletions plugin/mapping/fallbackdata.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"MINECRAFT_1_21_5": {
"minecraft:dried_ghast": "minecraft:chorus_plant"
},
"MINECRAFT_1_21_4": {
"minecraft:wildflowers": "minecraft:glow_lichen",
"minecraft:leaf_litter": "minecraft:glow_lichen",
Expand Down
2 changes: 1 addition & 1 deletion plugin/src/main/java/net/elytrium/limboapi/LimboAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@
@SuppressFBWarnings("MS_EXPOSE_REP")
public class LimboAPI implements LimboFactory {

private static final int SUPPORTED_MAXIMUM_PROTOCOL_VERSION_NUMBER = 770;
private static final int SUPPORTED_MAXIMUM_PROTOCOL_VERSION_NUMBER = 771;

@MonotonicNonNull
private static Logger LOGGER;
Expand Down
2 changes: 1 addition & 1 deletion plugin/src/main/java/net/elytrium/limboapi/Settings.java
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ public static class MAIN {
"1_7_2, 1_7_6, 1_8, 1_9, 1_9_1, 1_9_2, 1_9_4, 1_10, 1_11, 1_11_1, 1_12, 1_12_1, 1_12_2,",
"1_13, 1_13_1, 1_13_2, 1_14, 1_14_1, 1_14_2, 1_14_3, 1_14_4, 1_15, 1_15_1, 1_15_2,",
"1_16, 1_16_1, 1_16_2, 1_16_3, 1_16_4, 1_17, 1_17_1, 1_18, 1_18_2, 1_19, 1_19_1, 1_19_3,",
"1_20, 1_20_2, 1_20_3, 1_20_5, 1_21, 1_21_2, 1_21_4, 1_21_5, LATEST"
"1_20, 1_20_2, 1_20_3, 1_20_5, 1_21, 1_21_2, 1_21_4, 1_21_5, 1_21_6, LATEST"
})
public String PREPARE_MIN_VERSION = "1_7_2";
public String PREPARE_MAX_VERSION = "LATEST";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,8 @@ public static void init() throws Throwable {
createMapping(0x17, ProtocolVersion.MINECRAFT_1_20_2, false),
createMapping(0x18, ProtocolVersion.MINECRAFT_1_20_3, false),
createMapping(0x1B, ProtocolVersion.MINECRAFT_1_20_5, false),
createMapping(0x1D, ProtocolVersion.MINECRAFT_1_21_2, false)
createMapping(0x1D, ProtocolVersion.MINECRAFT_1_21_2, false),
createMapping(0x1E, ProtocolVersion.MINECRAFT_1_21_6, false)
);
register(LIMBO_STATE_REGISTRY, PacketDirection.SERVERBOUND,
MovePositionOnlyPacket.class, MovePositionOnlyPacket::new,
Expand All @@ -443,7 +444,8 @@ public static void init() throws Throwable {
createMapping(0x16, ProtocolVersion.MINECRAFT_1_20_2, false),
createMapping(0x17, ProtocolVersion.MINECRAFT_1_20_3, false),
createMapping(0x1A, ProtocolVersion.MINECRAFT_1_20_5, false),
createMapping(0x1C, ProtocolVersion.MINECRAFT_1_21_2, false)
createMapping(0x1C, ProtocolVersion.MINECRAFT_1_21_2, false),
createMapping(0x1D, ProtocolVersion.MINECRAFT_1_21_6, false)
);
register(LIMBO_STATE_REGISTRY, PacketDirection.SERVERBOUND,
MoveRotationOnlyPacket.class, MoveRotationOnlyPacket::new,
Expand All @@ -462,7 +464,8 @@ public static void init() throws Throwable {
createMapping(0x18, ProtocolVersion.MINECRAFT_1_20_2, false),
createMapping(0x19, ProtocolVersion.MINECRAFT_1_20_3, false),
createMapping(0x1C, ProtocolVersion.MINECRAFT_1_20_5, false),
createMapping(0x1E, ProtocolVersion.MINECRAFT_1_21_2, false)
createMapping(0x1E, ProtocolVersion.MINECRAFT_1_21_2, false),
createMapping(0x1F, ProtocolVersion.MINECRAFT_1_21_6, false)
);
register(LIMBO_STATE_REGISTRY, PacketDirection.SERVERBOUND,
MoveOnGroundOnlyPacket.class, MoveOnGroundOnlyPacket::new,
Expand All @@ -481,7 +484,8 @@ public static void init() throws Throwable {
createMapping(0x19, ProtocolVersion.MINECRAFT_1_20_2, false),
createMapping(0x1A, ProtocolVersion.MINECRAFT_1_20_3, false),
createMapping(0x1D, ProtocolVersion.MINECRAFT_1_20_5, false),
createMapping(0x1F, ProtocolVersion.MINECRAFT_1_21_2, false)
createMapping(0x1F, ProtocolVersion.MINECRAFT_1_21_2, false),
createMapping(0x20, ProtocolVersion.MINECRAFT_1_21_6, false)
);
register(LIMBO_STATE_REGISTRY, PacketDirection.SERVERBOUND,
TeleportConfirmPacket.class, TeleportConfirmPacket::new,
Expand All @@ -493,7 +497,8 @@ public static void init() throws Throwable {
createMapping(0x20, ProtocolVersion.MINECRAFT_1_19_3, false),
createMapping(0x06, ProtocolVersion.MINECRAFT_1_19_4, false),
createMapping(0x07, ProtocolVersion.MINECRAFT_1_20_5, false),
createMapping(0x08, ProtocolVersion.MINECRAFT_1_21_2, false)
createMapping(0x08, ProtocolVersion.MINECRAFT_1_21_2, false),
createMapping(0x09, ProtocolVersion.MINECRAFT_1_21_6, false)
);
}

Expand Down
Loading