From bcb39f0066e60213b7a328c8568cfbc7e7e6ccb0 Mon Sep 17 00:00:00 2001 From: tanyaofei Date: Tue, 17 Oct 2023 14:58:29 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=94=AF=E6=8C=81=201.20.2=202.=20Command?= =?UTF-8?q?API=20=E6=94=B9=E4=B8=BA=E6=8F=92=E4=BB=B6=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fakeplayer/api/action/ActionTicker.java | 29 --- .../fakeplayer/api/nms/NMSEntity.java | 6 - .../fakeplayer/api/nms/NMSFactory.java | 27 --- .../fakeplayer/api/nms/NMSServerLevel.java | 6 - .../api/{action => spi}/Action.java | 2 +- .../fakeplayer/api/spi/ActionTicker.java | 13 ++ .../fakeplayer/api/spi/NMSEntity.java | 6 + .../api/{nms => spi}/NMSNetwork.java | 2 +- .../api/{nms => spi}/NMSServer.java | 2 +- .../fakeplayer/api/spi/NMSServerLevel.java | 6 + .../api/{nms => spi}/NMSServerPlayer.java | 2 +- .../fakeplayer/api/spi/VersionSupport.java | 40 ++++ fakeplayer-core/pom.xml | 7 +- .../hello09x/fakeplayer/{ => core}/Main.java | 31 +-- .../{ => core}/command/AbstractCommand.java | 6 +- .../{ => core}/command/ActionCommand.java | 14 +- .../{ => core}/command/CmdCommand.java | 2 +- .../{ => core}/command/CommandRegistry.java | 12 +- .../{ => core}/command/ConfigCommand.java | 6 +- .../{ => core}/command/ExpCommand.java | 2 +- .../{ => core}/command/HelpCommand.java | 2 +- .../{ => core}/command/Permission.java | 2 +- .../{ => core}/command/ProfileCommand.java | 9 +- .../{ => core}/command/ReloadCommand.java | 4 +- .../{ => core}/command/RideCommand.java | 14 +- .../{ => core}/command/SpawnCommand.java | 4 +- .../{ => core}/command/TpCommand.java | 4 +- .../{ => core}/command/support/Direction.java | 2 +- .../{ => core}/config/FakeplayerConfig.java | 4 +- .../{ => core}/entity/FakePlayer.java | 23 +- .../{ => core}/entity/FakeplayerTicker.java | 4 +- .../{ => core}/entity/SpawnOption.java | 2 +- .../{ => core}/listener/PlayerListeners.java | 12 +- .../{ => core}/manager/FakeplayerList.java | 4 +- .../{ => core}/manager/FakeplayerManager.java | 28 +-- .../manager/WildFakeplayerManager.java | 6 +- .../manager/action/ActionManager.java | 8 +- .../manager/naming/NameManager.java | 10 +- .../{ => core}/manager/naming/NameSource.java | 2 +- .../manager/naming/SequenceName.java | 2 +- .../exception/IllegalCustomNameException.java | 2 +- .../repository/UsedIdRepository.java | 4 +- .../repository/UserConfigRepository.java | 8 +- .../{ => core}/repository/model/Config.java | 2 +- .../{ => core}/repository/model/Configs.java | 2 +- .../repository/model/UserConfig.java | 2 +- .../{ => core}/util/AddressUtils.java | 2 +- .../fakeplayer/{ => core}/util/Commands.java | 2 +- .../util/InternalAddressGenerator.java | 2 +- .../fakeplayer/{ => core}/util/Mth.java | 2 +- .../{ => core}/util/Teleportor.java | 2 +- .../fakeplayer/{ => core}/util/Worlds.java | 2 +- .../{ => core}/util/update/Release.java | 2 +- .../{ => core}/util/update/UpdateChecker.java | 2 +- fakeplayer-core/src/main/resources/plugin.yml | 4 +- fakeplayer-dist/pom.xml | 67 ++++++ ...hello09x.fakeplayer.api.spi.VersionSupport | 2 + fakeplayer-v1_20_R1/pom.xml | 41 ---- .../{x => v1_20_R1}/action/AttackAction.java | 2 +- .../action/DropInventoryAction.java | 4 +- .../action/DropItemAction.java | 4 +- .../action/DropStackAction.java | 4 +- .../{x => v1_20_R1}/action/JumpAction.java | 4 +- .../{x => v1_20_R1}/action/MineAction.java | 4 +- .../action/StareEntityAction.java | 4 +- .../{x => v1_20_R1}/action/TraceAction.java | 6 +- .../{x => v1_20_R1}/action/UseAction.java | 4 +- .../{x => v1_20_R1}/action/util/Tracer.java | 2 +- .../network/EmptyAdvancements.java | 2 +- .../{x => v1_20_R1}/network/EmptyChannel.java | 2 +- .../network/EmptyConnection.java | 2 +- .../network/EmptyLoginPacketListener.java | 2 +- .../EmptyServerGamePacketListener.java | 2 +- .../spi/ActionTickerImpl.java} | 47 ++-- .../nms => v1_20_R1/spi}/NMSEntityImpl.java | 4 +- .../nms => v1_20_R1/spi}/NMSNetworkImpl.java | 10 +- .../nms => v1_20_R1/spi}/NMSServerImpl.java | 6 +- .../spi}/NMSServerLevelImpl.java | 4 +- .../spi}/NMSServerPlayerImpl.java | 6 +- .../v1_20_R1/spi/VersionSupportImpl.java | 54 +++++ .../fakeplayer/x/nms/NMSFactoryImpl.java | 37 ---- ...ello09x.fakeplayer.api.action.ActionTicker | 1 - ...hub.hello09x.fakeplayer.api.nms.NMSFactory | 1 - fakeplayer-v1_20_R2/pom.xml | 99 +++++++++ .../v1_20_R2/action/AttackAction.java | 49 +++++ .../v1_20_R2/action/DropInventoryAction.java | 35 +++ .../v1_20_R2/action/DropItemAction.java | 33 +++ .../v1_20_R2/action/DropStackAction.java | 33 +++ .../v1_20_R2/action/JumpAction.java | 36 ++++ .../v1_20_R2/action/MineAction.java | 159 ++++++++++++++ .../v1_20_R2/action/StareEntityAction.java | 51 +++++ .../v1_20_R2/action/TraceAction.java | 24 +++ .../fakeplayer/v1_20_R2/action/UseAction.java | 98 +++++++++ .../v1_20_R2/action/util/Tracer.java | 105 +++++++++ .../v1_20_R2/network/EmptyAdvancements.java | 63 ++++++ .../v1_20_R2/network/EmptyChannel.java | 92 ++++++++ .../v1_20_R2/network/EmptyConnection.java | 35 +++ .../network/EmptyLoginPacketListener.java | 12 ++ .../EmptyServerGamePacketListener.java | 19 ++ .../v1_20_R2/spi/ActionTickerImpl.java | 76 +++++++ .../v1_20_R2/spi/NMSEntityImpl.java | 19 ++ .../v1_20_R2/spi/NMSNetworkImpl.java | 46 ++++ .../v1_20_R2/spi/NMSServerImpl.java | 38 ++++ .../v1_20_R2/spi/NMSServerLevelImpl.java | 26 +++ .../v1_20_R2/spi/NMSServerPlayerImpl.java | 200 ++++++++++++++++++ .../v1_20_R2/spi/VersionSupportImpl.java | 54 +++++ pom.xml | 9 +- 107 files changed, 1795 insertions(+), 351 deletions(-) delete mode 100644 fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/action/ActionTicker.java delete mode 100644 fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSEntity.java delete mode 100644 fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSFactory.java delete mode 100644 fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSServerLevel.java rename fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/{action => spi}/Action.java (84%) create mode 100644 fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/ActionTicker.java create mode 100644 fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/NMSEntity.java rename fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/{nms => spi}/NMSNetwork.java (94%) rename fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/{nms => spi}/NMSServer.java (87%) create mode 100644 fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/NMSServerLevel.java rename fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/{nms => spi}/NMSServerPlayer.java (95%) create mode 100644 fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/VersionSupport.java rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/Main.java (73%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/command/AbstractCommand.java (85%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/command/ActionCommand.java (94%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/command/CmdCommand.java (97%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/command/CommandRegistry.java (98%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/command/ConfigCommand.java (89%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/command/ExpCommand.java (96%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/command/HelpCommand.java (89%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/command/Permission.java (88%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/command/ProfileCommand.java (89%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/command/ReloadCommand.java (84%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/command/RideCommand.java (85%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/command/SpawnCommand.java (98%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/command/TpCommand.java (91%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/command/support/Direction.java (61%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/config/FakeplayerConfig.java (97%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/entity/FakePlayer.java (90%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/entity/FakeplayerTicker.java (95%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/entity/SpawnOption.java (90%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/listener/PlayerListeners.java (89%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/manager/FakeplayerList.java (96%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/manager/FakeplayerManager.java (92%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/manager/WildFakeplayerManager.java (96%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/manager/action/ActionManager.java (87%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/manager/naming/NameManager.java (94%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/manager/naming/NameSource.java (95%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/manager/naming/SequenceName.java (86%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/manager/naming/exception/IllegalCustomNameException.java (84%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/repository/UsedIdRepository.java (95%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/repository/UserConfigRepository.java (93%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/repository/model/Config.java (86%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/repository/model/Configs.java (97%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/repository/model/UserConfig.java (87%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/util/AddressUtils.java (91%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/util/Commands.java (96%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/util/InternalAddressGenerator.java (94%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/util/Mth.java (94%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/util/Teleportor.java (93%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/util/Worlds.java (93%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/util/update/Release.java (87%) rename fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/{ => core}/util/update/UpdateChecker.java (97%) create mode 100644 fakeplayer-dist/pom.xml create mode 100644 fakeplayer-dist/src/main/resources/META-INF/services/io.github.hello09x.fakeplayer.api.spi.VersionSupport rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x => v1_20_R1}/action/AttackAction.java (94%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x => v1_20_R1}/action/DropInventoryAction.java (86%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x => v1_20_R1}/action/DropItemAction.java (83%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x => v1_20_R1}/action/DropStackAction.java (83%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x => v1_20_R1}/action/JumpAction.java (85%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x => v1_20_R1}/action/MineAction.java (97%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x => v1_20_R1}/action/StareEntityAction.java (91%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x => v1_20_R1}/action/TraceAction.java (75%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x => v1_20_R1}/action/UseAction.java (96%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x => v1_20_R1}/action/util/Tracer.java (98%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x => v1_20_R1}/network/EmptyAdvancements.java (96%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x => v1_20_R1}/network/EmptyChannel.java (97%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x => v1_20_R1}/network/EmptyConnection.java (93%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x => v1_20_R1}/network/EmptyLoginPacketListener.java (86%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x => v1_20_R1}/network/EmptyServerGamePacketListener.java (91%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x/action/ActionTicker.java => v1_20_R1/spi/ActionTickerImpl.java} (72%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x/nms => v1_20_R1/spi}/NMSEntityImpl.java (78%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x/nms => v1_20_R1/spi}/NMSNetworkImpl.java (79%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x/nms => v1_20_R1/spi}/NMSServerImpl.java (84%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x/nms => v1_20_R1/spi}/NMSServerLevelImpl.java (84%) rename fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/{x/nms => v1_20_R1/spi}/NMSServerPlayerImpl.java (96%) create mode 100644 fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/VersionSupportImpl.java delete mode 100644 fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/nms/NMSFactoryImpl.java delete mode 100644 fakeplayer-v1_20_R1/src/main/resources/META-INF/services/io.github.hello09x.fakeplayer.api.action.ActionTicker delete mode 100644 fakeplayer-v1_20_R1/src/main/resources/META-INF/services/io.github.hello09x.fakeplayer.api.nms.NMSFactory create mode 100644 fakeplayer-v1_20_R2/pom.xml create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/AttackAction.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/DropInventoryAction.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/DropItemAction.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/DropStackAction.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/JumpAction.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/MineAction.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/StareEntityAction.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/TraceAction.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/UseAction.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/util/Tracer.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyAdvancements.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyChannel.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyConnection.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyLoginPacketListener.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyServerGamePacketListener.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/ActionTickerImpl.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSEntityImpl.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSNetworkImpl.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSServerImpl.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSServerLevelImpl.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSServerPlayerImpl.java create mode 100644 fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/VersionSupportImpl.java diff --git a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/action/ActionTicker.java b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/action/ActionTicker.java deleted file mode 100644 index eb450aa..0000000 --- a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/action/ActionTicker.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.github.hello09x.fakeplayer.api.action; - -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -import java.util.ServiceLoader; - -public interface ActionTicker { - - static @NotNull ActionTicker create(@NotNull Player player, @NotNull ActionType action, @NotNull ActionSetting setting) { - var instance = ServiceLoader.load( - ActionTicker.class, - ActionTicker.class.getClassLoader() - ).findFirst().orElseThrow(); - instance.init(player, action, setting); - return instance; - } - - void tick(); - - void inactiveTick(); - - void stop(); - - void init(@NotNull Player player, @NotNull ActionType action, @NotNull ActionSetting setting); - - boolean isDone(); - -} diff --git a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSEntity.java b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSEntity.java deleted file mode 100644 index 3709b89..0000000 --- a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSEntity.java +++ /dev/null @@ -1,6 +0,0 @@ -package io.github.hello09x.fakeplayer.api.nms; - -public interface NMSEntity { - - -} diff --git a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSFactory.java b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSFactory.java deleted file mode 100644 index 01a16ae..0000000 --- a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSFactory.java +++ /dev/null @@ -1,27 +0,0 @@ -package io.github.hello09x.fakeplayer.api.nms; - -import org.bukkit.Server; -import org.bukkit.World; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -import java.util.ServiceLoader; - -public interface NMSFactory { - - static @NotNull NMSFactory getInstance() { - return ServiceLoader.load(NMSFactory.class, NMSFactory.class.getClassLoader()).findFirst().orElseThrow(); - } - - NMSEntity entity(@NotNull Entity entity); - - NMSServer server(@NotNull Server server); - - NMSServerLevel world(@NotNull World world); - - NMSServerPlayer player(@NotNull Player player); - - NMSNetwork network(); - -} diff --git a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSServerLevel.java b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSServerLevel.java deleted file mode 100644 index ed94a34..0000000 --- a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSServerLevel.java +++ /dev/null @@ -1,6 +0,0 @@ -package io.github.hello09x.fakeplayer.api.nms; - -public interface NMSServerLevel { - - -} diff --git a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/action/Action.java b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/Action.java similarity index 84% rename from fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/action/Action.java rename to fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/Action.java index f98811b..3939a86 100644 --- a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/action/Action.java +++ b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/Action.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.api.action; +package io.github.hello09x.fakeplayer.api.spi; public interface Action { diff --git a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/ActionTicker.java b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/ActionTicker.java new file mode 100644 index 0000000..9477949 --- /dev/null +++ b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/ActionTicker.java @@ -0,0 +1,13 @@ +package io.github.hello09x.fakeplayer.api.spi; + +public interface ActionTicker { + + void tick(); + + void inactiveTick(); + + void stop(); + + boolean isDone(); + +} diff --git a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/NMSEntity.java b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/NMSEntity.java new file mode 100644 index 0000000..e4ee729 --- /dev/null +++ b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/NMSEntity.java @@ -0,0 +1,6 @@ +package io.github.hello09x.fakeplayer.api.spi; + +public interface NMSEntity { + + +} diff --git a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSNetwork.java b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/NMSNetwork.java similarity index 94% rename from fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSNetwork.java rename to fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/NMSNetwork.java index e2be011..d592fe3 100644 --- a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSNetwork.java +++ b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/NMSNetwork.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.api.nms; +package io.github.hello09x.fakeplayer.api.spi; import org.bukkit.Server; import org.bukkit.entity.Player; diff --git a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSServer.java b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/NMSServer.java similarity index 87% rename from fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSServer.java rename to fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/NMSServer.java index 0e19386..c34511f 100644 --- a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSServer.java +++ b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/NMSServer.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.api.nms; +package io.github.hello09x.fakeplayer.api.spi; import org.jetbrains.annotations.NotNull; diff --git a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/NMSServerLevel.java b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/NMSServerLevel.java new file mode 100644 index 0000000..263594f --- /dev/null +++ b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/NMSServerLevel.java @@ -0,0 +1,6 @@ +package io.github.hello09x.fakeplayer.api.spi; + +public interface NMSServerLevel { + + +} diff --git a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSServerPlayer.java b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/NMSServerPlayer.java similarity index 95% rename from fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSServerPlayer.java rename to fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/NMSServerPlayer.java index 3755463..33117b4 100644 --- a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/nms/NMSServerPlayer.java +++ b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/NMSServerPlayer.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.api.nms; +package io.github.hello09x.fakeplayer.api.spi; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; diff --git a/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/VersionSupport.java b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/VersionSupport.java new file mode 100644 index 0000000..6ba0328 --- /dev/null +++ b/fakeplayer-api/src/main/java/io/github/hello09x/fakeplayer/api/spi/VersionSupport.java @@ -0,0 +1,40 @@ +package io.github.hello09x.fakeplayer.api.spi; + +import io.github.hello09x.fakeplayer.api.action.ActionSetting; +import io.github.hello09x.fakeplayer.api.action.ActionType; +import org.bukkit.Server; +import org.bukkit.World; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.ServiceLoader; + +public interface VersionSupport { + + static @Nullable VersionSupport getInstance() { + return ServiceLoader + .load(VersionSupport.class, VersionSupport.class.getClassLoader()) + .stream() + .map(ServiceLoader.Provider::get) + .filter(v -> v.isSupported()) + .findAny() + .orElse(null); + } + + @NotNull NMSEntity entity(@NotNull Entity entity); + + @NotNull NMSServer server(@NotNull Server server); + + @NotNull NMSServerLevel world(@NotNull World world); + + @NotNull NMSServerPlayer player(@NotNull Player player); + + @NotNull NMSNetwork network(); + + boolean isSupported(); + + ActionTicker createAction(@NotNull Player player, @NotNull ActionType action, @NotNull ActionSetting setting); + +} diff --git a/fakeplayer-core/pom.xml b/fakeplayer-core/pom.xml index e2d1098..e880356 100644 --- a/fakeplayer-core/pom.xml +++ b/fakeplayer-core/pom.xml @@ -47,14 +47,11 @@ provided - - dev.jorel - commandapi-bukkit-shade + commandapi-bukkit-core + provided - - \ No newline at end of file diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/Main.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/Main.java similarity index 73% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/Main.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/Main.java index 7acee7e..57bc87d 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/Main.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/Main.java @@ -1,15 +1,15 @@ -package io.github.hello09x.fakeplayer; +package io.github.hello09x.fakeplayer.core; -import dev.jorel.commandapi.CommandAPI; -import dev.jorel.commandapi.CommandAPIBukkitConfig; -import io.github.hello09x.fakeplayer.command.CommandRegistry; -import io.github.hello09x.fakeplayer.config.FakeplayerConfig; -import io.github.hello09x.fakeplayer.listener.PlayerListeners; -import io.github.hello09x.fakeplayer.manager.FakeplayerManager; -import io.github.hello09x.fakeplayer.manager.WildFakeplayerManager; -import io.github.hello09x.fakeplayer.repository.UsedIdRepository; -import io.github.hello09x.fakeplayer.util.update.UpdateChecker; +import io.github.hello09x.fakeplayer.api.spi.VersionSupport; +import io.github.hello09x.fakeplayer.core.command.CommandRegistry; +import io.github.hello09x.fakeplayer.core.config.FakeplayerConfig; +import io.github.hello09x.fakeplayer.core.listener.PlayerListeners; +import io.github.hello09x.fakeplayer.core.manager.FakeplayerManager; +import io.github.hello09x.fakeplayer.core.manager.WildFakeplayerManager; +import io.github.hello09x.fakeplayer.core.repository.UsedIdRepository; +import io.github.hello09x.fakeplayer.core.util.update.UpdateChecker; import lombok.Getter; +import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; import java.util.concurrent.CompletableFuture; @@ -19,9 +19,15 @@ public final class Main extends JavaPlugin { @Getter private static Main instance; + @Getter + private static VersionSupport versionSupport; + @Override public void onLoad() { - CommandAPI.onLoad(new CommandAPIBukkitConfig(this).silentLogs(true)); + versionSupport = VersionSupport.getInstance(); + if (versionSupport == null) { + throw new ExceptionInInitializerError("不支持当前 minecraft 版本: " + Bukkit.getMinecraftVersion()); + } } @Override @@ -30,8 +36,6 @@ public final class Main extends JavaPlugin { instance = this; CommandRegistry.register(); - CommandAPI.onEnable(); - { var messenger = getServer().getMessenger(); messenger.registerIncomingPluginChannel(this, "BungeeCord", WildFakeplayerManager.instance); @@ -78,7 +82,6 @@ public final class Main extends JavaPlugin { @Override public void onDisable() { - CommandAPI.onDisable(); FakeplayerManager.instance.removeAll("plugin disabled"); UsedIdRepository.instance.saveAll(); FakeplayerManager.instance.onDisable(); diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/AbstractCommand.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/AbstractCommand.java similarity index 85% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/AbstractCommand.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/AbstractCommand.java index 5f6a3a4..c79d7a6 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/AbstractCommand.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/AbstractCommand.java @@ -1,10 +1,10 @@ -package io.github.hello09x.fakeplayer.command; +package io.github.hello09x.fakeplayer.core.command; import dev.jorel.commandapi.CommandAPI; import dev.jorel.commandapi.exceptions.WrapperCommandSyntaxException; import dev.jorel.commandapi.executors.CommandArguments; -import io.github.hello09x.fakeplayer.config.FakeplayerConfig; -import io.github.hello09x.fakeplayer.manager.FakeplayerManager; +import io.github.hello09x.fakeplayer.core.config.FakeplayerConfig; +import io.github.hello09x.fakeplayer.core.manager.FakeplayerManager; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/ActionCommand.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/ActionCommand.java similarity index 94% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/ActionCommand.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/ActionCommand.java index 1f142ac..36e4bf7 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/ActionCommand.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/ActionCommand.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.command; +package io.github.hello09x.fakeplayer.core.command; import dev.jorel.commandapi.exceptions.WrapperCommandSyntaxException; import dev.jorel.commandapi.executors.CommandArguments; @@ -6,10 +6,10 @@ import dev.jorel.commandapi.executors.CommandExecutor; import dev.jorel.commandapi.wrappers.Rotation; import io.github.hello09x.fakeplayer.api.action.ActionSetting; import io.github.hello09x.fakeplayer.api.action.ActionType; -import io.github.hello09x.fakeplayer.api.nms.NMSFactory; -import io.github.hello09x.fakeplayer.command.support.Direction; -import io.github.hello09x.fakeplayer.manager.action.ActionManager; -import io.github.hello09x.fakeplayer.util.Mth; +import io.github.hello09x.fakeplayer.core.Main; +import io.github.hello09x.fakeplayer.core.command.support.Direction; +import io.github.hello09x.fakeplayer.core.manager.action.ActionManager; +import io.github.hello09x.fakeplayer.core.util.Mth; import io.papermc.paper.entity.LookAnchor; import org.apache.commons.lang3.StringUtils; import org.bukkit.Location; @@ -143,7 +143,7 @@ public class ActionCommand extends AbstractCommand { } private void look(@NotNull Player player, float yaw, float pitch) { - var handle = NMSFactory.getInstance().player(player); + var handle = Main.getVersionSupport().player(player); handle.setYRot(yaw % 360); handle.setXRot(Mth.clamp(pitch, -90, 90)); } @@ -151,7 +151,7 @@ public class ActionCommand extends AbstractCommand { public CommandExecutor move(float forward, float strafing) { return (sender, args) -> { var target = getTarget(sender, args); - var handle = NMSFactory.getInstance().player(target); + var handle = Main.getVersionSupport().player(target); float vel = target.isSneaking() ? 0.3F : 1.0F; if (forward != 0.0F) { handle.setZza(vel * forward); diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/CmdCommand.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/CmdCommand.java similarity index 97% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/CmdCommand.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/CmdCommand.java index a89f939..cf6394e 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/CmdCommand.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/CmdCommand.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.command; +package io.github.hello09x.fakeplayer.core.command; import dev.jorel.commandapi.CommandAPI; import dev.jorel.commandapi.exceptions.WrapperCommandSyntaxException; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/CommandRegistry.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/CommandRegistry.java similarity index 98% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/CommandRegistry.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/CommandRegistry.java index fc55d2e..7cb13af 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/CommandRegistry.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/CommandRegistry.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.command; +package io.github.hello09x.fakeplayer.core.command; import dev.jorel.commandapi.CommandAPICommand; import dev.jorel.commandapi.arguments.Argument; @@ -9,11 +9,11 @@ import dev.jorel.commandapi.executors.CommandExecutor; import io.github.hello09x.bedrock.command.Usage; import io.github.hello09x.fakeplayer.api.action.ActionSetting; import io.github.hello09x.fakeplayer.api.action.ActionType; -import io.github.hello09x.fakeplayer.command.support.Direction; -import io.github.hello09x.fakeplayer.config.FakeplayerConfig; -import io.github.hello09x.fakeplayer.manager.FakeplayerManager; -import io.github.hello09x.fakeplayer.repository.model.Config; -import io.github.hello09x.fakeplayer.repository.model.Configs; +import io.github.hello09x.fakeplayer.core.command.support.Direction; +import io.github.hello09x.fakeplayer.core.config.FakeplayerConfig; +import io.github.hello09x.fakeplayer.core.manager.FakeplayerManager; +import io.github.hello09x.fakeplayer.core.repository.model.Config; +import io.github.hello09x.fakeplayer.core.repository.model.Configs; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/ConfigCommand.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/ConfigCommand.java similarity index 89% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/ConfigCommand.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/ConfigCommand.java index 295dfa2..bda85b0 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/ConfigCommand.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/ConfigCommand.java @@ -1,8 +1,8 @@ -package io.github.hello09x.fakeplayer.command; +package io.github.hello09x.fakeplayer.core.command; import dev.jorel.commandapi.executors.CommandArguments; -import io.github.hello09x.fakeplayer.repository.UserConfigRepository; -import io.github.hello09x.fakeplayer.repository.model.Config; +import io.github.hello09x.fakeplayer.core.repository.UserConfigRepository; +import io.github.hello09x.fakeplayer.core.repository.model.Config; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/ExpCommand.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/ExpCommand.java similarity index 96% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/ExpCommand.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/ExpCommand.java index 98922e0..5ca6f21 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/ExpCommand.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/ExpCommand.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.command; +package io.github.hello09x.fakeplayer.core.command; import dev.jorel.commandapi.exceptions.WrapperCommandSyntaxException; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/HelpCommand.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/HelpCommand.java similarity index 89% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/HelpCommand.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/HelpCommand.java index c49fccf..f47b901 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/HelpCommand.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/HelpCommand.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.command; +package io.github.hello09x.fakeplayer.core.command; import dev.jorel.commandapi.executors.CommandArguments; import org.bukkit.entity.Player; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/Permission.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/Permission.java similarity index 88% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/Permission.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/Permission.java index b5b2ea0..4277234 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/Permission.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/Permission.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.command; +package io.github.hello09x.fakeplayer.core.command; public interface Permission { diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/ProfileCommand.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/ProfileCommand.java similarity index 89% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/ProfileCommand.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/ProfileCommand.java index db2b222..3ae3c8b 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/ProfileCommand.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/ProfileCommand.java @@ -1,9 +1,10 @@ -package io.github.hello09x.fakeplayer.command; +package io.github.hello09x.fakeplayer.core.command; import dev.jorel.commandapi.exceptions.WrapperCommandSyntaxException; import dev.jorel.commandapi.executors.CommandArguments; import io.github.hello09x.bedrock.io.Experiences; -import io.github.hello09x.fakeplayer.util.Mth; +import io.github.hello09x.fakeplayer.core.util.Mth; +import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.attribute.AttributeInstance; import org.bukkit.command.CommandSender; @@ -28,7 +29,7 @@ public class ProfileCommand extends AbstractCommand { sender.sendMessage(textOfChildren( text(target.getName(), WHITE), text(" 当前 ", GRAY), - text(level, DARK_GREEN), + Component.text(level, DARK_GREEN), text(" 级, 共 ", GRAY), text(total, DARK_GREEN), text(" 点经验值", GRAY) @@ -60,7 +61,7 @@ public class ProfileCommand extends AbstractCommand { sender.sendMessage(textOfChildren( text(target.getName(), WHITE), text(" 当前生命值: ", GRAY), - text(Mth.floor(health, 0.5), color), + Component.text(Mth.floor(health, 0.5), color), text("/", color), text(max, color) )); diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/ReloadCommand.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/ReloadCommand.java similarity index 84% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/ReloadCommand.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/ReloadCommand.java index 899710f..0b847ae 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/ReloadCommand.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/ReloadCommand.java @@ -1,7 +1,7 @@ -package io.github.hello09x.fakeplayer.command; +package io.github.hello09x.fakeplayer.core.command; import dev.jorel.commandapi.executors.CommandArguments; -import io.github.hello09x.fakeplayer.config.FakeplayerConfig; +import io.github.hello09x.fakeplayer.core.config.FakeplayerConfig; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/RideCommand.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/RideCommand.java similarity index 85% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/RideCommand.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/RideCommand.java index 3c37613..58fe0e5 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/RideCommand.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/RideCommand.java @@ -1,9 +1,9 @@ -package io.github.hello09x.fakeplayer.command; +package io.github.hello09x.fakeplayer.core.command; import dev.jorel.commandapi.CommandAPI; import dev.jorel.commandapi.exceptions.WrapperCommandSyntaxException; import dev.jorel.commandapi.executors.CommandArguments; -import io.github.hello09x.fakeplayer.api.nms.NMSFactory; +import io.github.hello09x.fakeplayer.core.Main; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.AbstractHorse; @@ -25,7 +25,7 @@ public class RideCommand extends AbstractCommand { if (entities.isEmpty()) { return; } - NMSFactory.getInstance().player(target).startRiding(entities.get(0), true); + Main.getVersionSupport().player(target).startRiding(entities.get(0), true); } /** @@ -38,7 +38,7 @@ public class RideCommand extends AbstractCommand { return; } - NMSFactory.getInstance().player(target).startRiding(entity, true); + Main.getVersionSupport().player(target).startRiding(entity, true); } /** @@ -56,7 +56,7 @@ public class RideCommand extends AbstractCommand { return; } - NMSFactory.getInstance().player(target).startRiding(entity, true); + Main.getVersionSupport().player(target).startRiding(entity, true); } /** @@ -73,11 +73,11 @@ public class RideCommand extends AbstractCommand { throw CommandAPI.failWithString("你离假人太远了"); } - NMSFactory.getInstance().player(target).startRiding(sender, true); + Main.getVersionSupport().player(target).startRiding(sender, true); } public void stopRiding(@NotNull CommandSender sender, @NotNull CommandArguments args) throws WrapperCommandSyntaxException { - NMSFactory.getInstance().player(getTarget(sender, args)).stopRiding(); + Main.getVersionSupport().player(getTarget(sender, args)).stopRiding(); } } diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/SpawnCommand.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/SpawnCommand.java similarity index 98% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/SpawnCommand.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/SpawnCommand.java index 611996c..a056ffc 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/SpawnCommand.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/SpawnCommand.java @@ -1,10 +1,10 @@ -package io.github.hello09x.fakeplayer.command; +package io.github.hello09x.fakeplayer.core.command; import dev.jorel.commandapi.exceptions.WrapperCommandSyntaxException; import dev.jorel.commandapi.executors.CommandArguments; import io.github.hello09x.bedrock.command.MessageException; import io.github.hello09x.bedrock.page.Page; -import io.github.hello09x.fakeplayer.util.Mth; +import io.github.hello09x.fakeplayer.core.util.Mth; import org.apache.commons.lang3.StringUtils; import org.bukkit.Bukkit; import org.bukkit.Location; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/TpCommand.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/TpCommand.java similarity index 91% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/TpCommand.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/TpCommand.java index 9fb0d11..6c988a9 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/TpCommand.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/TpCommand.java @@ -1,8 +1,8 @@ -package io.github.hello09x.fakeplayer.command; +package io.github.hello09x.fakeplayer.core.command; import dev.jorel.commandapi.exceptions.WrapperCommandSyntaxException; import dev.jorel.commandapi.executors.CommandArguments; -import io.github.hello09x.fakeplayer.util.Teleportor; +import io.github.hello09x.fakeplayer.core.util.Teleportor; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/support/Direction.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/support/Direction.java similarity index 61% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/support/Direction.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/support/Direction.java index 5c80c3b..61eeb46 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/command/support/Direction.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/command/support/Direction.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.command.support; +package io.github.hello09x.fakeplayer.core.command.support; public enum Direction { diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/config/FakeplayerConfig.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/config/FakeplayerConfig.java similarity index 97% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/config/FakeplayerConfig.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/config/FakeplayerConfig.java index 19834ea..b506a12 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/config/FakeplayerConfig.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/config/FakeplayerConfig.java @@ -1,8 +1,8 @@ -package io.github.hello09x.fakeplayer.config; +package io.github.hello09x.fakeplayer.core.config; import io.github.hello09x.bedrock.config.Config; -import io.github.hello09x.fakeplayer.Main; +import io.github.hello09x.fakeplayer.core.Main; import lombok.Getter; import lombok.ToString; import org.bukkit.configuration.file.FileConfiguration; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/entity/FakePlayer.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/entity/FakePlayer.java similarity index 90% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/entity/FakePlayer.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/entity/FakePlayer.java index f381c85..7484b34 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/entity/FakePlayer.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/entity/FakePlayer.java @@ -1,17 +1,16 @@ -package io.github.hello09x.fakeplayer.entity; +package io.github.hello09x.fakeplayer.core.entity; import io.github.hello09x.bedrock.task.Tasks; -import io.github.hello09x.fakeplayer.Main; import io.github.hello09x.fakeplayer.api.action.ActionSetting; import io.github.hello09x.fakeplayer.api.action.ActionType; -import io.github.hello09x.fakeplayer.api.nms.NMSFactory; -import io.github.hello09x.fakeplayer.api.nms.NMSServerPlayer; -import io.github.hello09x.fakeplayer.config.FakeplayerConfig; -import io.github.hello09x.fakeplayer.manager.action.ActionManager; -import io.github.hello09x.fakeplayer.manager.naming.SequenceName; -import io.github.hello09x.fakeplayer.util.InternalAddressGenerator; -import io.github.hello09x.fakeplayer.util.Teleportor; -import io.github.hello09x.fakeplayer.util.Worlds; +import io.github.hello09x.fakeplayer.api.spi.NMSServerPlayer; +import io.github.hello09x.fakeplayer.core.Main; +import io.github.hello09x.fakeplayer.core.config.FakeplayerConfig; +import io.github.hello09x.fakeplayer.core.manager.action.ActionManager; +import io.github.hello09x.fakeplayer.core.manager.naming.SequenceName; +import io.github.hello09x.fakeplayer.core.util.InternalAddressGenerator; +import io.github.hello09x.fakeplayer.core.util.Teleportor; +import io.github.hello09x.fakeplayer.core.util.Worlds; import lombok.Getter; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -81,7 +80,7 @@ public class FakePlayer { this.creator = creator; this.creatorIp = creatorIp; this.sequenceName = sequenceName; - this.handle = NMSFactory.getInstance().server(Bukkit.getServer()).newPlayer(uuid, name); + this.handle = Main.getVersionSupport().server(Bukkit.getServer()).newPlayer(uuid, name); this.player = handle.getPlayer(); this.ticker = new FakeplayerTicker(this, removeAt); @@ -133,7 +132,7 @@ public class FakePlayer { )); } - var network = NMSFactory.getInstance().network(); + var network = Main.getVersionSupport().network(); network.bindEmptyServerGamePacketListener(Bukkit.getServer(), this.player, address); network.bindEmptyLoginPacketListener(Bukkit.getServer(), this.player, address); diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/entity/FakeplayerTicker.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/entity/FakeplayerTicker.java similarity index 95% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/entity/FakeplayerTicker.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/entity/FakeplayerTicker.java index 8f357a3..3281308 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/entity/FakeplayerTicker.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/entity/FakeplayerTicker.java @@ -1,6 +1,6 @@ -package io.github.hello09x.fakeplayer.entity; +package io.github.hello09x.fakeplayer.core.entity; -import io.github.hello09x.fakeplayer.manager.FakeplayerManager; +import io.github.hello09x.fakeplayer.core.manager.FakeplayerManager; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/entity/SpawnOption.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/entity/SpawnOption.java similarity index 90% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/entity/SpawnOption.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/entity/SpawnOption.java index c6a162d..5f98e3a 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/entity/SpawnOption.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/entity/SpawnOption.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.entity; +package io.github.hello09x.fakeplayer.core.entity; import org.bukkit.Location; import org.jetbrains.annotations.NotNull; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/listener/PlayerListeners.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/listener/PlayerListeners.java similarity index 89% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/listener/PlayerListeners.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/listener/PlayerListeners.java index 5e8733c..2e00875 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/listener/PlayerListeners.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/listener/PlayerListeners.java @@ -1,11 +1,11 @@ -package io.github.hello09x.fakeplayer.listener; +package io.github.hello09x.fakeplayer.core.listener; import com.google.common.base.Throwables; -import io.github.hello09x.fakeplayer.Main; -import io.github.hello09x.fakeplayer.config.FakeplayerConfig; -import io.github.hello09x.fakeplayer.manager.FakeplayerManager; -import io.github.hello09x.fakeplayer.repository.UsedIdRepository; -import io.github.hello09x.fakeplayer.util.InternalAddressGenerator; +import io.github.hello09x.fakeplayer.core.Main; +import io.github.hello09x.fakeplayer.core.config.FakeplayerConfig; +import io.github.hello09x.fakeplayer.core.manager.FakeplayerManager; +import io.github.hello09x.fakeplayer.core.repository.UsedIdRepository; +import io.github.hello09x.fakeplayer.core.util.InternalAddressGenerator; import org.bukkit.attribute.Attribute; import org.bukkit.attribute.AttributeInstance; import org.bukkit.event.EventHandler; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/FakeplayerList.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/FakeplayerList.java similarity index 96% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/FakeplayerList.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/FakeplayerList.java index 03e64d3..8ac9a78 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/FakeplayerList.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/FakeplayerList.java @@ -1,6 +1,6 @@ -package io.github.hello09x.fakeplayer.manager; +package io.github.hello09x.fakeplayer.core.manager; -import io.github.hello09x.fakeplayer.entity.FakePlayer; +import io.github.hello09x.fakeplayer.core.entity.FakePlayer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Unmodifiable; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/FakeplayerManager.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/FakeplayerManager.java similarity index 92% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/FakeplayerManager.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/FakeplayerManager.java index 092a4d0..95ca019 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/FakeplayerManager.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/FakeplayerManager.java @@ -1,22 +1,22 @@ -package io.github.hello09x.fakeplayer.manager; +package io.github.hello09x.fakeplayer.core.manager; import io.github.hello09x.bedrock.command.MessageException; import io.github.hello09x.bedrock.task.Tasks; -import io.github.hello09x.fakeplayer.Main; import io.github.hello09x.fakeplayer.api.action.ActionSetting; import io.github.hello09x.fakeplayer.api.action.ActionType; -import io.github.hello09x.fakeplayer.config.FakeplayerConfig; -import io.github.hello09x.fakeplayer.entity.FakePlayer; -import io.github.hello09x.fakeplayer.entity.SpawnOption; -import io.github.hello09x.fakeplayer.manager.action.ActionManager; -import io.github.hello09x.fakeplayer.manager.naming.NameManager; -import io.github.hello09x.fakeplayer.manager.naming.SequenceName; -import io.github.hello09x.fakeplayer.manager.naming.exception.IllegalCustomNameException; -import io.github.hello09x.fakeplayer.repository.UsedIdRepository; -import io.github.hello09x.fakeplayer.repository.UserConfigRepository; -import io.github.hello09x.fakeplayer.repository.model.Configs; -import io.github.hello09x.fakeplayer.util.AddressUtils; -import io.github.hello09x.fakeplayer.util.Commands; +import io.github.hello09x.fakeplayer.core.Main; +import io.github.hello09x.fakeplayer.core.config.FakeplayerConfig; +import io.github.hello09x.fakeplayer.core.entity.FakePlayer; +import io.github.hello09x.fakeplayer.core.entity.SpawnOption; +import io.github.hello09x.fakeplayer.core.manager.action.ActionManager; +import io.github.hello09x.fakeplayer.core.manager.naming.NameManager; +import io.github.hello09x.fakeplayer.core.manager.naming.SequenceName; +import io.github.hello09x.fakeplayer.core.manager.naming.exception.IllegalCustomNameException; +import io.github.hello09x.fakeplayer.core.repository.UsedIdRepository; +import io.github.hello09x.fakeplayer.core.repository.UserConfigRepository; +import io.github.hello09x.fakeplayer.core.repository.model.Configs; +import io.github.hello09x.fakeplayer.core.util.AddressUtils; +import io.github.hello09x.fakeplayer.core.util.Commands; import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; import org.bukkit.Location; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/WildFakeplayerManager.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/WildFakeplayerManager.java similarity index 96% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/WildFakeplayerManager.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/WildFakeplayerManager.java index 6feecb0..d370de8 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/WildFakeplayerManager.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/WildFakeplayerManager.java @@ -1,8 +1,8 @@ -package io.github.hello09x.fakeplayer.manager; +package io.github.hello09x.fakeplayer.core.manager; import com.google.common.io.ByteStreams; -import io.github.hello09x.fakeplayer.Main; -import io.github.hello09x.fakeplayer.config.FakeplayerConfig; +import io.github.hello09x.fakeplayer.core.Main; +import io.github.hello09x.fakeplayer.core.config.FakeplayerConfig; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.plugin.messaging.PluginMessageListener; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/action/ActionManager.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/action/ActionManager.java similarity index 87% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/action/ActionManager.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/action/ActionManager.java index 7809bc6..a808ed7 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/action/ActionManager.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/action/ActionManager.java @@ -1,9 +1,9 @@ -package io.github.hello09x.fakeplayer.manager.action; +package io.github.hello09x.fakeplayer.core.manager.action; -import io.github.hello09x.fakeplayer.Main; import io.github.hello09x.fakeplayer.api.action.ActionSetting; -import io.github.hello09x.fakeplayer.api.action.ActionTicker; import io.github.hello09x.fakeplayer.api.action.ActionType; +import io.github.hello09x.fakeplayer.api.spi.ActionTicker; +import io.github.hello09x.fakeplayer.core.Main; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; @@ -37,7 +37,7 @@ public class ActionManager { @NotNull ActionSetting setting ) { var managers = this.managers.computeIfAbsent(player.getUniqueId(), key -> new HashMap<>()); - managers.computeIfAbsent(action, key -> ActionTicker.create(player, action, setting)); + managers.computeIfAbsent(action, key -> Main.getVersionSupport().createAction(player, action, setting)); } public void tick() { diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/naming/NameManager.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/naming/NameManager.java similarity index 94% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/naming/NameManager.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/naming/NameManager.java index ac23468..324ede8 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/naming/NameManager.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/naming/NameManager.java @@ -1,9 +1,9 @@ -package io.github.hello09x.fakeplayer.manager.naming; +package io.github.hello09x.fakeplayer.core.manager.naming; -import io.github.hello09x.fakeplayer.Main; -import io.github.hello09x.fakeplayer.config.FakeplayerConfig; -import io.github.hello09x.fakeplayer.manager.naming.exception.IllegalCustomNameException; -import io.github.hello09x.fakeplayer.repository.UsedIdRepository; +import io.github.hello09x.fakeplayer.core.Main; +import io.github.hello09x.fakeplayer.core.config.FakeplayerConfig; +import io.github.hello09x.fakeplayer.core.manager.naming.exception.IllegalCustomNameException; +import io.github.hello09x.fakeplayer.core.repository.UsedIdRepository; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.RandomStringUtils; import org.bukkit.Bukkit; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/naming/NameSource.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/naming/NameSource.java similarity index 95% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/naming/NameSource.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/naming/NameSource.java index 9c1947e..11c2228 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/naming/NameSource.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/naming/NameSource.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.manager.naming; +package io.github.hello09x.fakeplayer.core.manager.naming; import java.util.LinkedList; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/naming/SequenceName.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/naming/SequenceName.java similarity index 86% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/naming/SequenceName.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/naming/SequenceName.java index 071d642..fa8b950 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/naming/SequenceName.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/naming/SequenceName.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.manager.naming; +package io.github.hello09x.fakeplayer.core.manager.naming; import org.jetbrains.annotations.NotNull; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/naming/exception/IllegalCustomNameException.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/naming/exception/IllegalCustomNameException.java similarity index 84% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/naming/exception/IllegalCustomNameException.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/naming/exception/IllegalCustomNameException.java index 4178f78..d100f48 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/manager/naming/exception/IllegalCustomNameException.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/naming/exception/IllegalCustomNameException.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.manager.naming.exception; +package io.github.hello09x.fakeplayer.core.manager.naming.exception; import lombok.Getter; import net.kyori.adventure.text.TextComponent; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/repository/UsedIdRepository.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/repository/UsedIdRepository.java similarity index 95% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/repository/UsedIdRepository.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/repository/UsedIdRepository.java index bdc4242..9803f16 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/repository/UsedIdRepository.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/repository/UsedIdRepository.java @@ -1,7 +1,7 @@ -package io.github.hello09x.fakeplayer.repository; +package io.github.hello09x.fakeplayer.core.repository; import com.google.common.base.Throwables; -import io.github.hello09x.fakeplayer.Main; +import io.github.hello09x.fakeplayer.core.Main; import org.apache.commons.io.IOUtils; import org.jetbrains.annotations.NotNull; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/repository/UserConfigRepository.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/repository/UserConfigRepository.java similarity index 93% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/repository/UserConfigRepository.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/repository/UserConfigRepository.java index a1a4005..ada2f22 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/repository/UserConfigRepository.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/repository/UserConfigRepository.java @@ -1,9 +1,9 @@ -package io.github.hello09x.fakeplayer.repository; +package io.github.hello09x.fakeplayer.core.repository; import io.github.hello09x.bedrock.database.Repository; -import io.github.hello09x.fakeplayer.Main; -import io.github.hello09x.fakeplayer.repository.model.Config; -import io.github.hello09x.fakeplayer.repository.model.UserConfig; +import io.github.hello09x.fakeplayer.core.Main; +import io.github.hello09x.fakeplayer.core.repository.model.Config; +import io.github.hello09x.fakeplayer.core.repository.model.UserConfig; import org.bukkit.plugin.Plugin; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/repository/model/Config.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/repository/model/Config.java similarity index 86% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/repository/model/Config.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/repository/model/Config.java index 379ad78..1986552 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/repository/model/Config.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/repository/model/Config.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.repository.model; +package io.github.hello09x.fakeplayer.core.repository.model; import java.util.List; import java.util.function.Function; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/repository/model/Configs.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/repository/model/Configs.java similarity index 97% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/repository/model/Configs.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/repository/model/Configs.java index d6d7886..a6881d6 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/repository/model/Configs.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/repository/model/Configs.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.repository.model; +package io.github.hello09x.fakeplayer.core.repository.model; import org.jetbrains.annotations.NotNull; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/repository/model/UserConfig.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/repository/model/UserConfig.java similarity index 87% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/repository/model/UserConfig.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/repository/model/UserConfig.java index e0afa25..6530258 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/repository/model/UserConfig.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/repository/model/UserConfig.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.repository.model; +package io.github.hello09x.fakeplayer.core.repository.model; import io.github.hello09x.bedrock.database.Table; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/AddressUtils.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/AddressUtils.java similarity index 91% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/AddressUtils.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/AddressUtils.java index f818abe..a64b0a7 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/AddressUtils.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/AddressUtils.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.util; +package io.github.hello09x.fakeplayer.core.util; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/Commands.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/Commands.java similarity index 96% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/Commands.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/Commands.java index 338efa3..a840c25 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/Commands.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/Commands.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.util; +package io.github.hello09x.fakeplayer.core.util; import org.jetbrains.annotations.NotNull; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/InternalAddressGenerator.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/InternalAddressGenerator.java similarity index 94% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/InternalAddressGenerator.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/InternalAddressGenerator.java index 1b1c3e4..82d8b24 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/InternalAddressGenerator.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/InternalAddressGenerator.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.util; +package io.github.hello09x.fakeplayer.core.util; import lombok.SneakyThrows; import org.jetbrains.annotations.NotNull; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/Mth.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/Mth.java similarity index 94% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/Mth.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/Mth.java index a0c37d1..41189da 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/Mth.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/Mth.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.util; +package io.github.hello09x.fakeplayer.core.util; public class Mth { diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/Teleportor.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/Teleportor.java similarity index 93% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/Teleportor.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/Teleportor.java index 37e9610..bb5927d 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/Teleportor.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/Teleportor.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.util; +package io.github.hello09x.fakeplayer.core.util; import org.bukkit.Location; import org.bukkit.Sound; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/Worlds.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/Worlds.java similarity index 93% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/Worlds.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/Worlds.java index f88ccc3..6abad52 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/Worlds.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/Worlds.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.util; +package io.github.hello09x.fakeplayer.core.util; import org.bukkit.Bukkit; import org.bukkit.World; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/update/Release.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/update/Release.java similarity index 87% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/update/Release.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/update/Release.java index 36bba37..10f35e6 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/update/Release.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/update/Release.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.util.update; +package io.github.hello09x.fakeplayer.core.util.update; import com.google.gson.annotations.SerializedName; import lombok.AllArgsConstructor; diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/update/UpdateChecker.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/update/UpdateChecker.java similarity index 97% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/update/UpdateChecker.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/update/UpdateChecker.java index df7d504..78bb57e 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/util/update/UpdateChecker.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/util/update/UpdateChecker.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.util.update; +package io.github.hello09x.fakeplayer.core.util.update; import com.google.gson.Gson; import org.jetbrains.annotations.NotNull; diff --git a/fakeplayer-core/src/main/resources/plugin.yml b/fakeplayer-core/src/main/resources/plugin.yml index 330348b..8d455ab 100644 --- a/fakeplayer-core/src/main/resources/plugin.yml +++ b/fakeplayer-core/src/main/resources/plugin.yml @@ -1,9 +1,11 @@ name: fakeplayer version: '${project.version}' -main: io.github.hello09x.fakeplayer.Main +main: io.github.hello09x.fakeplayer.core.Main api-version: '1.20' author: hello09x website: 'https://github.com/tanyaofei/minecraft-fakeplayer' +depend: + - CommandAPI permissions: fakeplayer.all: diff --git a/fakeplayer-dist/pom.xml b/fakeplayer-dist/pom.xml new file mode 100644 index 0000000..6c76a50 --- /dev/null +++ b/fakeplayer-dist/pom.xml @@ -0,0 +1,67 @@ + + + 4.0.0 + + io.github.hello09x.fakeplayer + fakeplayer-parent + 0.1.9 + + + fakeplayer-dist + + + 17 + 17 + UTF-8 + + + + + + io.github.hello09x.fakeplayer + fakeplayer-v1_20_R1 + 0.1.9 + + + + io.github.hello09x.fakeplayer + fakeplayer-v1_20_R2 + 0.1.9 + + + + + + ../target + fakeplayer-${version} + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + ${java.version} + ${java.version} + + + + org.apache.maven.plugins + maven-shade-plugin + 3.3.0 + + + package + + shade + + + false + + + + + + + \ No newline at end of file diff --git a/fakeplayer-dist/src/main/resources/META-INF/services/io.github.hello09x.fakeplayer.api.spi.VersionSupport b/fakeplayer-dist/src/main/resources/META-INF/services/io.github.hello09x.fakeplayer.api.spi.VersionSupport new file mode 100644 index 0000000..d326a64 --- /dev/null +++ b/fakeplayer-dist/src/main/resources/META-INF/services/io.github.hello09x.fakeplayer.api.spi.VersionSupport @@ -0,0 +1,2 @@ +io.github.hello09x.fakeplayer.v1_20_R1.spi.VersionSupportImpl +io.github.hello09x.fakeplayer.v1_20_R2.spi.VersionSupportImpl diff --git a/fakeplayer-v1_20_R1/pom.xml b/fakeplayer-v1_20_R1/pom.xml index 63ac686..23fec6a 100644 --- a/fakeplayer-v1_20_R1/pom.xml +++ b/fakeplayer-v1_20_R1/pom.xml @@ -54,41 +54,7 @@ - ../target - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.1 - - ${java.version} - ${java.version} - - - - org.apache.maven.plugins - maven-shade-plugin - 3.3.0 - - - package - - shade - - - false - - - - - - - dev.jorel.commandapi - io.github.hello09x.fakeplayer.shaded.commandapi - - - - net.md-5 specialsource-maven-plugin @@ -128,13 +94,6 @@ - - - src/main/resources - true - - - \ No newline at end of file diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/AttackAction.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/AttackAction.java similarity index 94% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/AttackAction.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/AttackAction.java index 2b2577d..8e060e0 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/AttackAction.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/AttackAction.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.x.action; +package io.github.hello09x.fakeplayer.v1_20_R1.action; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/DropInventoryAction.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/DropInventoryAction.java similarity index 86% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/DropInventoryAction.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/DropInventoryAction.java index 7f060ff..9785224 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/DropInventoryAction.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/DropInventoryAction.java @@ -1,6 +1,6 @@ -package io.github.hello09x.fakeplayer.x.action; +package io.github.hello09x.fakeplayer.v1_20_R1.action; -import io.github.hello09x.fakeplayer.api.action.Action; +import io.github.hello09x.fakeplayer.api.spi.Action; import net.minecraft.server.level.ServerPlayer; import org.jetbrains.annotations.NotNull; diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/DropItemAction.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/DropItemAction.java similarity index 83% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/DropItemAction.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/DropItemAction.java index 8efeb1c..ef6d1a4 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/DropItemAction.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/DropItemAction.java @@ -1,6 +1,6 @@ -package io.github.hello09x.fakeplayer.x.action; +package io.github.hello09x.fakeplayer.v1_20_R1.action; -import io.github.hello09x.fakeplayer.api.action.Action; +import io.github.hello09x.fakeplayer.api.spi.Action; import net.minecraft.server.level.ServerPlayer; import org.jetbrains.annotations.NotNull; diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/DropStackAction.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/DropStackAction.java similarity index 83% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/DropStackAction.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/DropStackAction.java index c5bd5cf..97c27dd 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/DropStackAction.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/DropStackAction.java @@ -1,6 +1,6 @@ -package io.github.hello09x.fakeplayer.x.action; +package io.github.hello09x.fakeplayer.v1_20_R1.action; -import io.github.hello09x.fakeplayer.api.action.Action; +import io.github.hello09x.fakeplayer.api.spi.Action; import net.minecraft.server.level.ServerPlayer; import org.jetbrains.annotations.NotNull; diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/JumpAction.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/JumpAction.java similarity index 85% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/JumpAction.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/JumpAction.java index 0f0d0ab..dbfc807 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/JumpAction.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/JumpAction.java @@ -1,6 +1,6 @@ -package io.github.hello09x.fakeplayer.x.action; +package io.github.hello09x.fakeplayer.v1_20_R1.action; -import io.github.hello09x.fakeplayer.api.action.Action; +import io.github.hello09x.fakeplayer.api.spi.Action; import net.minecraft.server.level.ServerPlayer; import org.jetbrains.annotations.NotNull; diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/MineAction.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/MineAction.java similarity index 97% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/MineAction.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/MineAction.java index 5131fab..69bb70c 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/MineAction.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/MineAction.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.x.action; +package io.github.hello09x.fakeplayer.v1_20_R1.action; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -14,7 +14,7 @@ public class MineAction extends TraceAction { private final Current current = new Current(); - protected MineAction(ServerPlayer player) { + public MineAction(ServerPlayer player) { super(player); } diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/StareEntityAction.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/StareEntityAction.java similarity index 91% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/StareEntityAction.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/StareEntityAction.java index 51b61a1..8d70341 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/StareEntityAction.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/StareEntityAction.java @@ -1,6 +1,6 @@ -package io.github.hello09x.fakeplayer.x.action; +package io.github.hello09x.fakeplayer.v1_20_R1.action; -import io.github.hello09x.fakeplayer.api.action.Action; +import io.github.hello09x.fakeplayer.api.spi.Action; import io.papermc.paper.entity.LookAnchor; import net.minecraft.server.level.ServerPlayer; import org.bukkit.Bukkit; diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/TraceAction.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/TraceAction.java similarity index 75% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/TraceAction.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/TraceAction.java index 07831d0..feaa840 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/TraceAction.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/TraceAction.java @@ -1,7 +1,7 @@ -package io.github.hello09x.fakeplayer.x.action; +package io.github.hello09x.fakeplayer.v1_20_R1.action; -import io.github.hello09x.fakeplayer.api.action.Action; -import io.github.hello09x.fakeplayer.x.action.util.Tracer; +import io.github.hello09x.fakeplayer.api.spi.Action; +import io.github.hello09x.fakeplayer.v1_20_R1.action.util.Tracer; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.phys.HitResult; import org.jetbrains.annotations.NotNull; diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/UseAction.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/UseAction.java similarity index 96% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/UseAction.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/UseAction.java index 1080c3b..bdf89b0 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/UseAction.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/UseAction.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.x.action; +package io.github.hello09x.fakeplayer.v1_20_R1.action; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerPlayer; @@ -12,7 +12,7 @@ public class UseAction extends TraceAction { private final Current current = new Current(); - protected UseAction(@NotNull ServerPlayer player) { + public UseAction(@NotNull ServerPlayer player) { super(player); } diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/util/Tracer.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/util/Tracer.java similarity index 98% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/util/Tracer.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/util/Tracer.java index 4e812e8..f22ef0e 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/util/Tracer.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/action/util/Tracer.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.x.action.util; +package io.github.hello09x.fakeplayer.v1_20_R1.action.util; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.ClipContext; diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/network/EmptyAdvancements.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/network/EmptyAdvancements.java similarity index 96% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/network/EmptyAdvancements.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/network/EmptyAdvancements.java index 6143140..1d4c515 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/network/EmptyAdvancements.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/network/EmptyAdvancements.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.x.network; +package io.github.hello09x.fakeplayer.v1_20_R1.network; import com.mojang.datafixers.DataFixer; import net.minecraft.advancements.Advancement; diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/network/EmptyChannel.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/network/EmptyChannel.java similarity index 97% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/network/EmptyChannel.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/network/EmptyChannel.java index 2857b47..602bddf 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/network/EmptyChannel.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/network/EmptyChannel.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.x.network; +package io.github.hello09x.fakeplayer.v1_20_R1.network; import io.netty.channel.*; import org.jetbrains.annotations.NotNull; diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/network/EmptyConnection.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/network/EmptyConnection.java similarity index 93% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/network/EmptyConnection.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/network/EmptyConnection.java index 437ab53..5b95d26 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/network/EmptyConnection.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/network/EmptyConnection.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.x.network; +package io.github.hello09x.fakeplayer.v1_20_R1.network; import net.minecraft.network.Connection; import net.minecraft.network.PacketSendListener; diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/network/EmptyLoginPacketListener.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/network/EmptyLoginPacketListener.java similarity index 86% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/network/EmptyLoginPacketListener.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/network/EmptyLoginPacketListener.java index 990c266..efbc344 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/network/EmptyLoginPacketListener.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/network/EmptyLoginPacketListener.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.x.network; +package io.github.hello09x.fakeplayer.v1_20_R1.network; import net.minecraft.network.Connection; import net.minecraft.server.MinecraftServer; diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/network/EmptyServerGamePacketListener.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/network/EmptyServerGamePacketListener.java similarity index 91% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/network/EmptyServerGamePacketListener.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/network/EmptyServerGamePacketListener.java index cc19a4f..bd3cede 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/network/EmptyServerGamePacketListener.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/network/EmptyServerGamePacketListener.java @@ -1,4 +1,4 @@ -package io.github.hello09x.fakeplayer.x.network; +package io.github.hello09x.fakeplayer.v1_20_R1.network; import net.minecraft.network.Connection; import net.minecraft.network.protocol.Packet; diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/ActionTicker.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/ActionTickerImpl.java similarity index 72% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/ActionTicker.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/ActionTickerImpl.java index 8f33922..04fd50c 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/action/ActionTicker.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/ActionTickerImpl.java @@ -1,24 +1,41 @@ -package io.github.hello09x.fakeplayer.x.action; +package io.github.hello09x.fakeplayer.v1_20_R1.spi; -import io.github.hello09x.fakeplayer.api.action.Action; import io.github.hello09x.fakeplayer.api.action.ActionSetting; import io.github.hello09x.fakeplayer.api.action.ActionType; -import io.github.hello09x.fakeplayer.x.nms.NMSServerPlayerImpl; +import io.github.hello09x.fakeplayer.api.spi.Action; +import io.github.hello09x.fakeplayer.v1_20_R1.action.*; +import org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; -public class ActionTicker implements io.github.hello09x.fakeplayer.api.action.ActionTicker { +public class ActionTickerImpl implements io.github.hello09x.fakeplayer.api.spi.ActionTicker { /** * 行为类型 */ - public Action action; + private final Action action; /** * 行为设置 */ - public ActionSetting setting; + private final ActionSetting setting; + + public ActionTickerImpl(@NotNull Player player, @NotNull ActionType action, @NotNull ActionSetting setting) { + var handle = ((CraftPlayer) player).getHandle(); + this.action = switch (action) { + case ATTACK -> new AttackAction(handle); + case MINE -> new MineAction(handle); + case USE -> new UseAction(handle); + case JUMP -> new JumpAction(handle); + case LOOK_AT_NEAREST_ENTITY -> new StareEntityAction(handle); + case DROP_ITEM -> new DropItemAction(handle); + case DROP_STACK -> new DropStackAction(handle); + case DROP_INVENTORY -> new DropInventoryAction(handle); + }; + this.setting = setting; + } + @Override public void tick() { @@ -56,22 +73,4 @@ public class ActionTicker implements io.github.hello09x.fakeplayer.api.action.Ac action.stop(); } - @Override - public void init(@NotNull Player player, @NotNull ActionType action, @NotNull ActionSetting setting) { - var handle = new NMSServerPlayerImpl(player).getHandle(); - this.action = switch (action) { - case ATTACK -> new AttackAction(handle); - case MINE -> new MineAction(handle); - case USE -> new UseAction(handle); - case JUMP -> new JumpAction(handle); - case LOOK_AT_NEAREST_ENTITY -> new StareEntityAction(handle); - case DROP_ITEM -> new DropItemAction(handle); - case DROP_STACK -> new DropStackAction(handle); - case DROP_INVENTORY -> new DropInventoryAction(handle); - }; - - this.setting = setting; - } - - } diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/nms/NMSEntityImpl.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/NMSEntityImpl.java similarity index 78% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/nms/NMSEntityImpl.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/NMSEntityImpl.java index 9331b1b..513976f 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/nms/NMSEntityImpl.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/NMSEntityImpl.java @@ -1,6 +1,6 @@ -package io.github.hello09x.fakeplayer.x.nms; +package io.github.hello09x.fakeplayer.v1_20_R1.spi; -import io.github.hello09x.fakeplayer.api.nms.NMSEntity; +import io.github.hello09x.fakeplayer.api.spi.NMSEntity; import lombok.Getter; import net.minecraft.world.entity.Entity; import org.bukkit.craftbukkit.v1_20_R1.entity.CraftEntity; diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/nms/NMSNetworkImpl.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/NMSNetworkImpl.java similarity index 79% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/nms/NMSNetworkImpl.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/NMSNetworkImpl.java index 42db9e5..defd606 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/nms/NMSNetworkImpl.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/NMSNetworkImpl.java @@ -1,9 +1,9 @@ -package io.github.hello09x.fakeplayer.x.nms; +package io.github.hello09x.fakeplayer.v1_20_R1.spi; -import io.github.hello09x.fakeplayer.api.nms.NMSNetwork; -import io.github.hello09x.fakeplayer.x.network.EmptyConnection; -import io.github.hello09x.fakeplayer.x.network.EmptyLoginPacketListener; -import io.github.hello09x.fakeplayer.x.network.EmptyServerGamePacketListener; +import io.github.hello09x.fakeplayer.api.spi.NMSNetwork; +import io.github.hello09x.fakeplayer.v1_20_R1.network.EmptyConnection; +import io.github.hello09x.fakeplayer.v1_20_R1.network.EmptyLoginPacketListener; +import io.github.hello09x.fakeplayer.v1_20_R1.network.EmptyServerGamePacketListener; import net.minecraft.network.protocol.PacketFlow; import org.bukkit.Server; import org.bukkit.craftbukkit.v1_20_R1.CraftServer; diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/nms/NMSServerImpl.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/NMSServerImpl.java similarity index 84% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/nms/NMSServerImpl.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/NMSServerImpl.java index bbf2ea9..93e2e7c 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/nms/NMSServerImpl.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/NMSServerImpl.java @@ -1,8 +1,8 @@ -package io.github.hello09x.fakeplayer.x.nms; +package io.github.hello09x.fakeplayer.v1_20_R1.spi; import com.mojang.authlib.GameProfile; -import io.github.hello09x.fakeplayer.api.nms.NMSServer; -import io.github.hello09x.fakeplayer.api.nms.NMSServerPlayer; +import io.github.hello09x.fakeplayer.api.spi.NMSServer; +import io.github.hello09x.fakeplayer.api.spi.NMSServerPlayer; import lombok.Getter; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/nms/NMSServerLevelImpl.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/NMSServerLevelImpl.java similarity index 84% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/nms/NMSServerLevelImpl.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/NMSServerLevelImpl.java index 683e28b..a9def56 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/nms/NMSServerLevelImpl.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/NMSServerLevelImpl.java @@ -1,6 +1,6 @@ -package io.github.hello09x.fakeplayer.x.nms; +package io.github.hello09x.fakeplayer.v1_20_R1.spi; -import io.github.hello09x.fakeplayer.api.nms.NMSServerLevel; +import io.github.hello09x.fakeplayer.api.spi.NMSServerLevel; import lombok.Getter; import net.minecraft.server.level.ServerLevel; import org.bukkit.Bukkit; diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/nms/NMSServerPlayerImpl.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/NMSServerPlayerImpl.java similarity index 96% rename from fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/nms/NMSServerPlayerImpl.java rename to fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/NMSServerPlayerImpl.java index 43d8a13..41b0634 100644 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/nms/NMSServerPlayerImpl.java +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/NMSServerPlayerImpl.java @@ -1,9 +1,9 @@ -package io.github.hello09x.fakeplayer.x.nms; +package io.github.hello09x.fakeplayer.v1_20_R1.spi; import com.google.common.collect.Iterables; import io.github.hello09x.fakeplayer.api.Reflections; -import io.github.hello09x.fakeplayer.api.nms.NMSServerPlayer; -import io.github.hello09x.fakeplayer.x.network.EmptyAdvancements; +import io.github.hello09x.fakeplayer.api.spi.NMSServerPlayer; +import io.github.hello09x.fakeplayer.v1_20_R1.network.EmptyAdvancements; import lombok.Getter; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.PlayerAdvancements; diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/VersionSupportImpl.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/VersionSupportImpl.java new file mode 100644 index 0000000..9475cf3 --- /dev/null +++ b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/v1_20_R1/spi/VersionSupportImpl.java @@ -0,0 +1,54 @@ +package io.github.hello09x.fakeplayer.v1_20_R1.spi; + +import io.github.hello09x.fakeplayer.api.action.ActionSetting; +import io.github.hello09x.fakeplayer.api.action.ActionType; +import io.github.hello09x.fakeplayer.api.spi.*; +import org.bukkit.Bukkit; +import org.bukkit.Server; +import org.bukkit.World; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +import java.util.Set; + +public class VersionSupportImpl implements VersionSupport { + + private final static Set SUPPORTS = Set.of("1.20", "1.20.1"); + + @Override + public @NotNull NMSEntity entity(@NotNull Entity entity) { + return new NMSEntityImpl(entity); + } + + @Override + public @NotNull NMSServer server(@NotNull Server server) { + return new NMSServerImpl(server); + } + + @Override + public @NotNull NMSServerLevel world(@NotNull World world) { + return new NMSServerLevelImpl(world); + } + + @Override + public @NotNull NMSServerPlayer player(@NotNull Player player) { + return new NMSServerPlayerImpl(player); + } + + @Override + public @NotNull NMSNetwork network() { + return new NMSNetworkImpl(); + } + + @Override + public boolean isSupported() { + return SUPPORTS.contains(Bukkit.getMinecraftVersion()); + } + + @Override + public ActionTicker createAction(@NotNull Player player, @NotNull ActionType action, @NotNull ActionSetting setting) { + return new ActionTickerImpl(player, action, setting); + } + +} diff --git a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/nms/NMSFactoryImpl.java b/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/nms/NMSFactoryImpl.java deleted file mode 100644 index a926bab..0000000 --- a/fakeplayer-v1_20_R1/src/main/java/io/github/hello09x/fakeplayer/x/nms/NMSFactoryImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -package io.github.hello09x.fakeplayer.x.nms; - -import io.github.hello09x.fakeplayer.api.nms.*; -import org.bukkit.Server; -import org.bukkit.World; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -public class NMSFactoryImpl implements NMSFactory { - - @Override - public NMSEntity entity(@NotNull Entity entity) { - return new NMSEntityImpl(entity); - } - - @Override - public NMSServer server(@NotNull Server server) { - return new NMSServerImpl(server); - } - - @Override - public NMSServerLevel world(@NotNull World world) { - return new NMSServerLevelImpl(world); - } - - @Override - public NMSServerPlayer player(@NotNull Player player) { - return new NMSServerPlayerImpl(player); - } - - @Override - public NMSNetwork network() { - return new NMSNetworkImpl(); - } - -} diff --git a/fakeplayer-v1_20_R1/src/main/resources/META-INF/services/io.github.hello09x.fakeplayer.api.action.ActionTicker b/fakeplayer-v1_20_R1/src/main/resources/META-INF/services/io.github.hello09x.fakeplayer.api.action.ActionTicker deleted file mode 100644 index dac980b..0000000 --- a/fakeplayer-v1_20_R1/src/main/resources/META-INF/services/io.github.hello09x.fakeplayer.api.action.ActionTicker +++ /dev/null @@ -1 +0,0 @@ -io.github.hello09x.fakeplayer.x.action.ActionTicker \ No newline at end of file diff --git a/fakeplayer-v1_20_R1/src/main/resources/META-INF/services/io.github.hello09x.fakeplayer.api.nms.NMSFactory b/fakeplayer-v1_20_R1/src/main/resources/META-INF/services/io.github.hello09x.fakeplayer.api.nms.NMSFactory deleted file mode 100644 index 494e2ca..0000000 --- a/fakeplayer-v1_20_R1/src/main/resources/META-INF/services/io.github.hello09x.fakeplayer.api.nms.NMSFactory +++ /dev/null @@ -1 +0,0 @@ -io.github.hello09x.fakeplayer.x.nms.NMSFactoryImpl \ No newline at end of file diff --git a/fakeplayer-v1_20_R2/pom.xml b/fakeplayer-v1_20_R2/pom.xml new file mode 100644 index 0000000..82659fe --- /dev/null +++ b/fakeplayer-v1_20_R2/pom.xml @@ -0,0 +1,99 @@ + + + 4.0.0 + + io.github.hello09x.fakeplayer + fakeplayer-parent + 0.1.9 + + + fakeplayer-v1_20_R2 + + + 17 + 17 + UTF-8 + 1.20.2-R0.1-SNAPSHOT + + + + + io.papermc.paper + paper-api + provided + + + + io.github.hello09x.fakeplayer + fakeplayer-core + 0.1.9 + + + + io.github.hello09x.fakeplayer + fakeplayer-api + 0.1.9 + + + + org.spigotmc + spigot + ${craftbukkit.version} + remapped-mojang + provided + + + + org.projectlombok + lombok + provided + + + + + + + + net.md-5 + specialsource-maven-plugin + 1.2.4 + + + package + + remap + + remap-obf + + org.spigotmc:minecraft-server:${craftbukkit.version}:txt:maps-mojang + true + + org.spigotmc:spigot:${craftbukkit.version}:jar:remapped-mojang + + true + remapped-obf + + + + package + + remap + + remap-spigot + + + ${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar + + org.spigotmc:minecraft-server:${craftbukkit.version}:csrg:maps-spigot + org.spigotmc:spigot:${craftbukkit.version}:jar:remapped-obf + + + + + + + + + \ No newline at end of file diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/AttackAction.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/AttackAction.java new file mode 100644 index 0000000..d79468f --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/AttackAction.java @@ -0,0 +1,49 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.action; + +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.HitResult; + + +public class AttackAction extends TraceAction { + + private final ServerPlayer player; + + public AttackAction(ServerPlayer player) { + super(player); + this.player = player; + } + + + @Override + public boolean tick() { + var hit = this.getTarget(); + if (hit == null) { + return false; + } + + if (hit.getType() != HitResult.Type.ENTITY) { + return false; + } + + var entityHit = (EntityHitResult) hit; + player.attack(entityHit.getEntity()); + player.swing(InteractionHand.MAIN_HAND); + player.resetAttackStrengthTicker(); + player.resetLastActionTime(); + return true; + } + + @Override + public void inactiveTick() { + + } + + @Override + public void stop() { + + } + + +} diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/DropInventoryAction.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/DropInventoryAction.java new file mode 100644 index 0000000..5fb8b58 --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/DropInventoryAction.java @@ -0,0 +1,35 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.action; + +import io.github.hello09x.fakeplayer.api.spi.Action; +import net.minecraft.server.level.ServerPlayer; +import org.jetbrains.annotations.NotNull; + +public class DropInventoryAction implements Action { + + private final ServerPlayer player; + + public DropInventoryAction(@NotNull ServerPlayer player) { + this.player = player; + } + + @Override + public boolean tick() { + var inventory = player.getInventory(); + for (int i = inventory.getContainerSize(); i >= 0; i--) { + player.drop(inventory.removeItem(i, inventory.getItem(i).getCount()), false, true); + } + player.resetLastActionTime(); + return true; + } + + @Override + public void inactiveTick() { + + } + + @Override + public void stop() { + + } + +} diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/DropItemAction.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/DropItemAction.java new file mode 100644 index 0000000..799c096 --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/DropItemAction.java @@ -0,0 +1,33 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.action; + +import io.github.hello09x.fakeplayer.api.spi.Action; +import net.minecraft.server.level.ServerPlayer; +import org.jetbrains.annotations.NotNull; + +public class DropItemAction implements Action { + + private final ServerPlayer player; + + public DropItemAction(@NotNull ServerPlayer player) { + this.player = player; + } + + + @Override + public boolean tick() { + player.resetLastActionTime(); + player.drop(false); + player.resetLastActionTime(); + return true; + } + + @Override + public void inactiveTick() { + + } + + @Override + public void stop() { + + } +} diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/DropStackAction.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/DropStackAction.java new file mode 100644 index 0000000..3ca3bc1 --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/DropStackAction.java @@ -0,0 +1,33 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.action; + +import io.github.hello09x.fakeplayer.api.spi.Action; +import net.minecraft.server.level.ServerPlayer; +import org.jetbrains.annotations.NotNull; + +public class DropStackAction implements Action { + + public final ServerPlayer player; + + public DropStackAction(@NotNull ServerPlayer player) { + this.player = player; + } + + + @Override + public boolean tick() { + player.resetLastActionTime(); + player.drop(true); + player.resetLastActionTime(); + return true; + } + + @Override + public void inactiveTick() { + + } + + @Override + public void stop() { + + } +} diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/JumpAction.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/JumpAction.java new file mode 100644 index 0000000..358aa52 --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/JumpAction.java @@ -0,0 +1,36 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.action; + +import io.github.hello09x.fakeplayer.api.spi.Action; +import net.minecraft.server.level.ServerPlayer; +import org.jetbrains.annotations.NotNull; + +public class JumpAction implements Action { + + private final ServerPlayer player; + + public JumpAction(@NotNull ServerPlayer player) { + this.player = player; + } + + @Override + public boolean tick() { + if (player.onGround()) { + player.jumpFromGround(); + } else { + player.setJumping(true); + } + player.resetLastActionTime(); + return true; + } + + @Override + public void inactiveTick() { + player.setJumping(false); + } + + @Override + public void stop() { + + } + +} diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/MineAction.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/MineAction.java new file mode 100644 index 0000000..031b9a5 --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/MineAction.java @@ -0,0 +1,159 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.action; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.HitResult; +import org.jetbrains.annotations.Nullable; + +import static net.minecraft.network.protocol.game.ServerboundPlayerActionPacket.Action.*; + +public class MineAction extends TraceAction { + + private final Current current = new Current(); + + public MineAction(ServerPlayer player) { + super(player); + } + + @Override + @SuppressWarnings("resource") + public boolean tick() { + var hit = this.getTarget(); + if (hit == null) { + return false; + } + + if (hit.getType() != HitResult.Type.BLOCK) { + return false; + } + + if (current.freeze > 0) { + current.freeze--; + return false; + } + + var blockHit = (BlockHitResult) hit; + var pos = blockHit.getBlockPos(); + var side = blockHit.getDirection(); + + if (player.blockActionRestricted(player.level(), pos, player.gameMode.getGameModeForPlayer())) { + return false; + } + + if (current.pos != null && player.level().getBlockState(current.pos).isAir()) { + current.pos = null; + return false; + } + + var state = player.level().getBlockState(pos); + var broken = false; + if (player.gameMode.getGameModeForPlayer().isCreative()) { + player.gameMode.handleBlockBreakAction( + pos, + START_DESTROY_BLOCK, + side, + player.level().getMaxBuildHeight(), + -1 + ); + current.freeze = 5; + } else if (current.pos == null || !current.pos.equals(pos)) { + if (current.pos != null) { + player.gameMode.handleBlockBreakAction( + current.pos, + ABORT_DESTROY_BLOCK, + side, + player.level().getMaxBuildHeight(), + -1 + ); + } + + player.gameMode.handleBlockBreakAction( + pos, + START_DESTROY_BLOCK, + side, + player.level().getMaxBuildHeight(), + -1 + ); + + if (!state.isAir() && current.progress == 0) { + state.attack(player.level(), pos, player); + } + + if (!state.isAir() && state.getDestroyProgress(player, player.level(), pos) >= 1) { + current.pos = null; + broken = true; + } else { + current.pos = pos; + current.progress = 0; + } + } else { + current.progress += state.getDestroyProgress(player, player.level(), pos); + if (current.progress >= 1) { + player.gameMode.handleBlockBreakAction( + pos, + STOP_DESTROY_BLOCK, + side, + player.level().getMaxBuildHeight(), + -1 + ); + current.pos = null; + current.freeze = 5; + broken = true; + } + player.level().destroyBlockProgress(-1, pos, (int) (current.progress * 10)); + } + + player.resetLastActionTime(); + player.swing(InteractionHand.MAIN_HAND); + return broken; + } + + @Override + public void inactiveTick() { + stop(); + } + + @Override + @SuppressWarnings("resource") + public void stop() { + if (current.pos == null) { + return; + } + + player.level().destroyBlockProgress(-1, current.pos, -1); + player.gameMode.handleBlockBreakAction( + current.pos, + ABORT_DESTROY_BLOCK, + Direction.DOWN, + player.level().getMaxBuildHeight(), + -1 + ); + current.pos = null; + current.freeze = 0; + current.progress = 0; + } + + private static class Current { + + /** + * 当前左键的目标位置 + */ + @Nullable + public BlockPos pos; + + /** + * 破坏方块的进度 + */ + public float progress; + + /** + * 冷却, 单位: tick + */ + public int freeze; + + } + +} diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/StareEntityAction.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/StareEntityAction.java new file mode 100644 index 0000000..57207a3 --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/StareEntityAction.java @@ -0,0 +1,51 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.action; + +import io.github.hello09x.fakeplayer.api.spi.Action; +import io.papermc.paper.entity.LookAnchor; +import net.minecraft.server.level.ServerPlayer; +import org.bukkit.Bukkit; +import org.bukkit.entity.Damageable; +import org.jetbrains.annotations.NotNull; + +public class StareEntityAction implements Action { + + private final ServerPlayer player; + + public StareEntityAction(@NotNull ServerPlayer player) { + this.player = player; + } + + @Override + @SuppressWarnings("UnstableApiUsage") + public boolean tick() { + var bukkitPlayer = Bukkit.getPlayer(player.getUUID()); + if (bukkitPlayer == null) { + return true; + } + + var target = bukkitPlayer + .getNearbyEntities(4.5, 4.5, 4.5) + .stream() + .filter(e -> e instanceof Damageable) + .findAny() + .orElse(null); + + if (target == null) { + return false; + } + + bukkitPlayer.lookAt(target, LookAnchor.EYES, LookAnchor.EYES); + player.resetLastActionTime(); + return true; + } + + @Override + public void inactiveTick() { + + } + + @Override + public void stop() { + + } +} diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/TraceAction.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/TraceAction.java new file mode 100644 index 0000000..d71025b --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/TraceAction.java @@ -0,0 +1,24 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.action; + +import io.github.hello09x.fakeplayer.api.spi.Action; +import io.github.hello09x.fakeplayer.v1_20_R2.action.util.Tracer; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.phys.HitResult; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public abstract class TraceAction implements Action { + + protected final ServerPlayer player; + + protected TraceAction(@NotNull ServerPlayer player) { + this.player = player; + } + + protected @Nullable HitResult getTarget() { + double reach = player.gameMode.isCreative() ? 5 : 4.5f; + return Tracer.rayTrace(player, 1, reach, false); + } + + +} diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/UseAction.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/UseAction.java new file mode 100644 index 0000000..1e0fe00 --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/UseAction.java @@ -0,0 +1,98 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.action; + +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.decoration.ItemFrame; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; +import org.jetbrains.annotations.NotNull; + +public class UseAction extends TraceAction { + + private final Current current = new Current(); + + public UseAction(@NotNull ServerPlayer player) { + super(player); + } + + @Override + @SuppressWarnings("resource") + public boolean tick() { + if (current.freeze > 0) { + current.freeze--; + return false; + } + + if (player.isUsingItem()) { + return true; + } + + var hit = this.getTarget(); + if (hit == null) { + return false; + } + + for (var hand : InteractionHand.values()) { + switch (hit.getType()) { + case BLOCK -> { + player.resetLastActionTime(); + var world = player.serverLevel(); + var blockHit = (BlockHitResult) hit; + var pos = blockHit.getBlockPos(); + var side = blockHit.getDirection(); + if (pos.getY() < player.level().getMaxBuildHeight() - (side == Direction.UP ? 1 : 0) && world.mayInteract(player, pos)) { + var result = player.gameMode.useItemOn(player, world, player.getItemInHand(hand), hand, blockHit); + if (result.consumesAction()) { + player.swing(hand); + current.freeze = 3; + return true; + } + } + } + case ENTITY -> { + player.resetLastActionTime(); + var entityHit = (EntityHitResult) hit; + var entity = entityHit.getEntity(); + boolean handWasEmpty = player.getItemInHand(hand).isEmpty(); + boolean itemFrameEmpty = (entity instanceof ItemFrame) && ((ItemFrame) entity).getItem().isEmpty(); + var pos = entityHit.getLocation().subtract(entity.getX(), entity.getY(), entity.getZ()); + if (entity.interactAt(player, pos, hand).consumesAction()) { + current.freeze = 3; + return true; + } + if (player.interactOn(entity, hand).consumesAction() && !(handWasEmpty && itemFrameEmpty)) { + current.freeze = 3; + return true; + } + } + } + var handItem = player.getItemInHand(hand); + if (player.gameMode.useItem(player, player.level(), handItem, hand).consumesAction()) { + player.resetLastActionTime(); + current.freeze = 3; + return true; + } + } + return false; + } + + @Override + public void inactiveTick() { + this.stop(); + } + + @Override + public void stop() { + current.freeze = 0; + player.releaseUsingItem(); + } + + private final static class Current { + + /** + * 冷却, 单位: tick + */ + public int freeze; + } +} diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/util/Tracer.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/util/Tracer.java new file mode 100644 index 0000000..4bef3ee --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/action/util/Tracer.java @@ -0,0 +1,105 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.action.util; + +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.phys.*; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Predicate; + +/** + * copy from fabric carpet mod + */ +public class Tracer { + + public static @Nullable HitResult rayTrace( + @NotNull Entity source, + float partialTicks, + double reach, + boolean fluids + ) { + var blockHit = rayTraceBlocks(source, partialTicks, reach, fluids); + double maxSqDist = reach * reach; + if (blockHit != null) { + maxSqDist = blockHit.getLocation().distanceToSqr(source.getEyePosition(partialTicks)); + } + EntityHitResult entityHit = rayTraceEntities(source, partialTicks, reach, maxSqDist); + return entityHit == null ? blockHit : entityHit; + } + + @SuppressWarnings("resource") + public static @Nullable BlockHitResult rayTraceBlocks( + @NotNull Entity source, + float partialTicks, + double reach, + boolean fluids + ) { + var pos = source.getEyePosition(partialTicks); + var rotation = source.getViewVector(partialTicks); + var reachEnd = pos.add(rotation.x * reach, rotation.y * reach, rotation.z * reach); + return source.level().clip(new ClipContext(pos, reachEnd, ClipContext.Block.OUTLINE, fluids ? + ClipContext.Fluid.ANY : ClipContext.Fluid.NONE, source)); + } + + public static @Nullable EntityHitResult rayTraceEntities( + @NotNull Entity source, + float partialTicks, + double reach, + double maxSqDist + ) { + var pos = source.getEyePosition(partialTicks); + var reachVec = source.getViewVector(partialTicks).scale(reach); + var box = source.getBoundingBox().expandTowards(reachVec).inflate(1); + return rayTraceEntities(source, + pos, + pos.add(reachVec), + box, + e -> !e.isSpectator() && e.isPickable(), + maxSqDist); + } + + public static @Nullable EntityHitResult rayTraceEntities( + @NotNull Entity source, + @NotNull Vec3 start, + @NotNull Vec3 end, + @NotNull AABB box, + @NotNull Predicate predicate, + double maxSqDistance + ) { + @SuppressWarnings("resource") + var world = source.level(); + double targetDistance = maxSqDistance; + Entity target = null; + Vec3 targetHitPos = null; + for (Entity current : world.getEntities(source, box, predicate)) { + var currentBox = current.getBoundingBox().inflate(current.getPickRadius()); + var currentHit = currentBox.clip(start, end); + if (currentBox.contains(start)) { + if (targetDistance >= 0) { + target = current; + targetHitPos = currentHit.orElse(start); + targetDistance = 0; + } + } else if (currentHit.isPresent()) { + var currentHitPos = currentHit.get(); + var currentDistance = start.distanceToSqr(currentHitPos); + if (currentDistance < targetDistance || targetDistance == 0) { + if (current.getRootVehicle() == source.getRootVehicle()) { + if (targetDistance == 0) { + target = current; + targetHitPos = currentHitPos; + } + } + else + { + target = current; + targetHitPos = currentHitPos; + targetDistance = currentDistance; + } + } + } + } + return target == null ? null : new EntityHitResult(target, targetHitPos); + } +} diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyAdvancements.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyAdvancements.java new file mode 100644 index 0000000..7c2694b --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyAdvancements.java @@ -0,0 +1,63 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.network; + +import com.mojang.datafixers.DataFixer; +import net.minecraft.advancements.AdvancementHolder; +import net.minecraft.advancements.AdvancementProgress; +import net.minecraft.server.PlayerAdvancements; +import net.minecraft.server.ServerAdvancementManager; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.players.PlayerList; + +import java.nio.file.Path; + +public class EmptyAdvancements extends PlayerAdvancements { + + public EmptyAdvancements( + DataFixer datafixer, + PlayerList playerlist, + ServerAdvancementManager manager, + Path path, + ServerPlayer player + ) { + super(datafixer, playerlist, manager, path, player); + this.save(); + } + + @Override + public boolean award(AdvancementHolder advancementholder, String s) { + return false; + } + + @Override + public void flushDirty(ServerPlayer player) { + } + + @Override + public AdvancementProgress getOrStartProgress(AdvancementHolder advancement) { + return new AdvancementProgress(); + } + + @Override + public boolean revoke(AdvancementHolder advancement, String s) { + return false; + } + + @Override + public void save() { + } + + @Override + public void setPlayer(ServerPlayer player) { + } + + @Override + public void setSelectedTab(AdvancementHolder advancement) { + } + + @Override + public void stopListening() { + + } + + +} diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyChannel.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyChannel.java new file mode 100644 index 0000000..3f46a4c --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyChannel.java @@ -0,0 +1,92 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.network; + +import io.netty.channel.*; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.SocketAddress; + +public class EmptyChannel extends AbstractChannel { + private final ChannelConfig config = new DefaultChannelConfig(this); + + private final static EventLoop EVENT_LOOP = new DefaultEventLoop(); + private final InetAddress address; + + public EmptyChannel(@Nullable Channel parent, @NotNull InetAddress address) { + super(parent); + this.address = address; + } + + @Override + public ChannelConfig config() { + config.setAutoRead(true); + return config; + } + + @Override + protected void doBeginRead() throws Exception { + } + + @Override + protected void doBind(SocketAddress arg0) throws Exception { + } + + @Override + protected void doClose() throws Exception { + } + + @Override + protected void doDisconnect() throws Exception { + } + + @Override + protected void doWrite(ChannelOutboundBuffer arg0) throws Exception { + } + + @Override + public boolean isActive() { + return false; + } + + @Override + protected boolean isCompatible(EventLoop arg0) { + return true; + } + + @Override + public boolean isOpen() { + return false; + } + + @Override + protected SocketAddress localAddress0() { + return new InetSocketAddress(address, 25565); + } + + @Override + public ChannelMetadata metadata() { + return new ChannelMetadata(true); + } + + @Override + protected AbstractUnsafe newUnsafe() { + return new AbstractUnsafe() { + @Override + public void connect(SocketAddress remoteAddress, SocketAddress localAddress, ChannelPromise promise) { + safeSetSuccess(promise); + } + }; + } + + @Override + protected SocketAddress remoteAddress0() { + return new InetSocketAddress(address, 25565); + } + + @Override + public EventLoop eventLoop() { + return EVENT_LOOP; + } +} diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyConnection.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyConnection.java new file mode 100644 index 0000000..fa80256 --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyConnection.java @@ -0,0 +1,35 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.network; + +import net.minecraft.network.Connection; +import net.minecraft.network.PacketSendListener; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.PacketFlow; +import org.jetbrains.annotations.NotNull; + +import java.net.InetAddress; + +public class EmptyConnection extends Connection { + public EmptyConnection(@NotNull PacketFlow flag, @NotNull InetAddress address) { + super(flag); + this.channel = new EmptyChannel(null, address); + this.address = this.channel.remoteAddress(); + } + + @Override + public boolean isConnected() { + return true; + } + + @Override + public void send(Packet packet, PacketSendListener listener) { + } + + @Override + public void send(Packet packet) { + } + + @Override + public void handleDisconnection() { + super.handleDisconnection(); + } +} \ No newline at end of file diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyLoginPacketListener.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyLoginPacketListener.java new file mode 100644 index 0000000..cd6c69b --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyLoginPacketListener.java @@ -0,0 +1,12 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.network; + +import net.minecraft.network.Connection; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.network.ServerLoginPacketListenerImpl; + +public class EmptyLoginPacketListener extends ServerLoginPacketListenerImpl { + public EmptyLoginPacketListener(MinecraftServer server, Connection connection) { + super(server, connection); + } + +} diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyServerGamePacketListener.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyServerGamePacketListener.java new file mode 100644 index 0000000..1d0a53a --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/network/EmptyServerGamePacketListener.java @@ -0,0 +1,19 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.network; + +import net.minecraft.network.Connection; +import net.minecraft.network.protocol.Packet; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.network.CommonListenerCookie; +import net.minecraft.server.network.ServerGamePacketListenerImpl; + +public class EmptyServerGamePacketListener extends ServerGamePacketListenerImpl { + public EmptyServerGamePacketListener(MinecraftServer minecraftServer, Connection networkManager, ServerPlayer entityPlayer, CommonListenerCookie commonListenerCookie) { + super(minecraftServer, networkManager, entityPlayer, commonListenerCookie); + } + + @Override + public void send(Packet packet) { + } + +} \ No newline at end of file diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/ActionTickerImpl.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/ActionTickerImpl.java new file mode 100644 index 0000000..56cba51 --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/ActionTickerImpl.java @@ -0,0 +1,76 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.spi; + + +import io.github.hello09x.fakeplayer.api.action.ActionSetting; +import io.github.hello09x.fakeplayer.api.action.ActionType; +import io.github.hello09x.fakeplayer.api.spi.Action; +import io.github.hello09x.fakeplayer.v1_20_R2.action.*; +import org.bukkit.craftbukkit.v1_20_R2.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +public class ActionTickerImpl implements io.github.hello09x.fakeplayer.api.spi.ActionTicker { + + /** + * 行为类型 + */ + private final Action action; + + /** + * 行为设置 + */ + private final ActionSetting setting; + + public ActionTickerImpl(@NotNull Player player, @NotNull ActionType action, @NotNull ActionSetting setting) { + var handle = ((CraftPlayer) player).getHandle(); + this.action = switch (action) { + case ATTACK -> new AttackAction(handle); + case MINE -> new MineAction(handle); + case USE -> new UseAction(handle); + case JUMP -> new JumpAction(handle); + case LOOK_AT_NEAREST_ENTITY -> new StareEntityAction(handle); + case DROP_ITEM -> new DropItemAction(handle); + case DROP_STACK -> new DropStackAction(handle); + case DROP_INVENTORY -> new DropInventoryAction(handle); + }; + this.setting = setting; + } + + + @Override + public void tick() { + if (setting.wait > 0) { + setting.wait--; + inactiveTick(); + return; + } + + if (setting.times == 0) { + inactiveTick(); + return; + } + + var valid = action.tick(); + if (valid) { + if (setting.times > 0) { + setting.times--; + } + setting.wait = setting.interval; + } + } + + public boolean isDone() { + return setting.times <= 0; + } + + @Override + public void inactiveTick() { + action.inactiveTick(); + } + + @Override + public void stop() { + action.stop(); + } + +} diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSEntityImpl.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSEntityImpl.java new file mode 100644 index 0000000..0b6a51f --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSEntityImpl.java @@ -0,0 +1,19 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.spi; + +import io.github.hello09x.fakeplayer.api.spi.NMSEntity; +import lombok.Getter; +import net.minecraft.world.entity.Entity; +import org.bukkit.craftbukkit.v1_20_R2.entity.CraftEntity; +import org.jetbrains.annotations.NotNull; + +public class NMSEntityImpl implements NMSEntity { + + @Getter + private Entity handle; + + public NMSEntityImpl(@NotNull org.bukkit.entity.@NotNull Entity entity) { + this.handle = ((CraftEntity) entity).getHandle(); + } + + +} diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSNetworkImpl.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSNetworkImpl.java new file mode 100644 index 0000000..b60b5a3 --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSNetworkImpl.java @@ -0,0 +1,46 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.spi; + +import io.github.hello09x.fakeplayer.api.spi.NMSNetwork; +import io.github.hello09x.fakeplayer.v1_20_R2.network.EmptyConnection; +import io.github.hello09x.fakeplayer.v1_20_R2.network.EmptyLoginPacketListener; +import io.github.hello09x.fakeplayer.v1_20_R2.network.EmptyServerGamePacketListener; +import net.minecraft.network.protocol.PacketFlow; +import net.minecraft.server.network.CommonListenerCookie; +import org.bukkit.Server; +import org.bukkit.craftbukkit.v1_20_R2.CraftServer; +import org.bukkit.craftbukkit.v1_20_R2.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +import java.net.InetAddress; + +public class NMSNetworkImpl implements NMSNetwork { + + @Override + public void bindEmptyServerGamePacketListener(@NotNull Server server, @NotNull Player player, @NotNull InetAddress address) { + var connect = new EmptyConnection(PacketFlow.CLIENTBOUND, address); + var listener = new EmptyServerGamePacketListener( + ((CraftServer) server).getServer(), + connect, + ((CraftPlayer) player).getHandle(), + CommonListenerCookie.createInitial(((CraftPlayer) player).getProfile()) + ); + connect.setListener(listener); + } + + @Override + public void bindEmptyLoginPacketListener(@NotNull Server server, @NotNull Player player, @NotNull InetAddress address) { + var connect = new EmptyConnection(PacketFlow.CLIENTBOUND, address); + var listener = new EmptyLoginPacketListener( + ((CraftServer) server).getServer(), + connect + ); + ((CraftServer) server).getHandle().placeNewPlayer( + listener.connection, + ((CraftPlayer) player).getHandle(), + CommonListenerCookie.createInitial(((CraftPlayer) player).getProfile()) + ); + connect.setListener(listener); + } + +} diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSServerImpl.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSServerImpl.java new file mode 100644 index 0000000..2768eeb --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSServerImpl.java @@ -0,0 +1,38 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.spi; + +import com.mojang.authlib.GameProfile; +import io.github.hello09x.fakeplayer.api.spi.NMSServer; +import io.github.hello09x.fakeplayer.api.spi.NMSServerPlayer; +import lombok.Getter; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ClientInformation; +import net.minecraft.server.level.ServerPlayer; +import org.bukkit.Bukkit; +import org.bukkit.Server; +import org.bukkit.craftbukkit.v1_20_R2.CraftServer; +import org.jetbrains.annotations.NotNull; + +import java.util.UUID; + +public class NMSServerImpl implements NMSServer { + + + @Getter + private final MinecraftServer handle; + + public NMSServerImpl(@NotNull Server server) { + this.handle = ((CraftServer) server).getServer(); + } + + + @Override + public @NotNull NMSServerPlayer newPlayer(@NotNull UUID uuid, @NotNull String name) { + var handle = new ServerPlayer( + new NMSServerImpl(Bukkit.getServer()).getHandle(), + NMSServerLevelImpl.OVERWORLD.getHandle(), + new GameProfile(uuid, name), + ClientInformation.createDefault() + ); + return new NMSServerPlayerImpl(handle.getBukkitEntity()); + } +} diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSServerLevelImpl.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSServerLevelImpl.java new file mode 100644 index 0000000..7995c45 --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSServerLevelImpl.java @@ -0,0 +1,26 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.spi; + +import io.github.hello09x.fakeplayer.api.spi.NMSServerLevel; +import lombok.Getter; +import net.minecraft.server.level.ServerLevel; +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.craftbukkit.v1_20_R2.CraftWorld; +import org.jetbrains.annotations.NotNull; + +import java.util.Objects; + +public class NMSServerLevelImpl implements NMSServerLevel { + + public final static NMSServerLevelImpl OVERWORLD = new NMSServerLevelImpl( + Objects.requireNonNull(Bukkit.getWorld("world")) + ); + + @Getter + private final ServerLevel handle; + + public NMSServerLevelImpl(@NotNull World world) { + this.handle = ((CraftWorld) world).getHandle(); + } + +} diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSServerPlayerImpl.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSServerPlayerImpl.java new file mode 100644 index 0000000..14fda5e --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/NMSServerPlayerImpl.java @@ -0,0 +1,200 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.spi; + +import com.google.common.collect.Iterables; +import io.github.hello09x.fakeplayer.api.Reflections; +import io.github.hello09x.fakeplayer.api.spi.NMSServerPlayer; +import io.github.hello09x.fakeplayer.v1_20_R2.network.EmptyAdvancements; +import lombok.Getter; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.PlayerAdvancements; +import net.minecraft.server.level.ServerPlayer; +import org.bukkit.Bukkit; +import org.bukkit.craftbukkit.v1_20_R2.entity.CraftPlayer; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; +import org.jetbrains.annotations.NotNull; + +import java.lang.reflect.Field; +import java.util.Optional; + +public class NMSServerPlayerImpl implements NMSServerPlayer { + + private final static Field ServerPlayer$advancements = Reflections.getFirstFieldByType( + ServerPlayer.class, + PlayerAdvancements.class, + false + ); + + @Getter + private final ServerPlayer handle; + + @Getter + private final CraftPlayer player; + + public NMSServerPlayerImpl(@NotNull Player player) { + this.player = ((CraftPlayer) player); + this.handle = ((CraftPlayer) player).getHandle(); + } + + @Override + public double getX() { + return handle.getX(); + } + + @Override + public double getY() { + return handle.getY(); + } + + @Override + public double getZ() { + return handle.getZ(); + } + + @Override + public void setXo(double xo) { + handle.xo = xo; + } + + @Override + public void setYo(double yo) { + handle.yo = yo; + } + + @Override + public void setZo(double zo) { + handle.zo = zo; + } + + @Override + public void doTick() { + handle.doTick(); + ; + } + + @Override + public void absMoveTo(double x, double y, double z, float yRot, float xRot) { + handle.absMoveTo(x, y, z, yRot, xRot); + } + + @Override + public float getYRot() { + return handle.getYRot(); + } + + @Override + public void setYRot(float yRot) { + handle.setYRot(yRot); + } + + @Override + public float getXRot() { + return handle.getXRot(); + } + + @Override + public void setXRot(float xRot) { + handle.setXRot(xRot); + } + + @Override + public void setZza(float zza) { + handle.zza = zza; + } + + @Override + public void setXxa(float xxa) { + handle.xxa = xxa; + } + + @Override + public boolean startRiding(@NotNull Entity entity, boolean flag) { + return handle.startRiding(new NMSEntityImpl(entity).getHandle(), flag); + } + + @Override + public void stopRiding() { + handle.stopRiding(); + } + + + @Override + public int getTickCount() { + return handle.tickCount; + } + + @Override + public void drop(boolean all) { + handle.drop(all); + } + + @Override + public void resetLastActionTime() { + handle.resetLastActionTime(); + } + + @Override + public boolean onGround() { + return handle.onGround(); + } + + @Override + public void jumpFromGround() { + handle.jumpFromGround(); + } + + @Override + public void setJumping(boolean jumping) { + handle.setJumping(jumping); + } + + @Override + public boolean isUsingItem() { + return handle.isUsingItem(); + } + + @Override + public void unpersistAdvancements(@NotNull Plugin plugin) { + if (ServerPlayer$advancements == null) { + return; + } + + var server = new NMSServerImpl(Bukkit.getServer()).getHandle(); + try { + ServerPlayer$advancements.set( + handle, + new EmptyAdvancements( + server.getFixerUpper(), + server.getPlayerList(), + server.getAdvancements(), + plugin.getDataFolder().getParentFile().toPath(), + handle + ) + ); + } catch (IllegalAccessException ignored) { + } + } + + @Override + public void copyTexture(@NotNull Player from) { + var source = new NMSServerPlayerImpl(from).getHandle(); + Optional.of(source) + .map(h -> h.getGameProfile().getProperties().get("textures")) + .map(textures -> Iterables.getFirst(textures, null)) + .ifPresent(texture -> handle.getGameProfile().getProperties().put("textures", texture)); + } + + + @Override + public void drop(int slot, boolean flat, boolean flat1) { + var inventory = handle.getInventory(); + handle.drop(inventory.removeItem(slot, inventory.getItem(slot).getCount()), flat, flat1); + } + + @Override + public void setPlayBefore() { + player.readExtraData(new CompoundTag()); + } + +} diff --git a/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/VersionSupportImpl.java b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/VersionSupportImpl.java new file mode 100644 index 0000000..86ad5e0 --- /dev/null +++ b/fakeplayer-v1_20_R2/src/main/java/io/github/hello09x/fakeplayer/v1_20_R2/spi/VersionSupportImpl.java @@ -0,0 +1,54 @@ +package io.github.hello09x.fakeplayer.v1_20_R2.spi; + +import io.github.hello09x.fakeplayer.api.action.ActionSetting; +import io.github.hello09x.fakeplayer.api.action.ActionType; +import io.github.hello09x.fakeplayer.api.spi.*; +import org.bukkit.Bukkit; +import org.bukkit.Server; +import org.bukkit.World; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +import java.util.Set; + +public class VersionSupportImpl implements VersionSupport { + + private final static Set SUPPORTS = Set.of("1.20.2"); + + @Override + public @NotNull NMSEntity entity(@NotNull Entity entity) { + return new NMSEntityImpl(entity); + } + + @Override + public @NotNull NMSServer server(@NotNull Server server) { + return new NMSServerImpl(server); + } + + @Override + public @NotNull NMSServerLevel world(@NotNull World world) { + return new NMSServerLevelImpl(world); + } + + @Override + public @NotNull NMSServerPlayer player(@NotNull Player player) { + return new NMSServerPlayerImpl(player); + } + + @Override + public @NotNull NMSNetwork network() { + return new NMSNetworkImpl(); + } + + @Override + public boolean isSupported() { + return SUPPORTS.contains(Bukkit.getMinecraftVersion()); + } + + @Override + public ActionTicker createAction(@NotNull Player player, @NotNull ActionType action, @NotNull ActionSetting setting) { + return new ActionTickerImpl(player, action, setting); + } + +} diff --git a/pom.xml b/pom.xml index 779954f..04188f5 100644 --- a/pom.xml +++ b/pom.xml @@ -14,6 +14,8 @@ fakeplayer-api fakeplayer-core fakeplayer-v1_20_R1 + fakeplayer-v1_20_R2 + fakeplayer-dist @@ -69,12 +71,11 @@ provided - - dev.jorel - commandapi-bukkit-shade - 9.0.3 + commandapi-bukkit-core + 9.2.0 + provided