diff --git a/1todos/server/minecraft-patches/features/0044-Carpet-features.patch b/1todos/server/minecraft-patches/features/0044-Carpet-features.patch index bae4bc7..8909c1d 100644 --- a/1todos/server/minecraft-patches/features/0044-Carpet-features.patch +++ b/1todos/server/minecraft-patches/features/0044-Carpet-features.patch @@ -25,13 +25,6 @@ index 8d32d906f87a1cb866a7497ee0de3045e9adce2c..8dbf7a1f448277cc2a40dec8d9627a85 org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handleTick(); // Leaves - protocol // tick connections -@@ -526,4 +529,4 @@ public final class RegionizedServer { - public static final record WorldLevelData(ServerLevel world, long nonRedstoneGameTime, long dayTime) { - - } --} -\ No newline at end of file -+} diff --git a/net/minecraft/commands/arguments/blocks/BlockInput.java b/net/minecraft/commands/arguments/blocks/BlockInput.java index f9a5058e50c7fc6ebc2fc311bbc7064bfbd89035..9b737c3fcfae1f6afeee42cd4a4d83ba56f7c3e9 100644 --- a/net/minecraft/commands/arguments/blocks/BlockInput.java diff --git a/1todos/api/paper-patches/features/0002-Leaves-Add-fakeplayer-api.patch b/lophine-api/paper-patches/features/0003-Leaves-Add-fakeplayer-api.patch similarity index 78% rename from 1todos/api/paper-patches/features/0002-Leaves-Add-fakeplayer-api.patch rename to lophine-api/paper-patches/features/0003-Leaves-Add-fakeplayer-api.patch index 8c6ebd6..02d3b7e 100644 --- a/1todos/api/paper-patches/features/0002-Leaves-Add-fakeplayer-api.patch +++ b/lophine-api/paper-patches/features/0003-Leaves-Add-fakeplayer-api.patch @@ -8,13 +8,13 @@ As a part of : Leaves (https://github.com/LeavesMC/Leaves) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index b9d34c0b80a5d0c26f43e4959c3a8256a854585a..850f65d764030b09d469e33a69409204503d9ca1 100644 +index 8e96326c55510642df01ef15e1a3edb1e81176cb..592a3c59bf5edbc65c7c0472e2382593b7b22086 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -3039,4 +3039,15 @@ public final class Bukkit { - public static void restart() { - server.restart(); +@@ -3048,4 +3048,15 @@ public final class Bukkit { + return server.getFeatureManager(); } + // Leaves end - Feature API + + // Leaves start - Bot API + /** @@ -28,10 +28,10 @@ index b9d34c0b80a5d0c26f43e4959c3a8256a854585a..850f65d764030b09d469e33a69409204 + // Leaves end - Bot API } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 1dc5d8c96786950fc98cada5bad981c0c716b154..cb8c4e09511f99558eb5af26c08c5cb1f936780d 100644 +index 473b0e02c003d5317ef798c320e5c845124f4e12..978e015e91408503b4ec84ec5b3c5193255ba7db 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2791,4 +2791,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2813,4 +2813,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ double @Nullable [] getRegionTPS(@NotNull World world, int chunkX, int chunkZ); // Folia end - region TPS API diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/Bot.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/Bot.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/Bot.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/Bot.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/BotCreator.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/BotCreator.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/BotCreator.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/BotCreator.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/BotManager.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/BotManager.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/BotManager.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/BotManager.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/AttackAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/AttackAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/AttackAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/AttackAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/BotAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/BotAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/BotAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/BotAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/BreakBlockAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/BreakBlockAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/BreakBlockAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/BreakBlockAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/DropAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/DropAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/DropAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/DropAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/FishAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/FishAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/FishAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/FishAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/JumpAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/JumpAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/JumpAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/JumpAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/LookAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/LookAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/LookAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/LookAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/MountAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/MountAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/MountAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/MountAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/MoveAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/MoveAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/MoveAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/MoveAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/RotationAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/RotationAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/RotationAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/RotationAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/SneakAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/SneakAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/SneakAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/SneakAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/StateBotAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/StateBotAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/StateBotAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/StateBotAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/SwapAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/SwapAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/SwapAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/SwapAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/SwimAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/SwimAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/SwimAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/SwimAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/TimerBotAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/TimerBotAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/TimerBotAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/TimerBotAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemAutoAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemAutoAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemAutoAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemAutoAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemOffhandAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemOffhandAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemOffhandAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemOffhandAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemOnAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemOnAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemOnAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemOnAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemOnOffhandAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemOnOffhandAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemOnOffhandAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemOnOffhandAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemToAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemToAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemToAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemToAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemToOffhandAction.java b/lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemToOffhandAction.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemToOffhandAction.java rename to lophine-api/src/main/java/org/leavesmc/leaves/entity/bot/action/UseItemToOffhandAction.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotActionEvent.java b/lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotActionEvent.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotActionEvent.java rename to lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotActionEvent.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotActionExecuteEvent.java b/lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotActionExecuteEvent.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotActionExecuteEvent.java rename to lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotActionExecuteEvent.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotActionScheduleEvent.java b/lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotActionScheduleEvent.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotActionScheduleEvent.java rename to lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotActionScheduleEvent.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotActionStopEvent.java b/lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotActionStopEvent.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotActionStopEvent.java rename to lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotActionStopEvent.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotConfigModifyEvent.java b/lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotConfigModifyEvent.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotConfigModifyEvent.java rename to lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotConfigModifyEvent.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotCreateEvent.java b/lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotCreateEvent.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotCreateEvent.java rename to lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotCreateEvent.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotDeathEvent.java b/lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotDeathEvent.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotDeathEvent.java rename to lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotDeathEvent.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotEvent.java b/lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotEvent.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotEvent.java rename to lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotEvent.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotInventoryOpenEvent.java b/lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotInventoryOpenEvent.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotInventoryOpenEvent.java rename to lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotInventoryOpenEvent.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotJoinEvent.java b/lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotJoinEvent.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotJoinEvent.java rename to lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotJoinEvent.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotLoadEvent.java b/lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotLoadEvent.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotLoadEvent.java rename to lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotLoadEvent.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotRemoveEvent.java b/lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotRemoveEvent.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotRemoveEvent.java rename to lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotRemoveEvent.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotSpawnLocationEvent.java b/lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotSpawnLocationEvent.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/event/bot/BotSpawnLocationEvent.java rename to lophine-api/src/main/java/org/leavesmc/leaves/event/bot/BotSpawnLocationEvent.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/event/player/PlayerOperationLimitEvent.java b/lophine-api/src/main/java/org/leavesmc/leaves/event/player/PlayerOperationLimitEvent.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/event/player/PlayerOperationLimitEvent.java rename to lophine-api/src/main/java/org/leavesmc/leaves/event/player/PlayerOperationLimitEvent.java diff --git a/1todos/api/src/main/java/org/leavesmc/leaves/event/player/UpdateSuppressionEvent.java b/lophine-api/src/main/java/org/leavesmc/leaves/event/player/UpdateSuppressionEvent.java similarity index 100% rename from 1todos/api/src/main/java/org/leavesmc/leaves/event/player/UpdateSuppressionEvent.java rename to lophine-api/src/main/java/org/leavesmc/leaves/event/player/UpdateSuppressionEvent.java diff --git a/1todos/server/luminol-patches/features/0004-Leaves-Fakeplayer.patch b/lophine-server/luminol-patches/features/0004-Leaves-Fakeplayer.patch similarity index 59% rename from 1todos/server/luminol-patches/features/0004-Leaves-Fakeplayer.patch rename to lophine-server/luminol-patches/features/0004-Leaves-Fakeplayer.patch index f0603a8..9c4cb48 100644 --- a/1todos/server/luminol-patches/features/0004-Leaves-Fakeplayer.patch +++ b/lophine-server/luminol-patches/features/0004-Leaves-Fakeplayer.patch @@ -3,15 +3,12 @@ From: Helvetica Volubi Date: Wed, 18 Feb 2026 00:15:08 +0800 Subject: [PATCH] Leaves: Fakeplayer -Co-authored by: violetc <58360096+s-yh-china@users.noreply.github.com> -As a part of : Leaves (https://github.com/LeavesMC/Leaves) -Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/me/earthme/luminol/utils/FoliaServerWaypointManager.java b/src/main/java/me/earthme/luminol/utils/FoliaServerWaypointManager.java -index 948730740e151352b4a12a90862f1e16925e52b0..0e6c9edbceef525bf102ad8f1fc0cb08e789d0e6 100644 +index 0a20c6f03625391201e5ced167707e54ed27daa1..2872b22e44cba48442c526f0a53e1fc6c5ce760f 100644 --- a/src/main/java/me/earthme/luminol/utils/FoliaServerWaypointManager.java +++ b/src/main/java/me/earthme/luminol/utils/FoliaServerWaypointManager.java -@@ -39,6 +39,12 @@ public class FoliaServerWaypointManager implements WaypointManager<@NotNull Wayp +@@ -46,6 +46,12 @@ public class FoliaServerWaypointManager implements WaypointManager<@NotNull Wayp return; } @@ -24,16 +21,18 @@ index 948730740e151352b4a12a90862f1e16925e52b0..0e6c9edbceef525bf102ad8f1fc0cb08 this.waypoints.add(waypoint); for (ServerPlayer toCreateFor : this.trackingPlayers) { -@@ -92,6 +98,12 @@ public class FoliaServerWaypointManager implements WaypointManager<@NotNull Wayp - public void addPlayer(ServerPlayer player) { - this.trackingPlayers.add(player); +@@ -101,7 +107,13 @@ public class FoliaServerWaypointManager implements WaypointManager<@NotNull Wayp + scheduleIfOffTarget(player, () -> { + this.trackingPlayers.add(player); -+ // Leaves start - fakeplayer +- for (WaypointTransmitter transmitter : this.waypoints) { ++ // Leaves start - fakeplayer + if (player instanceof org.leavesmc.leaves.bot.ServerBot) { + return; + } + // Leaves end - fakeplayer + - for (WaypointTransmitter waypointTransmitter : this.waypoints) { - this.createConnection(player, waypointTransmitter); - } ++ for (WaypointTransmitter transmitter : this.waypoints) { + this.createConnection(player, transmitter); + } + diff --git a/lophine-server/luminol-patches/features/0005-Leaves-Fakeplayer.patch b/lophine-server/luminol-patches/features/0005-Leaves-Fakeplayer.patch new file mode 100644 index 0000000..016b46a --- /dev/null +++ b/lophine-server/luminol-patches/features/0005-Leaves-Fakeplayer.patch @@ -0,0 +1,26 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Helvetica Volubi +Date: Sun, 17 May 2026 03:43:54 +0800 +Subject: [PATCH] Leaves: Fakeplayer + + +diff --git a/src/main/java/org/leavesmc/leaves/plugin/ServerFeatureManager.java b/src/main/java/org/leavesmc/leaves/plugin/ServerFeatureManager.java +index 8f0548908a9e43ce29c4476f2707f6898e540aec..009f05ac58b9d1cf809e997e30158eb5d667e9f0 100644 +--- a/src/main/java/org/leavesmc/leaves/plugin/ServerFeatureManager.java ++++ b/src/main/java/org/leavesmc/leaves/plugin/ServerFeatureManager.java +@@ -11,14 +11,7 @@ public class ServerFeatureManager implements FeatureManager { + private final Set availableFeatures = new HashSet<>(); + + private ServerFeatureManager() { +- if (false) { // Luminol not provide this +- availableFeatures.addAll(Set.of( +- FAKEPLAYER, +- PHOTOGRAPHER, +- BYTEBUF, +- UPDATE_SUPPRESSION_EVENT +- )); +- } ++ availableFeatures.add(FAKEPLAYER); + if (Boolean.getBoolean("leavesclip.enable.mixin")) { + availableFeatures.add(MIXIN); + } diff --git a/1todos/server/minecraft-patches/features/0022-Leaves-Fakeplayer.patch b/lophine-server/minecraft-patches/features/0029-Leaves-Fakeplayer.patch similarity index 58% rename from 1todos/server/minecraft-patches/features/0022-Leaves-Fakeplayer.patch rename to lophine-server/minecraft-patches/features/0029-Leaves-Fakeplayer.patch index 8ada53c..04350ca 100644 --- a/1todos/server/minecraft-patches/features/0022-Leaves-Fakeplayer.patch +++ b/lophine-server/minecraft-patches/features/0029-Leaves-Fakeplayer.patch @@ -8,19 +8,19 @@ As a part of : Leaves (https://github.com/LeavesMC/Leaves) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/net/minecraft/advancements/criterion/SimpleCriterionTrigger.java b/net/minecraft/advancements/criterion/SimpleCriterionTrigger.java -index 368a9d33f93c2e85abe4cf10df5a85c09fb03dd6..2b78040daeb3b09c08494cbc1d4a9d36080895f9 100644 +index dfce5ced082de0caaff8da071fb632cd6ae787c9..d5c1862ebf6066859da74f47fa0be0256ba0f653 100644 --- a/net/minecraft/advancements/criterion/SimpleCriterionTrigger.java +++ b/net/minecraft/advancements/criterion/SimpleCriterionTrigger.java -@@ -39,6 +39,7 @@ public abstract class SimpleCriterionTrigger testTrigger) { + protected void trigger(final ServerPlayer player, final Predicate matcher) { + if (player instanceof org.leavesmc.leaves.bot.ServerBot) return; // Leaves - bot skip PlayerAdvancements advancements = player.getAdvancements(); - Set> set = (Set) advancements.criterionData.get(this); // Paper - fix PlayerAdvancements leak - if (set != null && !set.isEmpty()) { + Set> allListeners = (Set) advancements.criterionData.get(this); // Paper - fix PlayerAdvancements leak + if (allListeners != null && !allListeners.isEmpty()) { diff --git a/net/minecraft/network/Connection.java b/net/minecraft/network/Connection.java -index 9f444988d40208a1bfa9f147ef80489f81115e93..ab2fa0b86564622501238305714fff014e2b2a56 100644 +index efbbc1a40d203a2818eeda2a4e938b9a6117f1c3..6b85a5ad9af0c57a0d4d5b55f62b82c5ff69b0e8 100644 --- a/net/minecraft/network/Connection.java +++ b/net/minecraft/network/Connection.java @@ -74,7 +74,7 @@ public class Connection extends SimpleChannelInboundHandler> { @@ -28,61 +28,57 @@ index 9f444988d40208a1bfa9f147ef80489f81115e93..ab2fa0b86564622501238305714fff01 // Spigot end private volatile @Nullable PacketListener disconnectListener; - private volatile @Nullable PacketListener packetListener; -+ public volatile @Nullable PacketListener packetListener; // Leaves - private -> protected // Lophine protected -> public ++ protected volatile @Nullable PacketListener packetListener; // Leaves - private -> protected private @Nullable DisconnectionDetails disconnectionDetails; private boolean encrypted; private final java.util.concurrent.atomic.AtomicBoolean disconnectionHandled = new java.util.concurrent.atomic.AtomicBoolean(false); // Folia - region threading - may be called concurrently during configuration stage diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index d5b680fc6e13ec26d0db2448009e4cbe59933e22..385c71d70ed9e5a3ae25fbecaefd6773c467d31d 100644 +index 0bedaa20bc2cae75a48357e69740ada2380a03dd..86393793dd1b90f033c93c70933e1e4a7546eb15 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -425,6 +425,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function threadFunction) { + public static S spin(final Function factory) { ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system - AtomicReference atomicReference = new AtomicReference<>(); -@@ -1050,6 +1052,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop serverReference = new AtomicReference<>(); +@@ -1120,6 +1122,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0) { // Folia - region threading - this is complicated to implement, and even if done correctly is messy + if (false && emptyTickThreshold > 0) { // Folia - region threading - this is complicated to implement, and even if done correctly is messy - if (this.playerList.getPlayerCount() == 0 && !this.tickRateManager.isSprinting() && this.pluginsBlockingSleep.isEmpty()) { // Paper - API to allow/disallow tick sleeping + if (this.playerList.getPlayerCount() == 0 && this.botList.bots.isEmpty() && !this.tickRateManager.isSprinting() && this.pluginsBlockingSleep.isEmpty()) { // Paper - API to allow/disallow tick sleeping // Leaves - fakeplayer this.emptyTicks++; } else { this.emptyTicks = 0; -@@ -1801,6 +1808,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0) { this.playerList.saveAll(playerSaveInterval); + org.leavesmc.leaves.bot.BotList.INSTANCE.saveAllResumeBots(playerSaveInterval); // Leaves - resident fakeplayer } - for (final ServerLevel level : (region == null ? this.getAllLevels() : Arrays.asList(region.world))) { // Folia - region threading - if (level.paperConfig().chunks.autoSaveInterval.value() > 0) { -@@ -2027,6 +2035,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop players, final @Nullable Component reason) throws CommandSyntaxException { + UserBanList list = source.getServer().getPlayerList().getBans(); + int count = 0; +- + boolean hasBot = false; // Leaves - disable kick - for (NameAndId nameAndId : players) { + for (NameAndId player : players) { + // Leaves start - disable ban -+ if (nameAndId.isBot()) { ++ if (player.isBot()) { + source.sendFailure(Component.literal("Permission denied")); + hasBot = true; + continue; + } + // Leaves end - disable ban - if (!bans.isBanned(nameAndId)) { - UserBanListEntry userBanListEntry = new UserBanListEntry( - nameAndId, null, source.getTextName(), null, reason == null ? null : reason.getString() -@@ -63,7 +71,13 @@ public class BanPlayerCommands { + if (!list.isBanned(player)) { + UserBanListEntry entry = new UserBanListEntry(player, null, source.getTextName(), null, reason == null ? null : reason.getString()); + list.add(entry); +@@ -53,7 +60,13 @@ public class BanPlayerCommands { } - if (i == 0) { + if (count == 0) { - throw ERROR_ALREADY_BANNED.create(); + // Leaves start - disable kick + if (hasBot) { -+ return i; ++ return count; + } else { + throw ERROR_ALREADY_BANNED.create(); + } + // Leaves end - disable kick } else { - return i; + return count; } diff --git a/net/minecraft/server/commands/KickCommand.java b/net/minecraft/server/commands/KickCommand.java -index 5f78d629bab84acb2fa43a9fcc1cec52b4e91ae3..1c6059bd23afdd555d2dc8c533a5b027957c7b3a 100644 +index 0227dd63f67537d769494e122616873c18d35350..18d49018b1330cfcaa91d9b02d0d23e4ba941809 100644 --- a/net/minecraft/server/commands/KickCommand.java +++ b/net/minecraft/server/commands/KickCommand.java -@@ -46,9 +46,17 @@ public class KickCommand { +@@ -38,9 +38,17 @@ public class KickCommand { if (!source.getServer().isPublished()) { throw ERROR_SINGLEPLAYER.create(); } else { + boolean hasBot = false; // Leaves - disable kick - int i = 0; + int count = 0; - for (ServerPlayer serverPlayer : players) { + for (ServerPlayer player : players) { + // Leaves start - disable kick -+ if (serverPlayer instanceof org.leavesmc.leaves.bot.ServerBot) { ++ if (player instanceof org.leavesmc.leaves.bot.ServerBot) { + source.sendFailure(Component.literal("Permission denied")); + hasBot = true; + continue; + } + // Leaves end - disable kick - if (!source.getServer().isSingleplayerOwner(serverPlayer.nameAndId())) { - serverPlayer.connection.disconnect(reason, org.bukkit.event.player.PlayerKickEvent.Cause.KICK_COMMAND); // Paper - kick event cause - source.sendSuccess(() -> Component.translatable("commands.kick.success", serverPlayer.getDisplayName(), reason), true); -@@ -57,7 +65,13 @@ public class KickCommand { + if (!source.getServer().isSingleplayerOwner(player.nameAndId())) { + player.connection.disconnect(reason, org.bukkit.event.player.PlayerKickEvent.Cause.KICK_COMMAND); // Paper - kick event cause + source.sendSuccess(() -> Component.translatable("commands.kick.success", player.getDisplayName(), reason), true); +@@ -49,7 +57,13 @@ public class KickCommand { } - if (i == 0) { + if (count == 0) { - throw ERROR_KICKING_OWNER.create(); + // Leaves start - disable kick + if (hasBot) { -+ return i; ++ return count; + } else { + throw ERROR_KICKING_OWNER.create(); + } + // Leaves end - disable kick } else { - return i; + return count; } diff --git a/net/minecraft/server/commands/OpCommand.java b/net/minecraft/server/commands/OpCommand.java -index 07332a86e6e0441bafacb020f27ec36a277f1486..590891d70a71ab30ceae3a3cf1923745e7c20b26 100644 +index 636f56bfc0e9075b257e2eb14e858975bdedd801..20cbc0e65fea3fc2d0033259c2f35e158ea81926 100644 --- a/net/minecraft/server/commands/OpCommand.java +++ b/net/minecraft/server/commands/OpCommand.java -@@ -43,6 +43,7 @@ public class OpCommand { - int i = 0; +@@ -39,6 +39,7 @@ public class OpCommand { + int count = 0; - for (NameAndId nameAndId : players) { -+ if (nameAndId.isBot()) continue; // Leaves - disable op - if (!playerList.isOp(nameAndId)) { - playerList.op(nameAndId); - i++; + for (NameAndId player : players) { ++ if (player.isBot()) continue; // Leaves - disable op + if (!list.isOp(player)) { + list.op(player); + count++; diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java -index 5fbcb5eac1d5449247da77b6120edbe2f2dd1d58..69cc67b7618d38e65ccb1f4c58013ef116886ad2 100644 +index 5ef4da46445e6caff4025baf079457348b0d5801..05c1a96309c6dbafa7027e6b11eacc74c42f492b 100644 --- a/net/minecraft/server/dedicated/DedicatedServer.java +++ b/net/minecraft/server/dedicated/DedicatedServer.java -@@ -252,6 +252,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -274,6 +274,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface } // Spigot start @@ -228,24 +225,24 @@ index 5fbcb5eac1d5449247da77b6120edbe2f2dd1d58..69cc67b7618d38e65ccb1f4c58013ef1 this.setPlayerList(new DedicatedPlayerList(this, this.registries(), this.playerDataStorage)); org.spigotmc.SpigotConfig.init((java.io.File) this.options.valueOf("spigot-settings")); org.spigotmc.SpigotConfig.registerCommands(); -@@ -263,6 +264,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface - // Paper end - initialize global and world-defaults configuration - me.earthme.luminol.config.ConfigManager.loadConfigFiles(); // Luminol - load config file - fun.bm.lophine.utils.ServerI18nUtil.init(); // Lophine - I18n support +@@ -295,6 +296,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface + consoleThread.start(); // Paper - Enhance console tab completions for brigadier commands; start console thread after MinecraftServer.console & PaperConfig are initialized + io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command + if (false) this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark // Luminol - Force disable builtin spark + this.getBotList().loadResumeBotInfo(); // Leaves - load resident bot info - if (false) this.server.spark.enableEarlyIfRequested(); // Paper - spark // Luminol - Force disable builtin spark - // Paper start - fix converting txt to json file; convert old users earlier after PlayerList creation but before file load/save - if (this.convertOldUsers()) { + com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics + com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now + diff --git a/net/minecraft/server/level/ChunkMap.java b/net/minecraft/server/level/ChunkMap.java -index fdccb06c918d387e46c29ede7337159db8c5d9ca..4cd5c5659ac098c3b7ff95efb94b1987e2dd40d0 100644 +index 0dfb25ad032429a2aea7aa441dd5fd1848a6c617..215f2a40921cc8e6b181c0a34aa1bbaf843e3059 100644 --- a/net/minecraft/server/level/ChunkMap.java +++ b/net/minecraft/server/level/ChunkMap.java -@@ -1386,6 +1386,13 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP +@@ -1388,6 +1388,13 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP } } else { this.removePlayer(player); + // Leaves start - render bot -+ if (entity instanceof org.leavesmc.leaves.bot.ServerBot bot) { ++ if (this.entity instanceof org.leavesmc.leaves.bot.ServerBot bot) { + if (bot.needSendFakeData(player)) { + bot.sendFakeData(player.connection, false); + } @@ -255,26 +252,26 @@ index fdccb06c918d387e46c29ede7337159db8c5d9ca..4cd5c5659ac098c3b7ff95efb94b1987 } } diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index eb5722848d1c77044807510cd6a46a46c5763509..88efbe2bcb5621432b67366116150a3dab52e510 100644 +index 049339ae33569d627d2a00ef6cab9cad02c4c014..e05705884a285143b8a3ebad00cb489efe47d532 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -220,6 +220,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - public final boolean tickTime; // Folia - region threading - private final RandomSequences randomSequences; - final LevelDebugSynchronizers debugSynchronizers = new LevelDebugSynchronizers(this); +@@ -240,6 +240,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet + //public boolean hasPhysicsEvent = true; // Paper - BlockPhysicsEvent // Folia - region threading - move to regionised world data + //public boolean hasEntityMoveEvent; // Paper - Add EntityMoveEvent // Folia - region threading - move to regionised world data + //private final alternate.current.wire.WireHandler wireHandler = new alternate.current.wire.WireHandler(this); // Paper - optimize redstone (Alternate Current) // Folia - region threading - move to regionised world data + final List realPlayers; // Leaves - skip - // CraftBukkit start - public final LevelStorageSource.LevelStorageAccess levelStorageAccess; -@@ -669,6 +670,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe + @Override + public @Nullable LevelChunk getChunkIfLoaded(int x, int z) { +@@ -706,6 +707,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet + this.chunkDataController = new ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller.ChunkDataController((ServerLevel)(Object)this, this.chunkTaskScheduler); // Paper end - rewrite chunk system this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit - this.updateTickData(); // Folia - region threading - make sure it is initialised before ticked + this.realPlayers = Lists.newArrayList(); // Leaves - skip + this.updateTickData(); // Folia - region threading - make sure it is initialised before ticked } - // Folia start - region threading -@@ -2518,6 +2520,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2611,6 +2613,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet return this.players; } @@ -285,37 +282,46 @@ index eb5722848d1c77044807510cd6a46a46c5763509..88efbe2bcb5621432b67366116150a3d + // Leaves end - fakeplayer skip + @Override - public void updatePOIOnBlockStateChange(BlockPos pos, BlockState oldState, BlockState newState) { - Optional> optional = PoiTypes.forState(oldState); -@@ -2991,6 +2999,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe + public void updatePOIOnBlockStateChange(final BlockPos pos, final BlockState oldState, final BlockState newState) { + Optional> oldType = PoiTypes.forState(oldState); +@@ -3091,6 +3099,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet // ServerLevel.this.getChunkSource().addEntity(entity); // Paper - ignore and warn about illegal addEntity calls instead of crashing server; moved down below valid=true - if (entity instanceof ServerPlayer serverPlayer) { - ServerLevel.this.players.add(serverPlayer); + if (entity instanceof ServerPlayer player) { + ServerLevel.this.players.add(player); + // Leaves start - skip -+ if (!(serverPlayer instanceof org.leavesmc.leaves.bot.ServerBot)) { -+ ServerLevel.this.realPlayers.add(serverPlayer); ++ if (!(player instanceof org.leavesmc.leaves.bot.ServerBot)) { ++ ServerLevel.this.realPlayers.add(player); + } + // Leaves end - skip - if (serverPlayer.isReceivingWaypoints()) { - ServerLevel.this.getWaypointManager().addPlayer(serverPlayer); + if (player.isReceivingWaypoints()) { + ServerLevel.this.getWaypointManager().addPlayer(player); } -@@ -3072,6 +3085,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -3172,6 +3185,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet ServerLevel.this.getChunkSource().removeEntity(entity); - if (entity instanceof ServerPlayer serverPlayer) { - ServerLevel.this.players.remove(serverPlayer); + if (entity instanceof ServerPlayer player) { + ServerLevel.this.players.remove(player); + // Leaves start - skip -+ if (!(serverPlayer instanceof org.leavesmc.leaves.bot.ServerBot)) { -+ ServerLevel.this.realPlayers.remove(serverPlayer); ++ if (!(player instanceof org.leavesmc.leaves.bot.ServerBot)) { ++ ServerLevel.this.realPlayers.remove(player); + } + // Leaves end - skip - ServerLevel.this.getWaypointManager().removePlayer(serverPlayer); + ServerLevel.this.getWaypointManager().removePlayer(player); ServerLevel.this.updateSleepingPlayerList(); } diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 6df8f98afa7810815b8d7c86b3dac57cd5915682..7c2d53ca863c2e50c6871938efc426ddefff9b5c 100644 +index f3afab1100a35cc9ab091944de93d1f30ef040a7..7f6d4118ede7e02fdea8961fd736d00ce41c64bb 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -227,7 +227,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -23,6 +23,8 @@ import java.util.Set; + import java.util.UUID; + import java.util.concurrent.CompletableFuture; + import java.util.stream.Collectors; ++ ++import fun.bm.lophine.config.modules.function.FakeplayerConfig; + import net.minecraft.ChatFormatting; + import net.minecraft.CrashReport; + import net.minecraft.CrashReportCategory; +@@ -229,7 +231,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc private static final boolean DEFAULT_SPAWN_EXTRA_PARTICLES_ON_FALL = false; public ServerGamePacketListenerImpl connection; private final MinecraftServer server; @@ -324,7 +330,7 @@ index 6df8f98afa7810815b8d7c86b3dac57cd5915682..7c2d53ca863c2e50c6871938efc426dd private final PlayerAdvancements advancements; private final ServerStatsCounter stats; private float lastRecordedHealthAndAbsorption = Float.MIN_VALUE; -@@ -248,7 +248,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -250,7 +252,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc private @Nullable Entity camera; public boolean isChangingDimension; public boolean seenCredits = false; @@ -333,7 +339,7 @@ index 6df8f98afa7810815b8d7c86b3dac57cd5915682..7c2d53ca863c2e50c6871938efc426dd private @Nullable Vec3 levitationStartPos; private int levitationStartTime; private boolean disconnected; -@@ -1495,7 +1495,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1514,7 +1516,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc } // Luminol End - Cross Region Damage trace @@ -342,37 +348,37 @@ index 6df8f98afa7810815b8d7c86b3dac57cd5915682..7c2d53ca863c2e50c6871938efc426dd AABB aabb = new AABB(this.blockPosition()).inflate(32.0, 10.0, 32.0); this.level() .getEntitiesOfClass(Mob.class, aabb, EntitySelector.NO_SPECTATORS) -@@ -2132,6 +2132,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -2180,6 +2182,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc this.lastSentHealth = -1.0F; this.lastSentFood = -1; - this.teleportSpectators(teleportTransition, serverLevel); + this.teleportSpectators(transition, oldLevel); + // Leaves start - bot support -+ if (fun.bm.lophine.config.modules.function.FakeplayerConfig.enable) { ++ if (FakeplayerConfig.enable) { + this.server.getBotList().bots.forEach(bot -> bot.sendFakeDataIfNeed(this, true)); // Leaves - render bot + } + // Leaves end - bot support // CraftBukkit start - org.bukkit.event.player.PlayerChangedWorldEvent changeEvent = new org.bukkit.event.player.PlayerChangedWorldEvent(this.getBukkitEntity(), serverLevel.getWorld()); + org.bukkit.event.player.PlayerChangedWorldEvent changeEvent = new org.bukkit.event.player.PlayerChangedWorldEvent(this.getBukkitEntity(), oldLevel.getWorld()); this.level().getCraftServer().getPluginManager().callEvent(changeEvent); diff --git a/net/minecraft/server/players/CachedUserNameToIdResolver.java b/net/minecraft/server/players/CachedUserNameToIdResolver.java -index 345bdb0ff82b8cd8c63e5ff1f2dabb68a1e54b77..c9a7c1c37155e0d339b880179a5988c9a6cb3797 100644 +index 50c64f4be138f08e8a57fb10888dbfbc364c91af..382fc20df48d7d554833715a9c9f62ea7464a25d 100644 --- a/net/minecraft/server/players/CachedUserNameToIdResolver.java +++ b/net/minecraft/server/players/CachedUserNameToIdResolver.java @@ -122,6 +122,12 @@ public class CachedUserNameToIdResolver implements UserNameToIdResolver { @Override - public Optional get(String name) { + public Optional get(final String name) { + // Leaves start - fix bot + org.leavesmc.leaves.bot.ServerBot bot = org.leavesmc.leaves.bot.BotList.INSTANCE.getBotByName(name); + if (bot != null) { + return Optional.of(bot.nameAndId()); + } + // Leaves end - fix bot - String string = name.toLowerCase(Locale.ROOT); + String userName = name.toLowerCase(Locale.ROOT); boolean stateLocked = true; try { this.stateLock.lock(); // Paper - Fix GameProfileCache concurrency - CachedUserNameToIdResolver.GameProfileInfo gameProfileInfo = this.profilesByName.get(string); + CachedUserNameToIdResolver.GameProfileInfo profileInfo = this.profilesByName.get(userName); diff --git a/net/minecraft/server/players/NameAndId.java b/net/minecraft/server/players/NameAndId.java -index 05b4a75f6597e8613c91344d100bb7f005d169a7..9a5006362c12e972d031c48be4d30362d88d1c00 100644 +index 484714beb5f7cdf8178834c5edd4f847fb06ebb8..ba7a280aad07f36366c15cd158b36ca9768cef19 100644 --- a/net/minecraft/server/players/NameAndId.java +++ b/net/minecraft/server/players/NameAndId.java @@ -8,18 +8,22 @@ import java.util.UUID; @@ -382,53 +388,62 @@ index 05b4a75f6597e8613c91344d100bb7f005d169a7..9a5006362c12e972d031c48be4d30362 -public record NameAndId(UUID id, String name) { +public record NameAndId(UUID id, String name, boolean isBot) { // Leaves - fakeplayer public static final Codec CODEC = RecordCodecBuilder.create( - instance -> instance.group(UUIDUtil.STRING_CODEC.fieldOf("id").forGetter(NameAndId::id), Codec.STRING.fieldOf("name").forGetter(NameAndId::name)) - .apply(instance, NameAndId::new) + i -> i.group(UUIDUtil.STRING_CODEC.fieldOf("id").forGetter(NameAndId::id), Codec.STRING.fieldOf("name").forGetter(NameAndId::name)) + .apply(i, NameAndId::new) ); - public NameAndId(GameProfile profile) { + public NameAndId(final GameProfile profile) { - this(profile.id(), profile.name()); + this(profile.id(), profile.name(), com.google.common.collect.Iterables.getFirst(profile.properties().get("is_bot"), "false").equals("true")); // Leaves - fakeplayer } - public NameAndId(com.mojang.authlib.yggdrasil.response.NameAndId nameAndId) { -- this(nameAndId.id(), nameAndId.name()); -+ this(nameAndId.id(), nameAndId.name(), false); // Leaves - fakeplayer + public NameAndId(final com.mojang.authlib.yggdrasil.response.NameAndId profile) { +- this(profile.id(), profile.name()); ++ this(profile.id(), profile.name(), false); // Leaves - fakeplayer + } + + public NameAndId(UUID uuid, String name) { + this(uuid, name, false); // Leaves - fakeplayer } - public static @Nullable NameAndId fromJson(JsonObject json) { + public static @Nullable NameAndId fromJson(final JsonObject object) { @@ -33,7 +37,7 @@ public record NameAndId(UUID id, String name) { return null; } -- return new NameAndId(uuid, json.get("name").getAsString()); -+ return new NameAndId(uuid, json.get("name").getAsString(), false); // Leaves - fakeplayer +- return new NameAndId(uuid, object.get("name").getAsString()); ++ return new NameAndId(uuid, object.get("name").getAsString(), false); // Leaves - fakeplayer } else { return null; } @@ -46,7 +50,7 @@ public record NameAndId(UUID id, String name) { - public static NameAndId createOffline(String name) { - UUID uuid = UUIDUtil.createOfflinePlayerUUID(name); -- return new NameAndId(uuid, name); -+ return new NameAndId(uuid, name, false); // Leaves - fakeplayer + public static NameAndId createOffline(final String name) { + UUID id = UUIDUtil.createOfflinePlayerUUID(name); +- return new NameAndId(id, name); ++ return new NameAndId(id, name, false); // Leaves - fakeplayer } // Paper start - utility method for common conversion back to the game profile diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 0d322ef4aa3e70c9edbb9fa8ba368bef916eb93d..3a5319739f0687fc6f09b2ac8ee31716593fe0de 100644 +index ebd2f2887780d9c6c3c44983bac23eab732cf43f..4edc952087c3255ca488b140402621bbf6495770 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -317,6 +317,19 @@ public abstract class PlayerList { +@@ -22,6 +22,8 @@ import java.util.Set; + import java.util.UUID; + import java.util.function.Function; + import java.util.function.Predicate; ++ ++import fun.bm.lophine.config.modules.function.FakeplayerConfig; + import net.minecraft.ChatFormatting; + import net.minecraft.commands.CommandSourceStack; + import net.minecraft.core.BlockPos; +@@ -319,6 +321,19 @@ public abstract class PlayerList { - org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePlayerJoin(player); + org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePlayerJoin(player); // Leaves - protocol + // Leaves start - bot support -+ if (fun.bm.lophine.config.modules.function.FakeplayerConfig.enable) { ++ if (FakeplayerConfig.enable) { + org.leavesmc.leaves.bot.ServerBot bot = this.server.getBotList().getBotByName(player.getScoreboardName()); + if (bot != null) { + this.server.getBotList().removeBot(bot, org.leavesmc.leaves.event.bot.BotRemoveEvent.RemoveReason.INTERNAL, player.getBukkitEntity(), false, false); @@ -443,113 +458,114 @@ index 0d322ef4aa3e70c9edbb9fa8ba368bef916eb93d..3a5319739f0687fc6f09b2ac8ee31716 final net.kyori.adventure.text.Component jm = playerJoinEvent.joinMessage(); if (jm != null && !jm.equals(net.kyori.adventure.text.Component.empty())) { // Paper - Adventure -@@ -791,6 +804,12 @@ public abstract class PlayerList { +@@ -791,6 +806,11 @@ public abstract class PlayerList { + respawnReason ).callEvent(); // Paper end - + // Leaves start - bot support -+ if (fun.bm.lophine.config.modules.function.FakeplayerConfig.enable) { -+ this.server.getBotList().bots.forEach(bot -> bot.sendFakeDataIfNeed(serverPlayer, true)); // Leaves - render bot ++ if (FakeplayerConfig.enable) { ++ this.server.getBotList().bots.forEach(bot -> bot.sendFakeDataIfNeed(player, true)); // Leaves - render bot + } + // Leaves end - bot support -+ - return serverPlayer; - } -@@ -892,11 +911,16 @@ public abstract class PlayerList { + return player; + } +@@ -893,11 +913,16 @@ public abstract class PlayerList { public String[] getPlayerNamesArray() { List players = new java.util.ArrayList<>(this.players); // Folia - region threading -- String[] strings = new String[this.players.size()]; -+ String[] strings = new String[this.players.size() + this.server.getBotList().bots.size()]; // Leaves - fakeplayer support +- String[] names = new String[players.size()]; // Folia - region threading ++ String[] names = new String[players.size() + this.server.getBotList().bots.size()]; // Leaves - fakeplayer support for (int i = 0; i < players.size(); i++) { // Folia - region threading - strings[i] = players.get(i).getGameProfile().name(); // Folia - region threading + names[i] = players.get(i).getGameProfile().name(); // Folia - region threading } + // Leaves start - fakeplayer support -+ for (int i = this.players.size(); i < strings.length; ++i) { -+ strings[i] = this.server.getBotList().bots.get(i - this.players.size()).getGameProfile().name(); ++ for (int i = this.players.size(); i < names.length; ++i) { ++ names[i] = this.server.getBotList().bots.get(i - this.players.size()).gameProfile.name(); + } + // Leaves end - fakeplayer support - return strings; + return names; } -@@ -1016,7 +1040,14 @@ public abstract class PlayerList { +@@ -1016,8 +1041,15 @@ public abstract class PlayerList { + || this.allowCommandsForAllPlayers; } - public @Nullable ServerPlayer getPlayerByName(String username) { -- return this.playersByName.get(username.toLowerCase(java.util.Locale.ROOT)); // Spigot +- public @Nullable ServerPlayer getPlayerByName(final String name) { +- return this.playersByName.get(name.toLowerCase(java.util.Locale.ROOT)); // Spigot ++ public @Nullable ServerPlayer getPlayerByName(String name) { + // Leaves start - fakeplayer support -+ username = username.toLowerCase(java.util.Locale.ROOT); -+ ServerPlayer player = this.playersByName.get(username); ++ name = name.toLowerCase(java.util.Locale.ROOT); ++ ServerPlayer player = this.playersByName.get(name); + if (player == null) { -+ player = this.server.getBotList().getBotByName(username); ++ player = this.server.getBotList().getBotByName(name); + } + return player; // Spigot + // Leaves end - fakeplayer support } - public void broadcast(@Nullable Player except, double x, double y, double z, double radius, ResourceKey dimension, Packet packet) { -@@ -1353,7 +1384,13 @@ public abstract class PlayerList { + public void broadcast( +@@ -1360,7 +1392,13 @@ public abstract class PlayerList { } - public @Nullable ServerPlayer getPlayer(UUID playerUUID) { -- return this.playersByUUID.get(playerUUID); + public @Nullable ServerPlayer getPlayer(final UUID uuid) { +- return this.playersByUUID.get(uuid); + // Leaves start - fakeplayer support -+ ServerPlayer player = this.playersByUUID.get(playerUUID); ++ ServerPlayer player = this.playersByUUID.get(uuid); + if (player == null) { -+ player = this.server.getBotList().getBot(playerUUID); ++ player = this.server.getBotList().getBot(uuid); + } + return player; + // Leaves start - fakeplayer support } - public @Nullable ServerPlayer getPlayer(String name) { + public @Nullable ServerPlayer getPlayer(final String playerName) { diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 22e68cabb4554c3e21e6f4ef316186f60ec77511..5ac53fcdca5fa6aae0452840e78d67653ceececb 100644 +index b69698f47ccb0f1ac3eeea05a02ab9d798319b44..b073a91fd67d092713c53db6f3df75c655dc8fcd 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -1235,7 +1235,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1257,7 +1257,7 @@ public abstract class Entity - BlockPos onPosLegacy = this.getOnPosLegacy(); - BlockState blockState = this.level().getBlockState(onPosLegacy); + BlockPos effectPos = this.getOnPosLegacy(); + BlockState effectState = this.level().getBlockState(effectPos); - if (this.isLocalInstanceAuthoritative()) { + if (this.isLocalInstanceAuthoritative() || this instanceof org.leavesmc.leaves.bot.ServerBot) { // Leaves - ServerBot needs check fall damage - this.checkFallDamage(vec3.y, this.onGround(), blockState, onPosLegacy); + this.checkFallDamage(movement.y, this.onGround(), effectState, effectPos); } -@@ -1570,7 +1570,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1593,7 +1593,7 @@ public abstract class Entity + return colliders.isEmpty() ? maxDistance : -Shapes.collide(Direction.Axis.Y, aabb, colliders, -maxDistance); } - // Paper start - optimise collisions -- private Vec3 collide(Vec3 movement) { -+ public Vec3 collide(Vec3 movement) { // Leaves - private -> public +- private Vec3 collide(final Vec3 movement) { ++ public Vec3 collide(final Vec3 movement) { // Leaves - private -> public + // Paper start - optimise collisions final boolean xZero = movement.x == 0.0; final boolean yZero = movement.y == 0.0; - final boolean zZero = movement.z == 0.0; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 3fe9afe55b4d61db8030479d3d74b8656679cb10..c0ebd700caa950948c58846eaf164afc14f87f09 100644 +index 44956582516ac508681d7ca3e4e04e4270859bd8..30f287141689b65ce61fdb22214847d0af1ff44e 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -3319,7 +3319,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin - private void travelRidden(Player player, Vec3 travelVector) { - Vec3 riddenInput = this.getRiddenInput(player, travelVector); - this.tickRidden(player, riddenInput); +@@ -3345,7 +3345,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin + private void travelRidden(final Player controller, final Vec3 selfInput) { + Vec3 riddenInput = this.getRiddenInput(controller, selfInput); + this.tickRidden(controller, riddenInput); - if (this.canSimulateMovement()) { + if (this.canSimulateMovement() || this.getControllingPassenger() instanceof org.leavesmc.leaves.bot.ServerBot) { // Leaves - Fakeplayer - this.setSpeed(this.getRiddenSpeed(player)); + this.setSpeed(this.getRiddenSpeed(controller)); this.travel(riddenInput); } else { -@@ -4228,7 +4228,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -4268,7 +4268,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin // Paper start - lag compensate eating // we add 1 to the expected time to avoid lag compensating when we should not final boolean shouldLagCompensate = this.useItem.has(DataComponents.FOOD) && this.eatStartTime != -1 && (System.nanoTime() - this.eatStartTime) > ((1L + this.totalEatTimeTicks) * 50L * (1000L * 1000L)); -- if ((--this.useItemRemaining == 0 || shouldLagCompensate) && !this.level().isClientSide() && !usingItem.useOnRelease()) { -+ if ((--this.useItemRemaining == 0 || shouldLagCompensate) && !(this instanceof org.leavesmc.leaves.bot.ServerBot) && !this.level().isClientSide() && !usingItem.useOnRelease()) { +- if ((--this.useItemRemaining == 0 || shouldLagCompensate) && !this.level().isClientSide() && !useItem.useOnRelease()) { ++ if ((--this.useItemRemaining == 0 || shouldLagCompensate) && !(this instanceof org.leavesmc.leaves.bot.ServerBot) && !this.level().isClientSide() && !useItem.useOnRelease()) { this.useItemRemaining = 0; // Paper end - lag compensate eating this.completeUsingItem(); -@@ -4413,6 +4413,23 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -4457,6 +4457,23 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin this.stopUsingItem(); } @@ -572,22 +588,22 @@ index 3fe9afe55b4d61db8030479d3d74b8656679cb10..c0ebd700caa950948c58846eaf164afc + public void stopUsingItem() { if (!this.level().isClientSide()) { - boolean isUsingItem = this.isUsingItem(); + boolean wasUsingItem = this.isUsingItem(); diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index 83612969b6058f444fc17e360cdcc4a8846f79aa..29ca31b05ec5636243b13fee8b3399d5e21808b4 100644 +index f6f6d21f3393a3ab79a84212b0d66d83d0e817f1..38689fa466a20c64f9916ee32a57a9fdb58d9403 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java -@@ -168,7 +168,7 @@ public abstract class Player extends Avatar implements ContainerUser { +@@ -167,7 +167,7 @@ public abstract class Player extends Avatar implements ContainerUser { private int lastLevelUpTime; public GameProfile gameProfile; private boolean reducedDebugInfo; - private ItemStack lastItemInMainHand = ItemStack.EMPTY; -+ protected ItemStack lastItemInMainHand = ItemStack.EMPTY; ++ protected ItemStack lastItemInMainHand = ItemStack.EMPTY; // Leaves - fakeplayer private final ItemCooldowns cooldowns = this.createItemCooldowns(); private Optional lastDeathLocation = Optional.empty(); public @Nullable FishingHook fishing; -@@ -349,6 +349,12 @@ public abstract class Player extends Avatar implements ContainerUser { - } +@@ -340,6 +340,12 @@ public abstract class Player extends Avatar implements ContainerUser { + this.updatePlayerPose(); } + // Leaves start - fakeplayer @@ -599,26 +615,26 @@ index 83612969b6058f444fc17e360cdcc4a8846f79aa..29ca31b05ec5636243b13fee8b3399d5 @Override protected float getMaxHeadRotationRelativeToBody() { return this.isBlocking() ? 15.0F : super.getMaxHeadRotationRelativeToBody(); -@@ -574,7 +580,7 @@ public abstract class Player extends Avatar implements ContainerUser { +@@ -565,7 +571,7 @@ public abstract class Player extends Avatar implements ContainerUser { public void removeEntitiesOnShoulder() { } -- private void touch(Entity entity) { -+ public void touch(Entity entity) { // Leaves - private -> public +- private void touch(final Entity entity) { ++ public void touch(final Entity entity) { // Leaves - private -> public entity.playerTouch(this); } -@@ -1251,7 +1257,7 @@ public abstract class Player extends Avatar implements ContainerUser { +@@ -1247,7 +1253,7 @@ public abstract class Player extends Avatar implements ContainerUser { // Paper end - Configurable sprint interruption on attack } -- if (target instanceof ServerPlayer && target.hurtMarked) { -+ if ((target instanceof ServerPlayer && !(target instanceof org.leavesmc.leaves.bot.ServerBot)) && target.hurtMarked) { // Leaves - bot knockback +- if (entity instanceof ServerPlayer && entity.hurtMarked) { ++ if ((entity instanceof ServerPlayer && !(entity instanceof org.leavesmc.leaves.bot.ServerBot)) && entity.hurtMarked) { // Leaves - bot knockback // CraftBukkit start - Add Velocity Event boolean cancelled = false; - org.bukkit.entity.Player player = (org.bukkit.entity.Player) target.getBukkitEntity(); + org.bukkit.entity.Player player = (org.bukkit.entity.Player) entity.getBukkitEntity(); diff --git a/net/minecraft/world/entity/projectile/FishingHook.java b/net/minecraft/world/entity/projectile/FishingHook.java -index 71f6acc07d222fe512bf8d9fbaad35cb36bcf2d6..a9f5d503fbe50e54f2f44be2ca6d414430f4481e 100644 +index 0c8a48988c859669cf7e38816aaf32782c245244..a554e050d0c582c441af9d5616367234caa67ab0 100644 --- a/net/minecraft/world/entity/projectile/FishingHook.java +++ b/net/minecraft/world/entity/projectile/FishingHook.java @@ -58,7 +58,7 @@ public class FishingHook extends Projectile { @@ -631,7 +647,7 @@ index 71f6acc07d222fe512bf8d9fbaad35cb36bcf2d6..a9f5d503fbe50e54f2f44be2ca6d4144 public int timeUntilHooked; public float fishAngle; diff --git a/net/minecraft/world/entity/vehicle/boat/AbstractBoat.java b/net/minecraft/world/entity/vehicle/boat/AbstractBoat.java -index fc1b3501114108d0166256c514a225337955e461..56bc87fefc82c77077bfed50accbde778c0059ea 100644 +index 05176458264b110ef3280342866ace22ec5a3333..2ce33513fd8e3de912c69ca8bc558a5800784ac5 100644 --- a/net/minecraft/world/entity/vehicle/boat/AbstractBoat.java +++ b/net/minecraft/world/entity/vehicle/boat/AbstractBoat.java @@ -270,6 +270,11 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable { @@ -661,23 +677,23 @@ index fc1b3501114108d0166256c514a225337955e461..56bc87fefc82c77077bfed50accbde77 return switch (this.getStatus()) { case IN_WATER, UNDER_WATER, UNDER_FLOWING_WATER -> SoundEvents.BOAT_PADDLE_WATER; diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java -index e7ea8849e8fa942709f505145e8076f064476206..4935234fba5977246aa303bf8162404813b5491e 100644 +index fa1f7dd22959632aaa54e72c8caf13ea072e7ca7..ae6056c3b6ae3eebdfb59cf54d7333dfc2cebf6a 100644 --- a/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/net/minecraft/world/inventory/AbstractContainerMenu.java -@@ -404,6 +404,7 @@ public abstract class AbstractContainerMenu { +@@ -407,6 +407,7 @@ public abstract class AbstractContainerMenu { - private void doClick(int slotIndex, int button, ClickType clickType, Player player) { + private void doClick(final int slotIndex, final int buttonNum, final ContainerInput containerInput, final Player player) { Inventory inventory = player.getInventory(); -+ if (!doClickCheck(slotIndex, button, clickType, player)) return; // Leaves - doClick check - if (clickType == ClickType.QUICK_CRAFT) { - int i = this.quickcraftStatus; - this.quickcraftStatus = getQuickcraftHeader(button); -@@ -678,6 +679,22 @@ public abstract class AbstractContainerMenu { ++ if (!doClickCheck(slotIndex, buttonNum, containerInput, player)) return; // Leaves - doClick check + if (containerInput == ContainerInput.QUICK_CRAFT) { + int expectedStatus = this.quickcraftStatus; + this.quickcraftStatus = getQuickcraftHeader(buttonNum); +@@ -681,6 +682,22 @@ public abstract class AbstractContainerMenu { } } + // Leaves start - doClick check -+ private boolean doClickCheck(int slotIndex, int button, ClickType actionType, Player player) { ++ private boolean doClickCheck(int slotIndex, int buttonNum, ContainerInput containerInput, Player player) { + if (slotIndex < 0) { + return true; + } @@ -692,23 +708,23 @@ index e7ea8849e8fa942709f505145e8076f064476206..4935234fba5977246aa303bf81624048 + } + // Leaves end - doClick check + - private boolean tryItemClickBehaviourOverride(Player player, ClickAction action, Slot slot, ItemStack clickedItem, ItemStack carriedItem) { - FeatureFlagSet featureFlagSet = player.level().enabledFeatures(); - return carriedItem.isItemEnabled(featureFlagSet) && carriedItem.overrideStackedOnOther(slot, action, player) + private boolean tryItemClickBehaviourOverride( + final Player player, final ClickAction clickAction, final Slot slot, final ItemStack clicked, final ItemStack carried + ) { diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java -index 73a97f4f62fe7d27b441cab58c6c86ffce011060..ea6285b7f53f391c84519aa7ae39164cf5740b81 100644 +index dd4a92a0ea94d16669535bde9b6728515dafe7f4..77f3bf9d9c0bb08a151adf1abd22e22d0fc83bf3 100644 --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java -@@ -456,7 +456,7 @@ public final class ItemStack implements DataComponentHolder, ChangePublisher= 72000) { - BlockPos blockPos1 = blockPos.above(20 + randomSource.nextInt(15)) - .east(-10 + randomSource.nextInt(21)) -diff --git a/net/minecraft/world/level/storage/LevelResource.java b/net/minecraft/world/level/storage/LevelResource.java -index bef794c3f58c41d910aa0bcc63fbdeea7225fddf..a601da588e6973cc5b87d3e3eeba49b53f6d9a6d 100644 ---- a/net/minecraft/world/level/storage/LevelResource.java -+++ b/net/minecraft/world/level/storage/LevelResource.java -@@ -15,7 +15,7 @@ public class LevelResource { - public static final LevelResource ROOT = new LevelResource("."); - private final String id; - -- private LevelResource(String id) { -+ public LevelResource(String id) { // Leaves - private -> public - this.id = id; - } - + if (random.nextInt(value) >= level.paperConfig().entities.behavior.playerInsomniaStartTicks) { // Paper - Ability to control player's insomnia and phantoms + BlockPos spawnPos = playerPos.above(20 + random.nextInt(15)) + .east(-10 + random.nextInt(21)) diff --git a/1todos/server/paper-patches/features/0006-Leaves-Leaves-Fakeplayer.patch b/lophine-server/paper-patches/features/0006-Leaves-Leaves-Fakeplayer.patch similarity index 89% rename from 1todos/server/paper-patches/features/0006-Leaves-Leaves-Fakeplayer.patch rename to lophine-server/paper-patches/features/0006-Leaves-Leaves-Fakeplayer.patch index 7d776ed..a8ee535 100644 --- a/1todos/server/paper-patches/features/0006-Leaves-Leaves-Fakeplayer.patch +++ b/lophine-server/paper-patches/features/0006-Leaves-Leaves-Fakeplayer.patch @@ -41,10 +41,10 @@ index 9180f23529a31b6b0a5b38bb7cda3e32d487f691..e1f456b31ffda9370b63e51f343847d6 if (!registration.getPlugin().isEnabled()) { continue; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java -index 21d594a39d09b2d17f05c40ce5323d57949d0b0b..46859fc70795097366f02dba48fdaab8b9c85013 100644 +index 5339ff469a38d35e72ea7227503a84395462f84a..d75b4ecb24f2ea42afc82ac255775d8f35121fe5 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java -@@ -374,6 +374,7 @@ public abstract class CraftRegionAccessor implements RegionAccessor { +@@ -373,6 +373,7 @@ public abstract class CraftRegionAccessor implements RegionAccessor { @SuppressWarnings("unchecked") public T addEntity(T entity) { Preconditions.checkArgument(!entity.isInWorld(), "Entity has already been added to a world"); @@ -53,10 +53,10 @@ index 21d594a39d09b2d17f05c40ce5323d57949d0b0b..46859fc70795097366f02dba48fdaab8 if (nmsEntity.level() != this.getHandle().getLevel()) { throw new IllegalArgumentException(entity + " wasn't created with this world, you must create the entity with the world you want to add it to."); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index dfcfc83474443638e30f87d54472e5a38947dfad..973f064fc5e089dc892d4b4077a807517fd199b5 100644 +index 479bbc4a63c237c055f6b4d659c598e9fadd512a..054d9f4a09035771a329d6d561249d206b5dbee3 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -305,6 +305,7 @@ public final class CraftServer implements Server { +@@ -303,6 +303,7 @@ public final class CraftServer implements Server { private final io.papermc.paper.potion.PaperPotionBrewer potionBrewer; public io.papermc.paper.SparksFly spark; // Paper - spark // Luminol - Force disable builtin spark private final ServerConfiguration serverConfig = new PaperServerConfiguration(); @@ -64,7 +64,7 @@ index dfcfc83474443638e30f87d54472e5a38947dfad..973f064fc5e089dc892d4b4077a80751 // Paper start - Folia region threading API private final io.papermc.paper.threadedregions.scheduler.FoliaRegionScheduler regionizedScheduler = new io.papermc.paper.threadedregions.scheduler.FoliaRegionScheduler(); // Folia - region threading -@@ -486,6 +487,7 @@ public final class CraftServer implements Server { +@@ -484,6 +485,7 @@ public final class CraftServer implements Server { datapackManager = new io.papermc.paper.datapack.PaperDatapackManager(console.getPackRepository()); // Paper if (false) this.spark = new io.papermc.paper.SparksFly(this); // Paper - spark // Luminol - Force disable builtin spark org.leavesmc.leaves.protocol.core.LeavesProtocolManager.init(); // Leaves - protocol @@ -72,7 +72,7 @@ index dfcfc83474443638e30f87d54472e5a38947dfad..973f064fc5e089dc892d4b4077a80751 } public boolean getCommandBlockOverride(String command) { -@@ -1379,7 +1381,7 @@ public final class CraftServer implements Server { +@@ -1377,7 +1379,7 @@ public final class CraftServer implements Server { return false; } @@ -81,9 +81,9 @@ index dfcfc83474443638e30f87d54472e5a38947dfad..973f064fc5e089dc892d4b4077a80751 return false; } -@@ -3041,6 +3043,13 @@ public final class CraftServer implements Server { - this.console.addPluginAllowingSleep(plugin.getName(), value); +@@ -3055,6 +3057,13 @@ public final class CraftServer implements Server { } + // Leaves end - Feature API + // Leaves start - Bot API + @Override @@ -96,10 +96,10 @@ index dfcfc83474443638e30f87d54472e5a38947dfad..973f064fc5e089dc892d4b4077a80751 /** * Gets the TPS from the region which owns the specified location, or {@code null} if no region owns diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index dcd32c1e32fd67ec13bb7fca8af20aa665407594..b7f83e66227b5a1f5ad9b424e425eee118cc0692 100644 +index 03ad9254c4b5556119fe73d533ceac7073b8fe74..fd2e24b6219219fa1fe7d2ba1d877ee4c24676ca 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -247,7 +247,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -255,7 +255,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public int getPlayerCount() { @@ -108,7 +108,7 @@ index dcd32c1e32fd67ec13bb7fca8af20aa665407594..b7f83e66227b5a1f5ad9b424e425eee1 } @Override -@@ -1121,9 +1121,9 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -1126,9 +1126,9 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public List getPlayers() { @@ -120,7 +120,7 @@ index dcd32c1e32fd67ec13bb7fca8af20aa665407594..b7f83e66227b5a1f5ad9b424e425eee1 HumanEntity bukkitEntity = human.getBukkitEntity(); if ((bukkitEntity != null) && (bukkitEntity instanceof Player)) { -@@ -1622,7 +1622,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -1628,7 +1628,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { public void playSound(final net.kyori.adventure.sound.Sound sound) { org.spigotmc.AsyncCatcher.catchOp("play sound"); // Paper final long seed = sound.seed().orElseGet(this.world.getRandom()::nextLong); @@ -129,7 +129,7 @@ index dcd32c1e32fd67ec13bb7fca8af20aa665407594..b7f83e66227b5a1f5ad9b424e425eee1 player.connection.send(io.papermc.paper.adventure.PaperAdventure.asSoundPacket(sound, player.getX(), player.getY(), player.getZ(), seed, null)); } } -@@ -1650,7 +1650,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -1656,7 +1656,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { org.spigotmc.AsyncCatcher.catchOp("play sound"); // Paper final long seed = sound.seed().orElseGet(this.getHandle().getRandom()::nextLong); if (emitter == net.kyori.adventure.sound.Sound.Emitter.self()) { @@ -138,7 +138,7 @@ index dcd32c1e32fd67ec13bb7fca8af20aa665407594..b7f83e66227b5a1f5ad9b424e425eee1 player.connection.send(io.papermc.paper.adventure.PaperAdventure.asSoundPacket(sound, player, seed, null)); } } else if (emitter instanceof CraftEntity craftEntity) { -@@ -1791,7 +1791,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -1779,7 +1779,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { Preconditions.checkArgument(particle.getDataType().isInstance(data), "data (%s) should be %s", data.getClass(), particle.getDataType()); } this.getHandle().sendParticlesSource( @@ -148,7 +148,7 @@ index dcd32c1e32fd67ec13bb7fca8af20aa665407594..b7f83e66227b5a1f5ad9b424e425eee1 CraftParticle.createParticleParam(particle, data), // Particle force, diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index e6cd1c4a50b32b74f70a264e869b1ab4ac9b9eb0..6867064de52d810f1fd3869463ae27868ed0fb07 100644 +index d43b1a6e6a8ac2a21b0a048e838115b0403170dd..42c2c6a05645e5aef26e9d3a91ad93563a297ca3 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -127,6 +127,8 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -161,10 +161,10 @@ index e6cd1c4a50b32b74f70a264e869b1ab4ac9b9eb0..6867064de52d810f1fd3869463ae2786 if (entity instanceof EnderDragonPart complexPart) { if (complexPart.parentMob instanceof EnderDragon) { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 0429ffda4aa4410f6f53bd163be8dee71b134637..9274f4ef639ed9b3028321566173d6612663082b 100644 +index 23882dbe5fdfe9f0cf98a13791f70fe83393639d..41cf8145a6a5f1542e06af522201fccef1d5f07d 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1014,7 +1014,11 @@ public class CraftEventFactory { +@@ -1004,7 +1004,11 @@ public class CraftEventFactory { event.setKeepInventory(keepInventory); event.setKeepLevel(victim.keepLevel); // SPIGOT-2222: pre-set keepLevel populateFields(victim, event); // Paper - make cancellable diff --git a/1todos/server/src/lophine/carpet/CarpetCalculatorCompatHelper.java b/lophine-server/src/main/java/fun/bm/lophine/carpet/CarpetCalculatorCompatHelper.java similarity index 100% rename from 1todos/server/src/lophine/carpet/CarpetCalculatorCompatHelper.java rename to lophine-server/src/main/java/fun/bm/lophine/carpet/CarpetCalculatorCompatHelper.java diff --git a/1todos/server/src/lophine/carpet/CarpetCompatSync.java b/lophine-server/src/main/java/fun/bm/lophine/carpet/CarpetCompatSync.java similarity index 99% rename from 1todos/server/src/lophine/carpet/CarpetCompatSync.java rename to lophine-server/src/main/java/fun/bm/lophine/carpet/CarpetCompatSync.java index ffaa96b..5ad8741 100644 --- a/1todos/server/src/lophine/carpet/CarpetCompatSync.java +++ b/lophine-server/src/main/java/fun/bm/lophine/carpet/CarpetCompatSync.java @@ -1,3 +1,4 @@ +/* package fun.bm.lophine.carpet; import fun.bm.lophine.carpet.config.modules.CoreConfig; @@ -136,3 +137,4 @@ public final class CarpetCompatSync { CarpetServerProtocol.CarpetRules.register(CarpetServerProtocol.CarpetRule.of("carpettisaddition", "hopperCountersUnlimitedSpeed", CounterCompatConfig.hopperCountersUnlimitedSpeed)); } } +*/ diff --git a/1todos/server/src/lophine/carpet/InteractionUpdateCompatHelper.java b/lophine-server/src/main/java/fun/bm/lophine/carpet/InteractionUpdateCompatHelper.java similarity index 100% rename from 1todos/server/src/lophine/carpet/InteractionUpdateCompatHelper.java rename to lophine-server/src/main/java/fun/bm/lophine/carpet/InteractionUpdateCompatHelper.java diff --git a/1todos/server/src/lophine/carpet/LagFreeSpawningCompatHelper.java b/lophine-server/src/main/java/fun/bm/lophine/carpet/LagFreeSpawningCompatHelper.java similarity index 100% rename from 1todos/server/src/lophine/carpet/LagFreeSpawningCompatHelper.java rename to lophine-server/src/main/java/fun/bm/lophine/carpet/LagFreeSpawningCompatHelper.java diff --git a/1todos/server/src/lophine/carpet/config/modules/CoreConfig.java b/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/CoreConfig.java similarity index 91% rename from 1todos/server/src/lophine/carpet/config/modules/CoreConfig.java rename to lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/CoreConfig.java index fbe3e7c..4d2a87d 100644 --- a/1todos/server/src/lophine/carpet/config/modules/CoreConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/CoreConfig.java @@ -1,6 +1,6 @@ package fun.bm.lophine.carpet.config.modules; -import fun.bm.lophine.carpet.CarpetCompatSync; +//import fun.bm.lophine.carpet.CarpetCompatSync; import me.earthme.luminol.config.IConfigModule; import me.earthme.luminol.config.flags.ConfigClassInfo; import me.earthme.luminol.config.flags.ConfigInfo; @@ -24,6 +24,6 @@ public class CoreConfig implements IConfigModule { @Override public void beforeFinalLoad() { - CarpetCompatSync.apply(); +// CarpetCompatSync.apply(); } } diff --git a/1todos/server/src/lophine/carpet/config/modules/CounterCompatConfig.java b/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/CounterCompatConfig.java similarity index 100% rename from 1todos/server/src/lophine/carpet/config/modules/CounterCompatConfig.java rename to lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/CounterCompatConfig.java diff --git a/1todos/server/src/lophine/carpet/config/modules/FakePlayerCompatConfig.java b/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/FakePlayerCompatConfig.java similarity index 100% rename from 1todos/server/src/lophine/carpet/config/modules/FakePlayerCompatConfig.java rename to lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/FakePlayerCompatConfig.java diff --git a/1todos/server/src/lophine/carpet/config/modules/GeneralCompatConfig.java b/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/GeneralCompatConfig.java similarity index 100% rename from 1todos/server/src/lophine/carpet/config/modules/GeneralCompatConfig.java rename to lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/GeneralCompatConfig.java diff --git a/1todos/server/config-files/function/FakeplayerConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/FakeplayerConfig.java similarity index 100% rename from 1todos/server/config-files/function/FakeplayerConfig.java rename to lophine-server/src/main/java/fun/bm/lophine/config/modules/function/FakeplayerConfig.java diff --git a/1todos/server/src/leaves/bot/BotCreateState.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/BotCreateState.java similarity index 100% rename from 1todos/server/src/leaves/bot/BotCreateState.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/BotCreateState.java diff --git a/1todos/server/src/leaves/bot/BotDataStorage.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/BotDataStorage.java similarity index 100% rename from 1todos/server/src/leaves/bot/BotDataStorage.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/BotDataStorage.java diff --git a/1todos/server/src/leaves/bot/BotInventoryContainer.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/BotInventoryContainer.java similarity index 100% rename from 1todos/server/src/leaves/bot/BotInventoryContainer.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/BotInventoryContainer.java diff --git a/1todos/server/src/leaves/bot/BotList.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/BotList.java similarity index 100% rename from 1todos/server/src/leaves/bot/BotList.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/BotList.java diff --git a/1todos/server/src/leaves/bot/BotRecipeBook.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/BotRecipeBook.java similarity index 100% rename from 1todos/server/src/leaves/bot/BotRecipeBook.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/BotRecipeBook.java diff --git a/1todos/server/src/leaves/bot/BotStatsCounter.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/BotStatsCounter.java similarity index 100% rename from 1todos/server/src/leaves/bot/BotStatsCounter.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/BotStatsCounter.java diff --git a/1todos/server/src/leaves/bot/BotUtil.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/BotUtil.java similarity index 100% rename from 1todos/server/src/leaves/bot/BotUtil.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/BotUtil.java diff --git a/1todos/server/src/leaves/bot/MojangAPI.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/MojangAPI.java similarity index 100% rename from 1todos/server/src/leaves/bot/MojangAPI.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/MojangAPI.java diff --git a/1todos/server/src/leaves/bot/ServerBot.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/ServerBot.java similarity index 98% rename from 1todos/server/src/leaves/bot/ServerBot.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/ServerBot.java index 4c81f80..2f4730d 100644 --- a/1todos/server/src/leaves/bot/ServerBot.java +++ b/lophine-server/src/main/java/org/leavesmc/leaves/bot/ServerBot.java @@ -72,6 +72,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.util.Vector; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.leavesmc.leaves.LeavesConfig; import org.leavesmc.leaves.bot.agent.Actions; import org.leavesmc.leaves.bot.agent.Configs; import org.leavesmc.leaves.bot.agent.actions.AbstractBotAction; @@ -357,7 +358,7 @@ public class ServerBot extends ServerPlayer { } @Override - public @NotNull InteractionResult interact(@NotNull Player player, @NotNull InteractionHand hand) { + public @NotNull InteractionResult interact(@NotNull Player player, @NotNull InteractionHand hand, @NotNull net.minecraft.world.phys.Vec3 location) { // Leaves - Paper 26.1: Entity#interact now takes Vec3 if (FakeplayerConfig.canOpenInventory) { if (player instanceof ServerPlayer player1 && player.getMainHandItem().isEmpty()) { BotInventoryOpenEvent event = new BotInventoryOpenEvent(this.getBukkitEntity(), player1.getBukkitEntity()); @@ -368,7 +369,7 @@ public class ServerBot extends ServerPlayer { } } } - return super.interact(player, hand); + return super.interact(player, hand, location); } @Override @@ -666,7 +667,7 @@ public class ServerBot extends ServerPlayer { } private void tickAutoFish() { - if (!fun.bm.lophine.carpet.config.modules.FakePlayerCompatConfig.fakePlayerAutoFish || this.hasActiveAction("fish")) { + if (!FakePlayerCompatConfig.fakePlayerAutoFish || this.hasActiveAction("fish")) { this.autoFishCooldown = 0; return; } diff --git a/1todos/server/src/leaves/bot/ServerBotGameMode.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/ServerBotGameMode.java similarity index 100% rename from 1todos/server/src/leaves/bot/ServerBotGameMode.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/ServerBotGameMode.java diff --git a/1todos/server/src/leaves/bot/ServerBotPacketListenerImpl.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/ServerBotPacketListenerImpl.java similarity index 100% rename from 1todos/server/src/leaves/bot/ServerBotPacketListenerImpl.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/ServerBotPacketListenerImpl.java diff --git a/1todos/server/src/leaves/bot/agent/Actions.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/Actions.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/Actions.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/Actions.java diff --git a/1todos/server/src/leaves/bot/agent/Configs.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/Configs.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/Configs.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/Configs.java diff --git a/1todos/server/src/leaves/bot/agent/ExtraData.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/ExtraData.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/ExtraData.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/ExtraData.java diff --git a/1todos/server/src/leaves/bot/agent/actions/AbstractBotAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractBotAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/AbstractBotAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractBotAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/AbstractStateBotAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractStateBotAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/AbstractStateBotAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractStateBotAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/AbstractTimerBotAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractTimerBotAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/AbstractTimerBotAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractTimerBotAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/AbstractUseBotAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractUseBotAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/AbstractUseBotAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/AbstractUseBotAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/ServerAttackAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerAttackAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/ServerAttackAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerAttackAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/ServerBreakBlockAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerBreakBlockAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/ServerBreakBlockAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerBreakBlockAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/ServerDropAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerDropAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/ServerDropAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerDropAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/ServerFishAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerFishAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/ServerFishAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerFishAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/ServerJumpAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerJumpAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/ServerJumpAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerJumpAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/ServerLookAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerLookAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/ServerLookAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerLookAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/ServerMountAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerMountAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/ServerMountAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerMountAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/ServerMoveAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerMoveAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/ServerMoveAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerMoveAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/ServerRotationAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerRotationAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/ServerRotationAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerRotationAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/ServerSneakAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerSneakAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/ServerSneakAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerSneakAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/ServerSwapAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerSwapAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/ServerSwapAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerSwapAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/ServerSwimAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerSwimAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/ServerSwimAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerSwimAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/ServerUseItemAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerUseItemAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/ServerUseItemAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerUseItemAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/ServerUseItemAutoAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerUseItemAutoAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/ServerUseItemAutoAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerUseItemAutoAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/ServerUseItemOffhandAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerUseItemOffhandAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/ServerUseItemOffhandAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerUseItemOffhandAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/ServerUseItemOnAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerUseItemOnAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/ServerUseItemOnAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerUseItemOnAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/ServerUseItemOnOffhandAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerUseItemOnOffhandAction.java similarity index 100% rename from 1todos/server/src/leaves/bot/agent/actions/ServerUseItemOnOffhandAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerUseItemOnOffhandAction.java diff --git a/1todos/server/src/leaves/bot/agent/actions/ServerUseItemToAction.java b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerUseItemToAction.java similarity index 96% rename from 1todos/server/src/leaves/bot/agent/actions/ServerUseItemToAction.java rename to lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerUseItemToAction.java index da9ecfe..263207f 100644 --- a/1todos/server/src/leaves/bot/agent/actions/ServerUseItemToAction.java +++ b/lophine-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerUseItemToAction.java @@ -53,7 +53,7 @@ public class ServerUseItemToAction extends AbstractUseBotAction