diff --git a/pom.xml b/pom.xml
index a72aceb..18ac8fd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
de.gerrygames
viarewind-legacy-support
- 1.3.2
+ 1.3.3
jar
@@ -34,7 +34,7 @@
org.projectlombok
lombok
- 1.16.18
+ 1.18.10
provided
@@ -42,7 +42,7 @@
us.myles
viaversion
- 2.1.3
+ 2.2.2
provided
@@ -50,7 +50,7 @@
org.spigotmc
spigot-api
- 1.12.2-R0.1-SNAPSHOT
+ 1.15.1-R0.1-SNAPSHOT
provided
diff --git a/src/main/java/de/gerrygames/viarewind/legacysupport/listener/EnchantingListener.java b/src/main/java/de/gerrygames/viarewind/legacysupport/listener/EnchantingListener.java
index 3ac65dc..b5b19f4 100644
--- a/src/main/java/de/gerrygames/viarewind/legacysupport/listener/EnchantingListener.java
+++ b/src/main/java/de/gerrygames/viarewind/legacysupport/listener/EnchantingListener.java
@@ -13,13 +13,16 @@ import us.myles.ViaVersion.api.Via;
public class EnchantingListener implements Listener {
+ private final boolean newMaterialNames = Material.getMaterial("LAPIS_LAZULI") != null;
+ private final Material lapisMaterial = newMaterialNames ? Material.LAPIS_LAZULI : Material.getMaterial("INK_SACK");
+
@EventHandler
public void onInventoryOpen(InventoryOpenEvent e) {
if (!(e.getInventory() instanceof EnchantingInventory)) return;
Player player = (Player) e.getPlayer();
if (Via.getAPI().getPlayerVersion(player)>5) return;
PlayerInventory playerInventory = player.getInventory();
- ItemStack lapis = new ItemStack(Material.INK_SACK, 1, (short) 4);
+ ItemStack lapis = newMaterialNames ? new ItemStack(lapisMaterial) : new ItemStack(lapisMaterial, 1, (short) 4);
int amount = 0;
for (int i = 0; i fields = new HashMap<>();
private static Map methods = new HashMap<>();
+ private static boolean staticFinalModificationBlocked;
+
+ static {
+ try {
+ Field.class.getDeclaredField("modifiers");
+ } catch (NoSuchFieldException ex) {
+ staticFinalModificationBlocked = true;
+ }
+ }
public static Field getField(Class clazz, String fieldname) {
String key = clazz.getName() + ":" + fieldname;
@@ -41,7 +50,25 @@ public class ReflectionAPI {
public static void setFieldNotFinal(Field field) {
int modifiers = field.getModifiers();
if (!Modifier.isFinal(modifiers)) return;
- setValuePrintException(Field.class, field, "modifiers", modifiers & ~Modifier.FINAL);
+
+ if (staticFinalModificationBlocked) {
+ try {
+ Method getDeclaredFields0 = Class.class.getDeclaredMethod("getDeclaredFields0", boolean.class);
+ getDeclaredFields0.setAccessible(true);
+ Field[] fields = (Field[]) getDeclaredFields0.invoke(Field.class, false);
+ for (Field classField : fields) {
+ if ("modifiers".equals(classField.getName())) {
+ classField.setAccessible(true);
+ classField.set(field, modifiers & ~Modifier.FINAL);
+ break;
+ }
+ }
+ } catch (ReflectiveOperationException ex) {
+ ex.printStackTrace();
+ }
+ } else {
+ setValuePrintException(Field.class, field, "modifiers", modifiers & ~Modifier.FINAL);
+ }
}
public static Constructor getEmptyConstructor(Class clazz) {
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 182040e..65828ab 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,6 +1,7 @@
name: ViaRewind-Legacy-Support
version: ${project.version}
main: de.gerrygames.viarewind.legacysupport.BukkitPlugin
+api-version: 1.13
authors: [Gerrygames]
website: https://github.com/Gerrygames