From 72cf620d474ca21b5369b61136e286101f2f635a Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 15 Jul 2018 15:00:35 +1000 Subject: [PATCH] SPIGOT-4002: Fix usage of default: statements in 1.13 plugins compiled w/ Eclipse --- src/main/java/org/bukkit/craftbukkit/util/Commodore.java | 3 +++ .../java/org/bukkit/craftbukkit/util/CraftLegacy.java | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java index aefba1492a..cc877f0a4d 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java @@ -196,6 +196,9 @@ public class Commodore case "values": super.visitMethodInsn( opcode, "org/bukkit/craftbukkit/util/CraftLegacy", "modern_" + name, desc, itf ); return; + case "ordinal": + super.visitMethodInsn( Opcodes.INVOKESTATIC, "org/bukkit/craftbukkit/util/CraftLegacy", "modern_" + name, "(Lorg/bukkit/Material;)I", false ); + return; } } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftLegacy.java b/src/main/java/org/bukkit/craftbukkit/util/CraftLegacy.java index 5965e82c2b..4ecba72863 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftLegacy.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftLegacy.java @@ -221,6 +221,15 @@ public class CraftLegacy { return Arrays.copyOfRange(values, 0, Material.LEGACY_AIR.ordinal()); } + public static int modern_ordinal(Material material) { + if (material.isLegacy()) { + // SPIGOT-4002: Fix for eclipse compiler manually compiling in default statements to lookupswitch + throw new NoSuchFieldError("Legacy field ordinal: " + material); + } + + return material.ordinal(); + } + static { SPAWN_EGGS.put(EntityType.BAT, Material.BAT_SPAWN_EGG); SPAWN_EGGS.put(EntityType.BLAZE, Material.BLAZE_SPAWN_EGG);