From e0e1c777777877b88d362683cfac41f0feccd8f1 Mon Sep 17 00:00:00 2001 From: MidnightTale Date: Sat, 8 Apr 2023 08:47:19 +0700 Subject: [PATCH 1/4] funny sand / folia support --- src/main/java/xyz/hynse/bbsdfia/Bbsdfia.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/xyz/hynse/bbsdfia/Bbsdfia.java b/src/main/java/xyz/hynse/bbsdfia/Bbsdfia.java index 6fcab8e..4e44ae0 100644 --- a/src/main/java/xyz/hynse/bbsdfia/Bbsdfia.java +++ b/src/main/java/xyz/hynse/bbsdfia/Bbsdfia.java @@ -79,4 +79,4 @@ public class Bbsdfia extends JavaPlugin implements Listener { } return relative; } -} \ No newline at end of file +} From c6aa39e28b2f7ea8c39d1154e0eafa51edb0a4c3 Mon Sep 17 00:00:00 2001 From: MidnightTale <125941391+MidnightTale@users.noreply.github.com> Date: Sat, 8 Apr 2023 08:48:22 +0700 Subject: [PATCH 2/4] Create README.md --- README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..dd557d0 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Bring back sand dupe folia From a5f969edb26387ac630b73773ea24a35115dbe48 Mon Sep 17 00:00:00 2001 From: MidnightTale Date: Sat, 8 Apr 2023 09:15:14 +0700 Subject: [PATCH 3/4] folia ? --- build.gradle | 2 +- src/main/java/xyz/hynse/bbsdfia/Bbsdfia.java | 13 ++++---- .../java/xyz/hynse/bbsdfia/Compatibility.java | 30 +++++++++++++++++++ 3 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 src/main/java/xyz/hynse/bbsdfia/Compatibility.java diff --git a/build.gradle b/build.gradle index 5bff7ce..9bf734f 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,7 @@ repositories { } dependencies { - compileOnly "io.papermc.paper:paper-api:1.19.4-R0.1-SNAPSHOT" + compileOnly "dev.folia:folia-api:1.19.4-R0.1-SNAPSHOT" } def targetJavaVersion = 17 diff --git a/src/main/java/xyz/hynse/bbsdfia/Bbsdfia.java b/src/main/java/xyz/hynse/bbsdfia/Bbsdfia.java index 4e44ae0..075cf14 100644 --- a/src/main/java/xyz/hynse/bbsdfia/Bbsdfia.java +++ b/src/main/java/xyz/hynse/bbsdfia/Bbsdfia.java @@ -27,18 +27,16 @@ public class Bbsdfia extends JavaPlugin implements Listener { } @EventHandler - public void onFallingBlockToBlock(EntityChangeBlockEvent e){ - if(e.getEntityType() == EntityType.FALLING_BLOCK){ + public void onFallingBlockToBlock(EntityChangeBlockEvent e) { + if (e.getEntityType() == EntityType.FALLING_BLOCK) { Entity entity = e.getEntity(); Location loc = entity.getLocation(); Vector vel = entity.getVelocity(); Block movingTo = getBlockMovingTo(loc, vel); - if(movingTo != null && movingTo.getType() == Material.END_PORTAL){ - Location spawnLoc = movingTo.getLocation(); - spawnLoc.setX(spawnLoc.getX()+0.5); - spawnLoc.setY(spawnLoc.getY()+0.5); - spawnLoc.setZ(spawnLoc.getZ()+0.5); + if (movingTo != null && movingTo.getType() == Material.END_PORTAL) { + Location obsidianPlatformCenter = new Location(movingTo.getWorld(), 100, 50, 0); // change coordinates to the center of the obsidian platform in the end dimension + Location spawnLoc = obsidianPlatformCenter.clone().add(0, 1, 0); // spawn the new falling block entity one block above the obsidian platform FallingBlock dummy = loc.getWorld().spawnFallingBlock(spawnLoc, ((FallingBlock) entity).getBlockData()); Vector dummyVel = vel.clone(); @@ -54,6 +52,7 @@ public class Bbsdfia extends JavaPlugin implements Listener { } + Block getBlockMovingTo(Location loc, Vector vel){ double absMax = 0, max = 0; char dir = ' '; diff --git a/src/main/java/xyz/hynse/bbsdfia/Compatibility.java b/src/main/java/xyz/hynse/bbsdfia/Compatibility.java new file mode 100644 index 0000000..dc4ac48 --- /dev/null +++ b/src/main/java/xyz/hynse/bbsdfia/Compatibility.java @@ -0,0 +1,30 @@ +package xyz.hynse.bbsdfia; + +import org.bukkit.Bukkit; +import org.bukkit.plugin.Plugin; + +public class Compatibility { + + public static Boolean IS_FOLIA = null; + + private static boolean methodExist(Class clazz, String methodName, Class... parameterTypes) { + try { + clazz.getDeclaredMethod(methodName, parameterTypes); + return true; + } catch (Throwable ignored) {} + return false; + } + + public static Boolean isFolia() { + if (IS_FOLIA == null) IS_FOLIA = methodExist(Bukkit.class, "getGlobalRegionScheduler"); + return IS_FOLIA; + } + + public static void runTaskAsync(Plugin plugin, Runnable runnable) { + if (isFolia()) { + Bukkit.getAsyncScheduler().runNow(plugin, (task) -> runnable.run()); + return; + } + Bukkit.getScheduler().runTaskAsynchronously(plugin, runnable); + } +} \ No newline at end of file From 6a43007a4930e0adc0352ca0e9baf673f40187c6 Mon Sep 17 00:00:00 2001 From: MidnightTale Date: Sat, 8 Apr 2023 11:28:27 +0700 Subject: [PATCH 4/4] Scheduler --- src/main/java/xyz/hynse/bbsdfia/Bbsdfia.java | 28 ++++++++++++----- .../java/xyz/hynse/bbsdfia/Compatibility.java | 30 ------------------- 2 files changed, 20 insertions(+), 38 deletions(-) delete mode 100644 src/main/java/xyz/hynse/bbsdfia/Compatibility.java diff --git a/src/main/java/xyz/hynse/bbsdfia/Bbsdfia.java b/src/main/java/xyz/hynse/bbsdfia/Bbsdfia.java index 075cf14..6b8f528 100644 --- a/src/main/java/xyz/hynse/bbsdfia/Bbsdfia.java +++ b/src/main/java/xyz/hynse/bbsdfia/Bbsdfia.java @@ -10,8 +10,10 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityChangeBlockEvent; import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.util.Vector; + public class Bbsdfia extends JavaPlugin implements Listener { @Override public void onEnable() { @@ -38,22 +40,32 @@ public class Bbsdfia extends JavaPlugin implements Listener { Location obsidianPlatformCenter = new Location(movingTo.getWorld(), 100, 50, 0); // change coordinates to the center of the obsidian platform in the end dimension Location spawnLoc = obsidianPlatformCenter.clone().add(0, 1, 0); // spawn the new falling block entity one block above the obsidian platform - FallingBlock dummy = loc.getWorld().spawnFallingBlock(spawnLoc, ((FallingBlock) entity).getBlockData()); - Vector dummyVel = vel.clone(); - dummyVel.setY(-dummyVel.getY()); - dummyVel.multiply(new Vector(2, 2, 2)); // double the velocity - // add a constant downward velocity to simulate gravity - dummyVel.add(new Vector(0, 0.3, 0)); + // Schedule the logic to be run asynchronously after 1 tick + getServer().getAsyncScheduler().runNow(this, scheduledTask -> new BukkitRunnable() { + @Override + public void run() { + FallingBlock dummy = loc.getWorld().spawnFallingBlock(spawnLoc, ((FallingBlock) entity).getBlockData()); + Vector dummyVel = vel.clone(); + dummyVel.setY(-dummyVel.getY()); + dummyVel.multiply(new Vector(2, 2, 2)); // double the velocity + + // add a constant downward velocity to simulate gravity + dummyVel.add(new Vector(0, 0.3, 0)); + + dummy.setVelocity(dummyVel); + } + }.runTask(this)); + - dummy.setVelocity(dummyVel); } } } - Block getBlockMovingTo(Location loc, Vector vel){ + + Block getBlockMovingTo(Location loc, Vector vel){ double absMax = 0, max = 0; char dir = ' '; Block relative = null; diff --git a/src/main/java/xyz/hynse/bbsdfia/Compatibility.java b/src/main/java/xyz/hynse/bbsdfia/Compatibility.java deleted file mode 100644 index dc4ac48..0000000 --- a/src/main/java/xyz/hynse/bbsdfia/Compatibility.java +++ /dev/null @@ -1,30 +0,0 @@ -package xyz.hynse.bbsdfia; - -import org.bukkit.Bukkit; -import org.bukkit.plugin.Plugin; - -public class Compatibility { - - public static Boolean IS_FOLIA = null; - - private static boolean methodExist(Class clazz, String methodName, Class... parameterTypes) { - try { - clazz.getDeclaredMethod(methodName, parameterTypes); - return true; - } catch (Throwable ignored) {} - return false; - } - - public static Boolean isFolia() { - if (IS_FOLIA == null) IS_FOLIA = methodExist(Bukkit.class, "getGlobalRegionScheduler"); - return IS_FOLIA; - } - - public static void runTaskAsync(Plugin plugin, Runnable runnable) { - if (isFolia()) { - Bukkit.getAsyncScheduler().runNow(plugin, (task) -> runnable.run()); - return; - } - Bukkit.getScheduler().runTaskAsynchronously(plugin, runnable); - } -} \ No newline at end of file