SPIGOT-5536: Material.values() causes legacy data init
Dieser Commit ist enthalten in:
Ursprung
a81f6ed397
Commit
a0e88fb362
@ -248,20 +248,6 @@ public final class CraftLegacy {
|
|||||||
return name(material);
|
return name(material);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Material[] modern_values() {
|
|
||||||
Material[] values = Material.values();
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void init() {
|
public static void init() {
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
@ -243,10 +243,10 @@ public class Commodore
|
|||||||
switch ( name )
|
switch ( name )
|
||||||
{
|
{
|
||||||
case "values":
|
case "values":
|
||||||
super.visitMethodInsn( opcode, "org/bukkit/craftbukkit/legacy/CraftLegacy", "modern_" + name, desc, itf );
|
super.visitMethodInsn( opcode, "org/bukkit/craftbukkit/util/CraftLegacy", "modern_" + name, desc, itf );
|
||||||
return;
|
return;
|
||||||
case "ordinal":
|
case "ordinal":
|
||||||
super.visitMethodInsn( Opcodes.INVOKESTATIC, "org/bukkit/craftbukkit/legacy/CraftLegacy", "modern_" + name, "(Lorg/bukkit/Material;)I", false );
|
super.visitMethodInsn( Opcodes.INVOKESTATIC, "org/bukkit/craftbukkit/util/CraftLegacy", "modern_" + name, "(Lorg/bukkit/Material;)I", false );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package org.bukkit.craftbukkit.util;
|
package org.bukkit.craftbukkit.util;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.material.MaterialData;
|
import org.bukkit.material.MaterialData;
|
||||||
|
|
||||||
@ -24,4 +25,18 @@ public final class CraftLegacy {
|
|||||||
public static Material fromLegacy(MaterialData materialData) {
|
public static Material fromLegacy(MaterialData materialData) {
|
||||||
return org.bukkit.craftbukkit.legacy.CraftLegacy.fromLegacy(materialData);
|
return org.bukkit.craftbukkit.legacy.CraftLegacy.fromLegacy(materialData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Material[] modern_values() {
|
||||||
|
Material[] values = Material.values();
|
||||||
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -99,7 +99,7 @@ public class LegacyTest extends AbstractTestingBase {
|
|||||||
Assert.assertTrue("Must iterate only legacy materials", material.isLegacy());
|
Assert.assertTrue("Must iterate only legacy materials", material.isLegacy());
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Material material : CraftLegacy.modern_values()) {
|
for (Material material : org.bukkit.craftbukkit.util.CraftLegacy.modern_values()) {
|
||||||
Assert.assertFalse("Must iterate only modern materials", material.isLegacy());
|
Assert.assertFalse("Must iterate only modern materials", material.isLegacy());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren