From cc4d6c50f27f6047448635c45b310216a60c1e6e Mon Sep 17 00:00:00 2001
From: twme-ai <299940106+twme-ai@users.noreply.github.com>
Date: Sun, 5 Jul 2026 07:30:38 +0000
Subject: [PATCH 1/2] Update Paper support to 26.2
---
README.md | 6 +-
pom.xml | 4 +-
.../blockdatautil/BlockDataSeparater.java | 32 ++++++++++-
.../subdata/DecoratedPotCrackedData.java | 48 ++++++++++++++++
.../subdata/HangingMossTipData.java | 48 ++++++++++++++++
.../subdata/MossyCarpetBottomData.java | 48 ++++++++++++++++
.../subdata/PotentSulfurStateData.java | 51 +++++++++++++++++
.../subdata/SpeleothemThicknessData.java | 51 +++++++++++++++++
.../SpeleothemVerticalDirectionData.java | 57 +++++++++++++++++++
.../MossyCarpetHeightData.java | 55 ++++++++++++++++++
.../MossyCarpetHeightEastData.java | 22 +++++++
.../MossyCarpetHeightNorthData.java | 22 +++++++
.../MossyCarpetHeightSouthData.java | 22 +++++++
.../MossyCarpetHeightWestData.java | 22 +++++++
.../twme/debugstickpro/localization/Lang.java | 10 ++++
src/main/resources/lang/en_US.yml | 13 ++++-
src/main/resources/lang/zh_TW.yml | 13 ++++-
src/main/resources/plugin.yml | 2 +-
18 files changed, 515 insertions(+), 11 deletions(-)
create mode 100644 src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/DecoratedPotCrackedData.java
create mode 100644 src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/HangingMossTipData.java
create mode 100644 src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/MossyCarpetBottomData.java
create mode 100644 src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/PotentSulfurStateData.java
create mode 100644 src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/SpeleothemThicknessData.java
create mode 100644 src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/SpeleothemVerticalDirectionData.java
create mode 100644 src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightData.java
create mode 100644 src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightEastData.java
create mode 100644 src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightNorthData.java
create mode 100644 src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightSouthData.java
create mode 100644 src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightWestData.java
diff --git a/README.md b/README.md
index 0ef738a..ab59954 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@
> **⚠️ v0.5.0+ Requirement**: This plugin now requires [PacketEvents](https://github.com/retrooper/packetevents) to function properly. Please install PacketEvents before using v0.5.0+.
-> Support for Paper 1.19.4 ~ 1.21.8+
+> Support for Paper 26.2+
---
## Features:
### Dynamically display block data:
@@ -100,8 +100,8 @@ Same as regular debugging stick operation:
### Requirements
- **Java 21** or higher
-- **Paper 1.19.4 ~ 1.21.8+**
-- **[PacketEvents](https://github.com/retrooper/packetevents) 2.9.4+** (Required for v0.5.0+)
+- **Paper 26.2+**
+- **[PacketEvents](https://github.com/retrooper/packetevents) 2.13.0+** (Required for v0.5.0+)
### Installation Steps
1. Install [PacketEvents](https://github.com/retrooper/packetevents) if not already installed
diff --git a/pom.xml b/pom.xml
index 462a416..0dc5b6f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
dev.twme
DebugStickPro
- 0.5.2
+ 0.5.3
jar
DebugStickPro
@@ -99,7 +99,7 @@
io.papermc.paper
paper-api
- 1.21.10-R0.1-SNAPSHOT
+ 26.2.build.48-alpha
provided
diff --git a/src/main/java/dev/twme/debugstickpro/blockdatautil/BlockDataSeparater.java b/src/main/java/dev/twme/debugstickpro/blockdatautil/BlockDataSeparater.java
index 1ecb057..5dee3e1 100644
--- a/src/main/java/dev/twme/debugstickpro/blockdatautil/BlockDataSeparater.java
+++ b/src/main/java/dev/twme/debugstickpro/blockdatautil/BlockDataSeparater.java
@@ -5,6 +5,7 @@
import dev.twme.debugstickpro.blockdatautil.subdata.brewingstandbottle.BrewingStandBottle_1;
import dev.twme.debugstickpro.blockdatautil.subdata.brewingstandbottle.BrewingStandBottle_2;
import dev.twme.debugstickpro.blockdatautil.subdata.chiseledbookshelfslot.*;
+import dev.twme.debugstickpro.blockdatautil.subdata.mossycarpetheight.*;
import dev.twme.debugstickpro.blockdatautil.subdata.multiplefacing.*;
import dev.twme.debugstickpro.blockdatautil.subdata.redstonewire.RedstoneWireEastData;
import dev.twme.debugstickpro.blockdatautil.subdata.redstonewire.RedstoneWireNorthData;
@@ -347,11 +348,10 @@ private static ArrayList separateRaw(BlockData blockData) {
SubBlockData daylightDetectorData = new DaylightDetectorData(blockData);
blockDataList.add(daylightDetectorData);
}
- /* NOTE: Not Used
if (blockData instanceof DecoratedPot) {
-
+ SubBlockData decoratedPotCracked = new DecoratedPotCrackedData(blockData);
+ blockDataList.add(decoratedPotCracked);
}
- */
if (blockData instanceof Directional) {
SubBlockData directionalData = new DirectionalData(blockData);
blockDataList.add(directionalData);
@@ -429,6 +429,10 @@ private static ArrayList separateRaw(BlockData blockData) {
SubBlockData hangable = new HangableData(blockData);
blockDataList.add(hangable);
}
+ if (blockData instanceof HangingMoss) {
+ SubBlockData hangingMossTip = new HangingMossTipData(blockData);
+ blockDataList.add(hangingMossTip);
+ }
/* NOTE: Not Used
if (blockData instanceof HangingSign) {
@@ -579,6 +583,19 @@ private static ArrayList separateRaw(BlockData blockData) {
}
}
+ if (blockData instanceof MossyCarpet) {
+ SubBlockData mossyCarpetBottom = new MossyCarpetBottomData(blockData);
+ blockDataList.add(mossyCarpetBottom);
+ SubBlockData mossyCarpetHeightEast = new MossyCarpetHeightEastData(blockData);
+ blockDataList.add(mossyCarpetHeightEast);
+ SubBlockData mossyCarpetHeightNorth = new MossyCarpetHeightNorthData(blockData);
+ blockDataList.add(mossyCarpetHeightNorth);
+ SubBlockData mossyCarpetHeightSouth = new MossyCarpetHeightSouthData(blockData);
+ blockDataList.add(mossyCarpetHeightSouth);
+ SubBlockData mossyCarpetHeightWest = new MossyCarpetHeightWestData(blockData);
+ blockDataList.add(mossyCarpetHeightWest);
+ }
+
if (blockData instanceof NoteBlock) {
SubBlockData noteBlockInstrument = new NoteBlockInstrumentData(blockData);
blockDataList.add(noteBlockInstrument);
@@ -614,6 +631,10 @@ private static ArrayList separateRaw(BlockData blockData) {
SubBlockData pistonHeadShort = new PistonHeadData(blockData);
blockDataList.add(pistonHeadShort);
}
+ if (blockData instanceof PotentSulfur) {
+ SubBlockData potentSulfurState = new PotentSulfurStateData(blockData);
+ blockDataList.add(potentSulfurState);
+ }
/* NOTE: Not Used
if (blockData instanceof PitcherCrop) {
@@ -624,6 +645,11 @@ private static ArrayList separateRaw(BlockData blockData) {
blockDataList.add(pointedDripstoneThickness);
SubBlockData pointedDripstoneVerticalDirection = new PointedDripstoneVerticalDirectionData(blockData);
blockDataList.add(pointedDripstoneVerticalDirection);
+ } else if (blockData instanceof Speleothem) {
+ SubBlockData speleothemThickness = new SpeleothemThicknessData(blockData);
+ blockDataList.add(speleothemThickness);
+ SubBlockData speleothemVerticalDirection = new SpeleothemVerticalDirectionData(blockData);
+ blockDataList.add(speleothemVerticalDirection);
}
if (blockData instanceof Powerable) {
diff --git a/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/DecoratedPotCrackedData.java b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/DecoratedPotCrackedData.java
new file mode 100644
index 0000000..7896a14
--- /dev/null
+++ b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/DecoratedPotCrackedData.java
@@ -0,0 +1,48 @@
+package dev.twme.debugstickpro.blockdatautil.subdata;
+
+import dev.twme.debugstickpro.blockdatautil.SubBlockData;
+import dev.twme.debugstickpro.localization.Lang;
+import org.bukkit.block.data.BlockData;
+import org.bukkit.block.data.type.DecoratedPot;
+
+public class DecoratedPotCrackedData extends SubBlockData {
+ private boolean cracked;
+
+ public DecoratedPotCrackedData(BlockData blockData) {
+ this.blockData = blockData;
+ this.cracked = ((DecoratedPot) blockData).isCracked();
+ }
+
+ @Override
+ public String dataName() {
+ return Lang.DataKeyName.DecoratedPotCrackedDataName;
+ }
+
+ @Override
+ public String getDataAsString() {
+ return String.valueOf(cracked);
+ }
+
+ @Override
+ public SubBlockData nextData() {
+ cracked = !cracked;
+ ((DecoratedPot) blockData).setCracked(cracked);
+ return this;
+ }
+
+ @Override
+ public SubBlockData previousData() {
+ return nextData();
+ }
+
+ @Override
+ public BlockData copyTo(BlockData blockData) {
+ ((DecoratedPot) blockData).setCracked(cracked);
+ return blockData;
+ }
+
+ @Override
+ public SubBlockData fromBlockData(BlockData blockData) {
+ return new DecoratedPotCrackedData(blockData);
+ }
+}
diff --git a/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/HangingMossTipData.java b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/HangingMossTipData.java
new file mode 100644
index 0000000..78e30e4
--- /dev/null
+++ b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/HangingMossTipData.java
@@ -0,0 +1,48 @@
+package dev.twme.debugstickpro.blockdatautil.subdata;
+
+import dev.twme.debugstickpro.blockdatautil.SubBlockData;
+import dev.twme.debugstickpro.localization.Lang;
+import org.bukkit.block.data.BlockData;
+import org.bukkit.block.data.type.HangingMoss;
+
+public class HangingMossTipData extends SubBlockData {
+ private boolean tip;
+
+ public HangingMossTipData(BlockData blockData) {
+ this.blockData = blockData;
+ this.tip = ((HangingMoss) blockData).isTip();
+ }
+
+ @Override
+ public String dataName() {
+ return Lang.DataKeyName.HangingMossTipDataName;
+ }
+
+ @Override
+ public String getDataAsString() {
+ return String.valueOf(tip);
+ }
+
+ @Override
+ public SubBlockData nextData() {
+ tip = !tip;
+ ((HangingMoss) blockData).setTip(tip);
+ return this;
+ }
+
+ @Override
+ public SubBlockData previousData() {
+ return nextData();
+ }
+
+ @Override
+ public BlockData copyTo(BlockData blockData) {
+ ((HangingMoss) blockData).setTip(tip);
+ return blockData;
+ }
+
+ @Override
+ public SubBlockData fromBlockData(BlockData blockData) {
+ return new HangingMossTipData(blockData);
+ }
+}
diff --git a/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/MossyCarpetBottomData.java b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/MossyCarpetBottomData.java
new file mode 100644
index 0000000..77410e9
--- /dev/null
+++ b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/MossyCarpetBottomData.java
@@ -0,0 +1,48 @@
+package dev.twme.debugstickpro.blockdatautil.subdata;
+
+import dev.twme.debugstickpro.blockdatautil.SubBlockData;
+import dev.twme.debugstickpro.localization.Lang;
+import org.bukkit.block.data.BlockData;
+import org.bukkit.block.data.type.MossyCarpet;
+
+public class MossyCarpetBottomData extends SubBlockData {
+ private boolean bottom;
+
+ public MossyCarpetBottomData(BlockData blockData) {
+ this.blockData = blockData;
+ this.bottom = ((MossyCarpet) blockData).isBottom();
+ }
+
+ @Override
+ public String dataName() {
+ return Lang.DataKeyName.MossyCarpetBottomDataName;
+ }
+
+ @Override
+ public String getDataAsString() {
+ return String.valueOf(bottom);
+ }
+
+ @Override
+ public SubBlockData nextData() {
+ bottom = !bottom;
+ ((MossyCarpet) blockData).setBottom(bottom);
+ return this;
+ }
+
+ @Override
+ public SubBlockData previousData() {
+ return nextData();
+ }
+
+ @Override
+ public BlockData copyTo(BlockData blockData) {
+ ((MossyCarpet) blockData).setBottom(bottom);
+ return blockData;
+ }
+
+ @Override
+ public SubBlockData fromBlockData(BlockData blockData) {
+ return new MossyCarpetBottomData(blockData);
+ }
+}
diff --git a/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/PotentSulfurStateData.java b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/PotentSulfurStateData.java
new file mode 100644
index 0000000..b64f085
--- /dev/null
+++ b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/PotentSulfurStateData.java
@@ -0,0 +1,51 @@
+package dev.twme.debugstickpro.blockdatautil.subdata;
+
+import dev.twme.debugstickpro.blockdatautil.SubBlockData;
+import dev.twme.debugstickpro.localization.Lang;
+import org.bukkit.block.data.BlockData;
+import org.bukkit.block.data.type.PotentSulfur;
+
+public class PotentSulfurStateData extends SubBlockData {
+ private static final PotentSulfur.State[] states = PotentSulfur.State.values();
+ private PotentSulfur.State state;
+
+ public PotentSulfurStateData(BlockData blockData) {
+ this.blockData = blockData;
+ this.state = ((PotentSulfur) blockData).getPotentSulfurState();
+ }
+
+ @Override
+ public String dataName() {
+ return Lang.DataKeyName.PotentSulfurStateDataName;
+ }
+
+ @Override
+ public String getDataAsString() {
+ return state.name();
+ }
+
+ @Override
+ public SubBlockData nextData() {
+ state = states[(state.ordinal() + 1) % states.length];
+ ((PotentSulfur) blockData).setPotentSulfurState(state);
+ return this;
+ }
+
+ @Override
+ public SubBlockData previousData() {
+ state = states[(state.ordinal() - 1 + states.length) % states.length];
+ ((PotentSulfur) blockData).setPotentSulfurState(state);
+ return this;
+ }
+
+ @Override
+ public BlockData copyTo(BlockData blockData) {
+ ((PotentSulfur) blockData).setPotentSulfurState(state);
+ return blockData;
+ }
+
+ @Override
+ public SubBlockData fromBlockData(BlockData blockData) {
+ return new PotentSulfurStateData(blockData);
+ }
+}
diff --git a/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/SpeleothemThicknessData.java b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/SpeleothemThicknessData.java
new file mode 100644
index 0000000..502b839
--- /dev/null
+++ b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/SpeleothemThicknessData.java
@@ -0,0 +1,51 @@
+package dev.twme.debugstickpro.blockdatautil.subdata;
+
+import dev.twme.debugstickpro.blockdatautil.SubBlockData;
+import dev.twme.debugstickpro.localization.Lang;
+import org.bukkit.block.data.BlockData;
+import org.bukkit.block.data.type.Speleothem;
+
+public class SpeleothemThicknessData extends SubBlockData {
+ private static final Speleothem.Thickness[] thicknesses = Speleothem.Thickness.values();
+ private Speleothem.Thickness thickness;
+
+ public SpeleothemThicknessData(BlockData blockData) {
+ this.blockData = blockData;
+ this.thickness = ((Speleothem) blockData).getThickness();
+ }
+
+ @Override
+ public String dataName() {
+ return Lang.DataKeyName.SpeleothemThicknessDataName;
+ }
+
+ @Override
+ public String getDataAsString() {
+ return thickness.name();
+ }
+
+ @Override
+ public SubBlockData nextData() {
+ thickness = thicknesses[(thickness.ordinal() + 1) % thicknesses.length];
+ ((Speleothem) blockData).setThickness(thickness);
+ return this;
+ }
+
+ @Override
+ public SubBlockData previousData() {
+ thickness = thicknesses[(thickness.ordinal() - 1 + thicknesses.length) % thicknesses.length];
+ ((Speleothem) blockData).setThickness(thickness);
+ return this;
+ }
+
+ @Override
+ public BlockData copyTo(BlockData blockData) {
+ ((Speleothem) blockData).setThickness(thickness);
+ return blockData;
+ }
+
+ @Override
+ public SubBlockData fromBlockData(BlockData blockData) {
+ return new SpeleothemThicknessData(blockData);
+ }
+}
diff --git a/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/SpeleothemVerticalDirectionData.java b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/SpeleothemVerticalDirectionData.java
new file mode 100644
index 0000000..ef20a08
--- /dev/null
+++ b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/SpeleothemVerticalDirectionData.java
@@ -0,0 +1,57 @@
+package dev.twme.debugstickpro.blockdatautil.subdata;
+
+import dev.twme.debugstickpro.blockdatautil.SubBlockData;
+import dev.twme.debugstickpro.localization.Lang;
+import org.bukkit.block.BlockFace;
+import org.bukkit.block.data.BlockData;
+import org.bukkit.block.data.type.Speleothem;
+
+import java.util.List;
+
+public class SpeleothemVerticalDirectionData extends SubBlockData {
+ private BlockFace verticalDirection;
+
+ public SpeleothemVerticalDirectionData(BlockData blockData) {
+ this.blockData = blockData;
+ this.verticalDirection = ((Speleothem) blockData).getVerticalDirection();
+ }
+
+ @Override
+ public String dataName() {
+ return Lang.DataKeyName.SpeleothemVerticalDirectionDataName;
+ }
+
+ @Override
+ public String getDataAsString() {
+ return verticalDirection.name();
+ }
+
+ @Override
+ public SubBlockData nextData() {
+ Speleothem speleothem = (Speleothem) blockData;
+ List blockFaces = speleothem.getVerticalDirections().stream().toList();
+ verticalDirection = blockFaces.get((blockFaces.indexOf(verticalDirection) + 1) % blockFaces.size());
+ speleothem.setVerticalDirection(verticalDirection);
+ return this;
+ }
+
+ @Override
+ public SubBlockData previousData() {
+ Speleothem speleothem = (Speleothem) blockData;
+ List blockFaces = speleothem.getVerticalDirections().stream().toList();
+ verticalDirection = blockFaces.get((blockFaces.indexOf(verticalDirection) - 1 + blockFaces.size()) % blockFaces.size());
+ speleothem.setVerticalDirection(verticalDirection);
+ return this;
+ }
+
+ @Override
+ public BlockData copyTo(BlockData blockData) {
+ ((Speleothem) blockData).setVerticalDirection(verticalDirection);
+ return blockData;
+ }
+
+ @Override
+ public SubBlockData fromBlockData(BlockData blockData) {
+ return new SpeleothemVerticalDirectionData(blockData);
+ }
+}
diff --git a/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightData.java b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightData.java
new file mode 100644
index 0000000..f31f018
--- /dev/null
+++ b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightData.java
@@ -0,0 +1,55 @@
+package dev.twme.debugstickpro.blockdatautil.subdata.mossycarpetheight;
+
+import dev.twme.debugstickpro.blockdatautil.SubBlockData;
+import org.bukkit.block.BlockFace;
+import org.bukkit.block.data.BlockData;
+import org.bukkit.block.data.type.MossyCarpet;
+import org.bukkit.block.data.type.Wall;
+
+import java.util.List;
+
+public abstract class MossyCarpetHeightData extends SubBlockData {
+ private static final List heights = List.of(
+ Wall.Height.NONE,
+ Wall.Height.LOW,
+ Wall.Height.TALL
+ );
+
+ private final BlockFace face;
+ private Wall.Height height;
+
+ public MossyCarpetHeightData(BlockData blockData, BlockFace face) {
+ this.blockData = blockData;
+ this.face = face;
+ this.height = ((MossyCarpet) blockData).getHeight(face);
+ }
+
+ @Override
+ public String getDataAsString() {
+ return height.name();
+ }
+
+ @Override
+ public SubBlockData nextData() {
+ MossyCarpet mossyCarpet = (MossyCarpet) blockData;
+ height = heights.get((heights.indexOf(height) + 1) % heights.size());
+ mossyCarpet.setHeight(face, height);
+ this.blockData = mossyCarpet;
+ return this;
+ }
+
+ @Override
+ public SubBlockData previousData() {
+ MossyCarpet mossyCarpet = (MossyCarpet) blockData;
+ height = heights.get((heights.indexOf(height) - 1 + heights.size()) % heights.size());
+ mossyCarpet.setHeight(face, height);
+ this.blockData = mossyCarpet;
+ return this;
+ }
+
+ @Override
+ public BlockData copyTo(BlockData blockData) {
+ ((MossyCarpet) blockData).setHeight(face, height);
+ return blockData;
+ }
+}
diff --git a/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightEastData.java b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightEastData.java
new file mode 100644
index 0000000..7b9557b
--- /dev/null
+++ b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightEastData.java
@@ -0,0 +1,22 @@
+package dev.twme.debugstickpro.blockdatautil.subdata.mossycarpetheight;
+
+import dev.twme.debugstickpro.blockdatautil.SubBlockData;
+import dev.twme.debugstickpro.localization.Lang;
+import org.bukkit.block.BlockFace;
+import org.bukkit.block.data.BlockData;
+
+public class MossyCarpetHeightEastData extends MossyCarpetHeightData {
+ public MossyCarpetHeightEastData(BlockData blockData) {
+ super(blockData, BlockFace.EAST);
+ }
+
+ @Override
+ public String dataName() {
+ return Lang.DataKeyName.MossyCarpetHeightEastDataName;
+ }
+
+ @Override
+ public SubBlockData fromBlockData(BlockData blockData) {
+ return new MossyCarpetHeightEastData(blockData);
+ }
+}
diff --git a/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightNorthData.java b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightNorthData.java
new file mode 100644
index 0000000..e5e3381
--- /dev/null
+++ b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightNorthData.java
@@ -0,0 +1,22 @@
+package dev.twme.debugstickpro.blockdatautil.subdata.mossycarpetheight;
+
+import dev.twme.debugstickpro.blockdatautil.SubBlockData;
+import dev.twme.debugstickpro.localization.Lang;
+import org.bukkit.block.BlockFace;
+import org.bukkit.block.data.BlockData;
+
+public class MossyCarpetHeightNorthData extends MossyCarpetHeightData {
+ public MossyCarpetHeightNorthData(BlockData blockData) {
+ super(blockData, BlockFace.NORTH);
+ }
+
+ @Override
+ public String dataName() {
+ return Lang.DataKeyName.MossyCarpetHeightNorthDataName;
+ }
+
+ @Override
+ public SubBlockData fromBlockData(BlockData blockData) {
+ return new MossyCarpetHeightNorthData(blockData);
+ }
+}
diff --git a/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightSouthData.java b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightSouthData.java
new file mode 100644
index 0000000..256127d
--- /dev/null
+++ b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightSouthData.java
@@ -0,0 +1,22 @@
+package dev.twme.debugstickpro.blockdatautil.subdata.mossycarpetheight;
+
+import dev.twme.debugstickpro.blockdatautil.SubBlockData;
+import dev.twme.debugstickpro.localization.Lang;
+import org.bukkit.block.BlockFace;
+import org.bukkit.block.data.BlockData;
+
+public class MossyCarpetHeightSouthData extends MossyCarpetHeightData {
+ public MossyCarpetHeightSouthData(BlockData blockData) {
+ super(blockData, BlockFace.SOUTH);
+ }
+
+ @Override
+ public String dataName() {
+ return Lang.DataKeyName.MossyCarpetHeightSouthDataName;
+ }
+
+ @Override
+ public SubBlockData fromBlockData(BlockData blockData) {
+ return new MossyCarpetHeightSouthData(blockData);
+ }
+}
diff --git a/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightWestData.java b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightWestData.java
new file mode 100644
index 0000000..5f34645
--- /dev/null
+++ b/src/main/java/dev/twme/debugstickpro/blockdatautil/subdata/mossycarpetheight/MossyCarpetHeightWestData.java
@@ -0,0 +1,22 @@
+package dev.twme.debugstickpro.blockdatautil.subdata.mossycarpetheight;
+
+import dev.twme.debugstickpro.blockdatautil.SubBlockData;
+import dev.twme.debugstickpro.localization.Lang;
+import org.bukkit.block.BlockFace;
+import org.bukkit.block.data.BlockData;
+
+public class MossyCarpetHeightWestData extends MossyCarpetHeightData {
+ public MossyCarpetHeightWestData(BlockData blockData) {
+ super(blockData, BlockFace.WEST);
+ }
+
+ @Override
+ public String dataName() {
+ return Lang.DataKeyName.MossyCarpetHeightWestDataName;
+ }
+
+ @Override
+ public SubBlockData fromBlockData(BlockData blockData) {
+ return new MossyCarpetHeightWestData(blockData);
+ }
+}
diff --git a/src/main/java/dev/twme/debugstickpro/localization/Lang.java b/src/main/java/dev/twme/debugstickpro/localization/Lang.java
index fa83dc3..4e0bf7c 100644
--- a/src/main/java/dev/twme/debugstickpro/localization/Lang.java
+++ b/src/main/java/dev/twme/debugstickpro/localization/Lang.java
@@ -96,6 +96,7 @@ public final static class DataKeyName {
public final static String CreakingHeartNaturalDataName = "DataKeyName.CreakingHeartNaturalDataName";
public final static String CreakingHeartStateDataName = "DataKeyName.CreakingHeartStateDataName";
public final static String DaylightDetectorDataName = "DataKeyName.DaylightDetectorDataName";
+ public final static String DecoratedPotCrackedDataName = "DataKeyName.DecoratedPotCrackedDataName";
public final static String DirectionalDataName = "DataKeyName.DirectionalDataName";
public final static String DispenserDataName = "DataKeyName.DispenserDataName";
public final static String DriedGhastHydrationDataName = "DataKeyName.DriedGhastHydrationDataName";
@@ -105,6 +106,7 @@ public final static class DataKeyName {
public final static String FarmlandDataName = "DataKeyName.FarmlandDataName";
public final static String GateDataName = "DataKeyName.GateDataName";
public final static String HangableDataName = "DataKeyName.HangableDataName";
+ public final static String HangingMossTipDataName = "DataKeyName.HangingMossTipDataName";
public final static String HatchableDataName = "DataKeyName.HatchableDataName";
public final static String HopperDataName = "DataKeyName.HopperDataName";
public final static String JigsawDataName = "DataKeyName.JigsawDataName";
@@ -133,6 +135,11 @@ public final static class DataKeyName {
public final static String MultipleFacingWestDataName = "DataKeyName.MultipleFacingWestDataName";
public final static String MultipleFacingWestNorthWestDataName = "DataKeyName.MultipleFacingWestNorthWestDataName";
public final static String MultipleFacingWestSouthWestDataName = "DataKeyName.MultipleFacingWestSouthWestDataName";
+ public final static String MossyCarpetBottomDataName = "DataKeyName.MossyCarpetBottomDataName";
+ public final static String MossyCarpetHeightEastDataName = "DataKeyName.MossyCarpetHeightEastDataName";
+ public final static String MossyCarpetHeightNorthDataName = "DataKeyName.MossyCarpetHeightNorthDataName";
+ public final static String MossyCarpetHeightSouthDataName = "DataKeyName.MossyCarpetHeightSouthDataName";
+ public final static String MossyCarpetHeightWestDataName = "DataKeyName.MossyCarpetHeightWestDataName";
public final static String NoteBlockInstrumentDataName = "DataKeyName.NoteBlockInstrumentDataName";
public final static String NoteBlockNoteDataName = "DataKeyName.NoteBlockNoteDataName";
public final static String OpenableDataName = "DataKeyName.OpenableDataName";
@@ -142,6 +149,7 @@ public final static class DataKeyName {
public final static String PistonHeadDataName = "DataKeyName.PistonHeadDataName";
public final static String PointedDripstoneThicknessDataName = "DataKeyName.PointedDripstoneThicknessDataName";
public final static String PointedDripstoneVerticalDirectionDataName = "DataKeyName.PointedDripstoneVerticalDirectionDataName";
+ public final static String PotentSulfurStateDataName = "DataKeyName.PotentSulfurStateDataName";
public final static String PowerableDataName = "DataKeyName.PowerableDataName";
public final static String RailDataName = "DataKeyName.RailDataName";
public final static String RedstoneWireEastDataName = "DataKeyName.RedstoneWireEastDataName";
@@ -166,6 +174,8 @@ public final static class DataKeyName {
public final static String SlabDataName = "DataKeyName.SlabDataName";
public final static String SnowableDataName = "DataKeyName.SnowableDataName";
public final static String SnowDataName = "DataKeyName.SnowDataName";
+ public final static String SpeleothemThicknessDataName = "DataKeyName.SpeleothemThicknessDataName";
+ public final static String SpeleothemVerticalDirectionDataName = "DataKeyName.SpeleothemVerticalDirectionDataName";
public final static String StairsDataName = "DataKeyName.StairsDataName";
public final static String StructureBlockDataName = "DataKeyName.StructureBlockDataName";
public final static String TechnicalPistonDataName = "DataKeyName.TechnicalPistonDataName";
diff --git a/src/main/resources/lang/en_US.yml b/src/main/resources/lang/en_US.yml
index bcd1b4a..2c40ccb 100644
--- a/src/main/resources/lang/en_US.yml
+++ b/src/main/resources/lang/en_US.yml
@@ -65,8 +65,10 @@ DataKeyName:
CrafterOrientationDataName: "Crafter Orientation"
CrafterTriggerDataName: "Triggered"
CreakingHeartNatureDataName: "isNature"
+ CreakingHeartNaturalDataName: "Natural"
CreakingHeartStateDataName: "isActive"
DaylightDetectorDataName: "Inverted"
+ DecoratedPotCrackedDataName: "Cracked"
DirectionalDataName: "Direction"
DispenserDataName: "Triggered"
DoorDataName: "Door Hinge"
@@ -76,6 +78,7 @@ DataKeyName:
FarmlandDataName: "Moisture"
GateDataName: "In Wall"
HangableDataName: "Hanging"
+ HangingMossTipDataName: "Tip"
HatchableDataName: "Hatch"
HopperDataName: "Enabled"
JigsawDataName: "Orientation"
@@ -104,6 +107,11 @@ DataKeyName:
MultipleFacingWestDataName: "Faces(West)"
MultipleFacingWestNorthWestDataName: "Faces(West North West)"
MultipleFacingWestSouthWestDataName: "Faces(West South West)"
+ MossyCarpetBottomDataName: "Bottom"
+ MossyCarpetHeightEastDataName: "Height(East)"
+ MossyCarpetHeightNorthDataName: "Height(North)"
+ MossyCarpetHeightSouthDataName: "Height(South)"
+ MossyCarpetHeightWestDataName: "Height(West)"
NoteBlockInstrumentDataName: "Instrument"
NoteBlockNoteDataName: "Note"
OpenableDataName: "Open"
@@ -113,6 +121,7 @@ DataKeyName:
PistonHeadDataName: "ShortArm"
PointedDripstoneThicknessDataName: "Thickness"
PointedDripstoneVerticalDirectionDataName: "Vertical Direction"
+ PotentSulfurStateDataName: "Potent Sulfur State"
PowerableDataName: "Powered"
RailDataName: "Shape"
RedstoneWireEastDataName: "East"
@@ -136,6 +145,8 @@ DataKeyName:
SlabDataName: "Type"
SnowableDataName: "Snowy"
SnowDataName: "Layers"
+ SpeleothemThicknessDataName: "Thickness"
+ SpeleothemVerticalDirectionDataName: "Vertical Direction"
StairsDataName: "Shape"
StructureBlockDataName: "Mode"
TechnicalPistonDataName: "Type"
@@ -151,4 +162,4 @@ DataKeyName:
WallHeightSouthDataName: "South"
WallHeightWestDataName: "West"
WallUpDataName: "Up"
- WaterloggedDataName: "Waterlogged"
\ No newline at end of file
+ WaterloggedDataName: "Waterlogged"
diff --git a/src/main/resources/lang/zh_TW.yml b/src/main/resources/lang/zh_TW.yml
index 3391166..2d33e1f 100644
--- a/src/main/resources/lang/zh_TW.yml
+++ b/src/main/resources/lang/zh_TW.yml
@@ -66,8 +66,10 @@ DataKeyName:
CrafterOrientationDataName: "Crafter Orientation"
CrafterTriggerDataName: "Triggered"
CreakingHeartNatureDataName: "isNature"
+ CreakingHeartNaturalDataName: "Natural"
CreakingHeartStateDataName: "isActive"
DaylightDetectorDataName: "Inverted"
+ DecoratedPotCrackedDataName: "Cracked"
DirectionalDataName: "Direction"
DispenserDataName: "Triggered"
DoorDataName: "Door Hinge"
@@ -77,6 +79,7 @@ DataKeyName:
FarmlandDataName: "Moisture"
GateDataName: "In Wall"
HangableDataName: "Hanging"
+ HangingMossTipDataName: "Tip"
HatchableDataName: "Hatch"
HopperDataName: "Enabled"
JigsawDataName: "Orientation"
@@ -105,6 +108,11 @@ DataKeyName:
MultipleFacingWestDataName: "Faces(West)"
MultipleFacingWestNorthWestDataName: "Faces(West North West)"
MultipleFacingWestSouthWestDataName: "Faces(West South West)"
+ MossyCarpetBottomDataName: "Bottom"
+ MossyCarpetHeightEastDataName: "Height(East)"
+ MossyCarpetHeightNorthDataName: "Height(North)"
+ MossyCarpetHeightSouthDataName: "Height(South)"
+ MossyCarpetHeightWestDataName: "Height(West)"
NoteBlockInstrumentDataName: "Instrument"
NoteBlockNoteDataName: "Note"
OpenableDataName: "Open"
@@ -114,6 +122,7 @@ DataKeyName:
PistonHeadDataName: "ShortArm"
PointedDripstoneThicknessDataName: "Thickness"
PointedDripstoneVerticalDirectionDataName: "Vertical Direction"
+ PotentSulfurStateDataName: "Potent Sulfur State"
PowerableDataName: "Powered"
RailDataName: "Shape"
RedstoneWireEastDataName: "East"
@@ -137,6 +146,8 @@ DataKeyName:
SlabDataName: "Type"
SnowableDataName: "Snowy"
SnowDataName: "Layers"
+ SpeleothemThicknessDataName: "Thickness"
+ SpeleothemVerticalDirectionDataName: "Vertical Direction"
StairsDataName: "Shape"
StructureBlockDataName: "Mode"
TechnicalPistonDataName: "Type"
@@ -150,4 +161,4 @@ DataKeyName:
WallHeightSouthDataName: "South"
WallHeightWestDataName: "West"
WallUpDataName: "Up"
- WaterloggedDataName: "Waterlogged"
\ No newline at end of file
+ WaterloggedDataName: "Waterlogged"
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index c661b08..ef22b32 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,7 +1,7 @@
name: DebugStickPro
version: '${project.version}'
main: dev.twme.debugstickpro.DebugStickPro
-api-version: '1.19'
+api-version: '26.2'
prefix: DebugStickPro
authors: [TWME]
website: https://github.com/TWME-TW/DebugStickPro
From 3d47dbe1997fe27d1cc4a4d158465c4753f95f3c Mon Sep 17 00:00:00 2001
From: twme-ai <299940106+twme-ai@users.noreply.github.com>
Date: Sun, 5 Jul 2026 07:39:44 +0000
Subject: [PATCH 2/2] Build with Java 25 for Paper 26.2
---
.github/workflows/maven.yml | 4 ++--
README.md | 2 +-
pom.xml | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index b9b2ac7..4a210ff 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -21,10 +21,10 @@ jobs:
steps:
- uses: actions/checkout@v6
- - name: Set up JDK 21
+ - name: Set up JDK 25
uses: actions/setup-java@v5
with:
- java-version: '21'
+ java-version: '25'
distribution: 'temurin'
cache: maven
- name: Build with Maven
diff --git a/README.md b/README.md
index ab59954..c151d55 100644
--- a/README.md
+++ b/README.md
@@ -99,7 +99,7 @@ Same as regular debugging stick operation:
## How to install:
### Requirements
-- **Java 21** or higher
+- **Java 25** or higher
- **Paper 26.2+**
- **[PacketEvents](https://github.com/retrooper/packetevents) 2.13.0+** (Required for v0.5.0+)
diff --git a/pom.xml b/pom.xml
index 0dc5b6f..57a5f76 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,7 +12,7 @@
DebugStickPro
- 21
+ 25
UTF-8