diff --git a/Plugin/pom.xml b/Plugin/pom.xml
index 6c96b4b8..aeff8b85 100644
--- a/Plugin/pom.xml
+++ b/Plugin/pom.xml
@@ -182,6 +182,14 @@
compile
true
+
+ de.corneliusmay
+ SilkSpawners_v2-v1_21_R0.1
+ v1_21_R0.1
+ jar
+ compile
+ true
+
de.corneliusmay
SilkSpawners_v2-API
diff --git a/pom.xml b/pom.xml
index 41a05d90..8deba862 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,6 +28,7 @@
v1_20_R2
v1_20_R3
v1_20_R4
+ v1_21_R0.1
pom
@@ -47,7 +48,7 @@
org.projectlombok
lombok
- 1.18.26
+ 1.18.34
provided
diff --git a/v1_21_R0.1/pom.xml b/v1_21_R0.1/pom.xml
new file mode 100644
index 00000000..513d9365
--- /dev/null
+++ b/v1_21_R0.1/pom.xml
@@ -0,0 +1,38 @@
+
+
+
+ SilkSpawners_v2
+ de.corneliusmay
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ SilkSpawners_v2-v1_21_R0.1
+ v1_21_R0.1
+
+
+ 17
+ 17
+
+
+
+
+ org.spigotmc
+ spigot-api
+ 1.21-R0.1-SNAPSHOT
+ jar
+ compile
+ true
+
+
+ de.corneliusmay
+ SilkSpawners_v2-API
+ API
+ jar
+ compile
+ true
+
+
+
diff --git a/v1_21_R0.1/src/main/java/de/corneliusmay/silkspawners/nms/v1_21_R0.1/NMSHandler.java b/v1_21_R0.1/src/main/java/de/corneliusmay/silkspawners/nms/v1_21_R0.1/NMSHandler.java
new file mode 100644
index 00000000..cc961783
--- /dev/null
+++ b/v1_21_R0.1/src/main/java/de/corneliusmay/silkspawners/nms/v1_21_R0.1/NMSHandler.java
@@ -0,0 +1,41 @@
+package de.corneliusmay.silkspawners.nms.v1_20_R4;
+
+import de.corneliusmay.silkspawners.api.NMS;
+import org.bukkit.Material;
+import org.bukkit.attribute.Attribute;
+import org.bukkit.attribute.AttributeInstance;
+import org.bukkit.block.Block;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.util.RayTraceResult;
+
+public class NMSHandler implements NMS {
+
+ @Override
+ public Block getTargetBlock(Player player) {
+ double range = 5;
+
+ AttributeInstance blockRange = player.getAttribute(Attribute.PLAYER_BLOCK_INTERACTION_RANGE);
+ if(blockRange != null) {
+ range = blockRange.getValue();
+ }
+
+ RayTraceResult hitResult = player.rayTraceBlocks(range);
+ return hitResult != null ? hitResult.getHitBlock() : null;
+ }
+
+ @Override
+ public ItemStack[] getItemsInHand(Player player) {
+ return new ItemStack[]{ player.getInventory().getItemInMainHand(), player.getInventory().getItemInOffHand() };
+ }
+
+ @Override
+ public Material getSpawnerMaterial() {
+ return Material.SPAWNER;
+ }
+
+ @Override
+ public Material getPlaceholderMaterial() {
+ return Material.GRAY_STAINED_GLASS_PANE;
+ }
+}