diff --git a/pom.xml b/pom.xml index 471fba0..a402c55 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ org.spigotmc spigot-api - 1.20-R0.1-SNAPSHOT + 1.20.1-R0.1-SNAPSHOT provided diff --git a/src/main/java/de/diddiz/LogBlock/blockstate/BlockStateCodecSign.java b/src/main/java/de/diddiz/LogBlock/blockstate/BlockStateCodecSign.java index 64c2570..8196baa 100644 --- a/src/main/java/de/diddiz/LogBlock/blockstate/BlockStateCodecSign.java +++ b/src/main/java/de/diddiz/LogBlock/blockstate/BlockStateCodecSign.java @@ -1,7 +1,6 @@ package de.diddiz.LogBlock.blockstate; import de.diddiz.LogBlock.util.BukkitUtils; -import de.diddiz.LogBlock.util.Reflections; import java.awt.Color; import java.util.Arrays; import java.util.Collections; @@ -28,7 +27,7 @@ public class BlockStateCodecSign implements BlockStateCodec { public YamlConfiguration serialize(BlockState state) { YamlConfiguration conf = null; if (state instanceof Sign sign) { - boolean waxed = Reflections.isSignWaxed(sign); + boolean waxed = sign.isWaxed(); if (waxed) { conf = new YamlConfiguration(); conf.set("waxed", waxed); @@ -92,7 +91,7 @@ public class BlockStateCodecSign implements BlockStateCodec { if (state instanceof Sign) { Sign sign = (Sign) state; if (conf != null) { - sign.setEditable(!conf.getBoolean("waxed")); + sign.setWaxed(conf.getBoolean("waxed")); for (Side side : Side.values()) { ConfigurationSection sideSection = side == Side.FRONT ? conf : conf.getConfigurationSection(side.name().toLowerCase()); DyeColor signColor = DyeColor.BLACK; @@ -120,7 +119,7 @@ public class BlockStateCodecSign implements BlockStateCodec { signSide.setGlowingText(glowing); } } else { - sign.setEditable(true); + sign.setWaxed(false); for (Side side : Side.values()) { SignSide signSide = sign.getSide(side); for (int i = 0; i < 4; i++) { diff --git a/src/main/java/de/diddiz/LogBlock/listeners/InteractLogging.java b/src/main/java/de/diddiz/LogBlock/listeners/InteractLogging.java index 55dd713..13d1b98 100644 --- a/src/main/java/de/diddiz/LogBlock/listeners/InteractLogging.java +++ b/src/main/java/de/diddiz/LogBlock/listeners/InteractLogging.java @@ -5,7 +5,6 @@ import de.diddiz.LogBlock.LogBlock; import de.diddiz.LogBlock.Logging; import de.diddiz.LogBlock.config.WorldConfig; import de.diddiz.LogBlock.util.BukkitUtils; -import de.diddiz.LogBlock.util.Reflections; import java.util.UUID; import org.bukkit.DyeColor; import org.bukkit.GameEvent; @@ -99,8 +98,7 @@ public class InteractLogging extends LoggingListener { if (BukkitUtils.isDye(itemType) || itemType == Material.GLOW_INK_SAC || itemType == Material.INK_SAC || itemType == Material.HONEYCOMB) { final BlockState before = event.getClickedBlock().getState(); if (before instanceof Sign signBefore) { - boolean waxed = Reflections.isSignWaxed(signBefore); - if (!waxed) { + if (!signBefore.isWaxed()) { final Sign signAfter = (Sign) event.getClickedBlock().getState(); Side side = BukkitUtils.getFacingSignSide(player, clicked); SignSide signSideBefore = signBefore.getSide(side); @@ -116,7 +114,7 @@ public class InteractLogging extends LoggingListener { consumer.queueBlockReplace(Actor.actorFromEntity(player), signBefore, signAfter); } } else if (itemType == Material.HONEYCOMB) { - signAfter.setEditable(false); + signAfter.setWaxed(true); consumer.queueBlockReplace(Actor.actorFromEntity(player), signBefore, signAfter); } else if (BukkitUtils.isDye(itemType) && hasText(signSideBefore)) { DyeColor newColor = BukkitUtils.dyeToDyeColor(itemType); diff --git a/src/main/java/de/diddiz/LogBlock/util/Reflections.java b/src/main/java/de/diddiz/LogBlock/util/Reflections.java deleted file mode 100644 index 83f820d..0000000 --- a/src/main/java/de/diddiz/LogBlock/util/Reflections.java +++ /dev/null @@ -1,61 +0,0 @@ -package de.diddiz.LogBlock.util; - -import de.diddiz.LogBlock.LogBlock; -import java.lang.reflect.Field; -import java.util.logging.Level; -import org.bukkit.block.Sign; - -public class Reflections { - private static Field FIELD_CraftBlockEntityState_snapshot; - private static Field FIELD_SignBlockEntity_isWaxed; - - public static boolean isSignWaxed(Sign sign) { - try { - if (FIELD_CraftBlockEntityState_snapshot == null) { - Class superClass = sign.getClass().getSuperclass(); - while (superClass != null) { - try { - FIELD_CraftBlockEntityState_snapshot = superClass.getDeclaredField("snapshot"); - FIELD_CraftBlockEntityState_snapshot.setAccessible(true); - break; - } catch (NoSuchFieldException ignored) { - } - superClass = superClass.getSuperclass(); - } - } - if (FIELD_CraftBlockEntityState_snapshot == null) { - LogBlock.getInstance().getLogger().log(Level.SEVERE, "Reflections: Sign field 'snapshot' not found"); - return false; - } - Object snapshot = FIELD_CraftBlockEntityState_snapshot.get(sign); - if (snapshot == null) { - LogBlock.getInstance().getLogger().log(Level.SEVERE, "Reflections: Sign snapshot is null?"); - return false; - } - if (FIELD_SignBlockEntity_isWaxed == null) { - Class snapshotClass = snapshot.getClass(); - while (snapshotClass != null) { - for (Field f : snapshotClass.getDeclaredFields()) { - if (f.getType() == boolean.class) { - FIELD_SignBlockEntity_isWaxed = f; - FIELD_SignBlockEntity_isWaxed.setAccessible(true); - break; - } - } - if (FIELD_SignBlockEntity_isWaxed != null) { - break; - } - snapshotClass = snapshotClass.getSuperclass(); - } - } - if (FIELD_SignBlockEntity_isWaxed == null) { - LogBlock.getInstance().getLogger().log(Level.SEVERE, "Reflections: Sign field 'isWaxed' not found"); - return false; - } - return FIELD_SignBlockEntity_isWaxed.getBoolean(snapshot); - } catch (SecurityException | IllegalArgumentException | IllegalAccessException e) { - LogBlock.getInstance().getLogger().log(Level.SEVERE, "Reflections: Sign.isWaxed reflection failed", e); - } - return false; - } -}