diff --git a/src/main/java/com/loohp/limbo/registry/PacketRegistry.java b/src/main/java/com/loohp/limbo/registry/PacketRegistry.java index a7cfb23..89a0c02 100644 --- a/src/main/java/com/loohp/limbo/registry/PacketRegistry.java +++ b/src/main/java/com/loohp/limbo/registry/PacketRegistry.java @@ -133,7 +133,7 @@ public class PacketRegistry { JSONObject jsonIds = (JSONObject) jsonMappings.get(boundKey); for (Object objPacketKey : jsonIds.keySet()) { String packetKey = (String) objPacketKey; - idMapping.put(Key.key(packetKey), (int) (long) ((JSONObject) jsonIds.get(packetKey)).get("protocol_id")); + idMapping.put(Key.key(packetKey), ((Number) ((JSONObject) jsonIds.get(packetKey)).get("protocol_id")).intValue()); } mappings.put(packetBound, idMapping); } diff --git a/src/main/java/com/loohp/limbo/world/GeneratedBlockDataMappings.java b/src/main/java/com/loohp/limbo/world/GeneratedBlockDataMappings.java index f1a7929..67b77dd 100644 --- a/src/main/java/com/loohp/limbo/world/GeneratedBlockDataMappings.java +++ b/src/main/java/com/loohp/limbo/world/GeneratedBlockDataMappings.java @@ -20,6 +20,7 @@ package com.loohp.limbo.world; import com.loohp.limbo.Limbo; +import net.querz.nbt.io.SNBTUtil; import net.querz.nbt.tag.CompoundTag; import org.json.simple.JSONArray; import org.json.simple.JSONObject; @@ -56,36 +57,46 @@ public class GeneratedBlockDataMappings { @SuppressWarnings("unchecked") public static int getGlobalPaletteIDFromState(CompoundTag tag) { - String blockname = tag.getString("Name"); - - JSONObject data = (JSONObject) globalPalette.get(blockname); - Object obj = data.get("properties"); - if (obj == null) { - return (int) (long) ((JSONObject) ((JSONArray) data.get("states")).get(0)).get("id"); - } - - //JSONObject properties = (JSONObject) obj; - - if (tag.containsKey("Properties")) { - CompoundTag blockProp = tag.get("Properties", CompoundTag.class); - Map blockstate = new HashMap<>(); - for (String key : blockProp.keySet()) { - blockstate.put(key, blockProp.getString(key)); + try { + String blockname = tag.getString("Name"); + + JSONObject data = (JSONObject) globalPalette.get(blockname); + Object obj = data.get("properties"); + if (obj == null) { + return ((Number) ((JSONObject) ((JSONArray) data.get("states")).get(0)).get("id")).intValue(); } - - for (Object entry : (JSONArray) data.get("states")) { - JSONObject jsonobj = (JSONObject) entry; - if (((JSONObject) jsonobj.get("properties")).keySet().stream().allMatch(key -> Objects.equals(blockstate.get(key), ((JSONObject) jsonobj.get("properties")).get(key)))) { - return (int) (long) jsonobj.get("id"); + + if (tag.containsKey("Properties")) { + CompoundTag blockProp = tag.get("Properties", CompoundTag.class); + Map blockstate = new HashMap<>(); + for (String key : blockProp.keySet()) { + blockstate.put(key, blockProp.getString(key)); + } + + for (Object entry : (JSONArray) data.get("states")) { + JSONObject jsonobj = (JSONObject) entry; + if (((JSONObject) jsonobj.get("properties")).keySet().stream().allMatch(key -> Objects.equals(blockstate.get(key), ((JSONObject) jsonobj.get("properties")).get(key)))) { + return ((Number) jsonobj.get("id")).intValue(); + } } } - } - - for (Object entry : (JSONArray) data.get("states")) { - if (((JSONObject) entry).containsKey("default") && ((boolean) ((JSONObject) entry).get("default"))) { - return (int) (long) ((JSONObject) entry).get("id"); + + for (Object entry : (JSONArray) data.get("states")) { + if (((JSONObject) entry).containsKey("default") && ((boolean) ((JSONObject) entry).get("default"))) { + return ((Number) ((JSONObject) entry).get("id")).intValue(); + } } - } + + throw new IllegalStateException(); + } catch (Throwable e) { + String snbt; + try { + snbt = SNBTUtil.toSNBT(tag); + } catch (IOException e1) { + snbt = tag.valueToString(); + } + new IllegalStateException("Unable to get global palette id for " + snbt + " (Is this scheme created in the same Minecraft version as Limbo?)", e).printStackTrace(); + } return 0; }