From 8e6084a1fe5264f91cf57d99141820c262015f38 Mon Sep 17 00:00:00 2001 From: Martin Sulikowski Date: Sat, 28 Sep 2024 14:59:33 +0200 Subject: [PATCH 1/7] GH-167 start of normalizing developer api --- .../combat/fight/FightManager.java | 72 ++-------------- .../eternalcode/combat/fight/FightTag.java | 44 ++-------- .../com/eternalcode/combat/CombatPlugin.java | 9 +- .../combat/EternalCombatReloadCommand.java | 0 .../combat/WhitelistBlacklistMode.java | 0 .../combat/bridge/BridgeInitializer.java | 0 .../combat/bridge/BridgeService.java | 0 .../placeholder/FightTagPlaceholder.java | 6 +- .../combat/config/ConfigService.java | 0 .../config/implementation/PluginConfig.java | 0 .../com/eternalcode/combat/drop/Drop.java | 0 .../combat/drop/DropController.java | 0 .../combat/drop/DropKeepInventoryManager.java | 0 .../eternalcode/combat/drop/DropManager.java | 0 .../eternalcode/combat/drop/DropModifier.java | 0 .../eternalcode/combat/drop/DropResult.java | 0 .../eternalcode/combat/drop/DropSettings.java | 0 .../com/eternalcode/combat/drop/DropType.java | 0 .../combat/drop/impl/PercentDropModifier.java | 0 .../drop/impl/PlayersHealthDropModifier.java | 0 .../eternalcode/combat/event/EventCaller.java | 0 .../combat/fight/FightManagerImpl.java | 86 +++++++++++++++++++ .../combat/fight/FightTagCommand.java | 0 .../combat/fight/FightTagImpl.java | 53 ++++++++++++ .../eternalcode/combat/fight/FightTask.java | 2 +- .../combat/fight/bossbar/FightBossBar.java | 0 .../fight/bossbar/FightBossBarRegistry.java | 0 .../fight/bossbar/FightBossBarService.java | 0 .../FightActionBlockerController.java | 0 .../controller/FightMessageController.java | 0 .../fight/controller/FightTagController.java | 0 .../controller/FightUnTagController.java | 2 +- .../fight/effect/FightEffectController.java | 0 .../fight/effect/FightEffectService.java | 0 .../fight/effect/FightEffectSettings.java | 0 .../combat/fight/logout/Logout.java | 0 .../combat/fight/logout/LogoutController.java | 0 .../combat/fight/logout/LogoutService.java | 0 .../fight/pearl/FightPearlController.java | 0 .../combat/fight/pearl/FightPearlManager.java | 0 .../fight/pearl/FightPearlSettings.java | 0 .../fight/tagout/FightTagOutCommand.java | 0 .../fight/tagout/FightTagOutController.java | 0 .../fight/tagout/FightTagOutService.java | 0 .../handler/InvalidUsageHandlerImpl.java | 2 +- .../handler/MissingPermissionHandlerImpl.java | 2 +- .../combat/notification/Notification.java | 0 .../notification/NotificationAnnouncer.java | 0 .../combat/notification/NotificationType.java | 0 .../implementation/ActionBarNotification.java | 0 .../implementation/BossBarNotification.java | 0 .../implementation/ChatNotification.java | 0 .../implementation/SubTitleNotification.java | 0 .../implementation/TitleNotification.java | 0 .../serializer/NotificationSerializer.java | 0 .../combat/region/DefaultRegionProvider.java | 0 .../combat/region/RegionController.java | 0 .../region/WorldGuardRegionProvider.java | 0 .../UpdaterNotificationController.java | 0 .../combat/updater/UpdaterService.java | 0 .../eternalcode/combat/util/DurationUtil.java | 0 .../combat/util/InventoryUtil.java | 0 .../com/eternalcode/combat/util/MathUtil.java | 0 .../combat/util/RemoveItemResult.java | 0 64 files changed, 165 insertions(+), 113 deletions(-) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/EternalCombatReloadCommand.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/WhitelistBlacklistMode.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/bridge/BridgeInitializer.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/bridge/BridgeService.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/bridge/placeholder/FightTagPlaceholder.java (91%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/config/ConfigService.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/config/implementation/PluginConfig.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/drop/Drop.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/drop/DropController.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/drop/DropKeepInventoryManager.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/drop/DropManager.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/drop/DropModifier.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/drop/DropResult.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/drop/DropSettings.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/drop/DropType.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/drop/impl/PercentDropModifier.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/drop/impl/PlayersHealthDropModifier.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/event/EventCaller.java (100%) create mode 100644 eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightManagerImpl.java rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/FightTagCommand.java (100%) create mode 100644 eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightTagImpl.java rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/FightTask.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/bossbar/FightBossBar.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/bossbar/FightBossBarRegistry.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/bossbar/FightBossBarService.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/controller/FightActionBlockerController.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/controller/FightMessageController.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/controller/FightTagController.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/controller/FightUnTagController.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/effect/FightEffectController.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/effect/FightEffectService.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/effect/FightEffectSettings.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/logout/Logout.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/logout/LogoutController.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/logout/LogoutService.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlManager.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlSettings.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutCommand.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutController.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutService.java (100%) rename {eternalcombat-api/src/main/java/com/eternalcode/combat/command => eternalcombat-plugin/src/main/java/com/eternalcode/combat}/handler/InvalidUsageHandlerImpl.java (96%) rename {eternalcombat-api/src/main/java/com/eternalcode/combat/command => eternalcombat-plugin/src/main/java/com/eternalcode/combat}/handler/MissingPermissionHandlerImpl.java (96%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/notification/Notification.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/notification/NotificationAnnouncer.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/notification/NotificationType.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/notification/implementation/ActionBarNotification.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/notification/implementation/BossBarNotification.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/notification/implementation/ChatNotification.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/notification/implementation/SubTitleNotification.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/notification/implementation/TitleNotification.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/notification/serializer/NotificationSerializer.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/region/DefaultRegionProvider.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/region/RegionController.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/region/WorldGuardRegionProvider.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/updater/UpdaterNotificationController.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/updater/UpdaterService.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/util/DurationUtil.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/util/InventoryUtil.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/util/MathUtil.java (100%) rename {eternalcombat-api => eternalcombat-plugin}/src/main/java/com/eternalcode/combat/util/RemoveItemResult.java (100%) diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightManager.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightManager.java index ffb636c4..d63da175 100644 --- a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightManager.java +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightManager.java @@ -4,76 +4,20 @@ import com.eternalcode.combat.fight.event.CauseOfUnTag; import com.eternalcode.combat.fight.event.FightTagEvent; import com.eternalcode.combat.fight.event.FightUntagEvent; -import com.eternalcode.combat.event.EventCaller; - import java.time.Duration; -import java.time.Instant; import java.util.Collection; -import java.util.Collections; -import java.util.Map; import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; -public class FightManager { - - private final Map fights = new ConcurrentHashMap<>(); - private final EventCaller eventCaller; - - public FightManager(EventCaller eventCaller) { - this.eventCaller = eventCaller; - } - - public boolean isInCombat(UUID player) { - if (!this.fights.containsKey(player)) { - return false; - } - - FightTag fightTag = this.fights.get(player); - - return !fightTag.isExpired(); - } - - public FightUntagEvent untag(UUID player, CauseOfUnTag causeOfUnTag) { - FightUntagEvent event = this.eventCaller.publishEvent(new FightUntagEvent(player, causeOfUnTag)); - if (event.isCancelled()) { - return event; - } - - this.fights.remove(player); - return event; - } - - public FightTagEvent tag(UUID target, Duration delay, CauseOfTag causeOfTag) { - return this.tag(target, delay, causeOfTag, null); - } +public interface FightManager { + boolean isInCombat(UUID player); + FightTag getTag(UUID target); + Collection getFights(); @ApiStatus.Experimental - public FightTagEvent tag(UUID target, Duration delay, CauseOfTag causeOfTag, @Nullable UUID tagger) { - FightTagEvent event = this.eventCaller.publishEvent(new FightTagEvent(target, causeOfTag)); - - if (event.isCancelled()) { - return event; - } - Instant now = Instant.now(); - Instant endOfCombatLog = now.plus(delay); - - FightTag fightTag = new FightTag(target, endOfCombatLog, tagger); - - this.fights.put(target, fightTag); - return event; - } - - public Collection getFights() { - return Collections.unmodifiableCollection(this.fights.values()); - } - - public FightTag getTag(UUID target) { - return this.fights.get(target); - } - - public void untagAll() { - this.fights.clear(); - } + FightTagEvent tag(UUID target, Duration delay, CauseOfTag causeOfTag, @Nullable UUID tagger); + FightTagEvent tag(UUID target, Duration delay, CauseOfTag causeOfTag); + FightUntagEvent untag(UUID player, CauseOfUnTag causeOfUnTag); + void untagAll(); } diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightTag.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightTag.java index c28bbcb8..dda9817e 100644 --- a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightTag.java +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightTag.java @@ -6,44 +6,12 @@ import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; -public class FightTag { - - private final UUID taggedPlayer; - private final Instant endOfCombatLog; - private final @Nullable UUID tagger; - - FightTag(UUID personToAddCombat, Instant endOfCombatLog, @Nullable UUID tagger) { - this.taggedPlayer = personToAddCombat; - this.endOfCombatLog = endOfCombatLog; - this.tagger = tagger; - } - - public UUID getTaggedPlayer() { - return this.taggedPlayer; - } - - public Instant getEndOfCombatLog() { - return this.endOfCombatLog; - } - - public boolean isExpired() { - return Instant.now().isAfter(this.endOfCombatLog); - } - - public Duration getRemainingDuration() { - Duration between = Duration.between(Instant.now(), this.endOfCombatLog); - - if (between.isNegative()) { - return Duration.ZERO; - } - - return between; - } - +public interface FightTag { @Nullable @ApiStatus.Experimental - public UUID getTagger() { - return this.tagger; - } - + UUID getTagger(); + Duration getRemainingDuration(); + boolean isExpired(); + Instant getEndOfCombatLog(); + UUID getTaggedPlayer(); } diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/CombatPlugin.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/CombatPlugin.java index 4c30af7a..41bf4d27 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/CombatPlugin.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/CombatPlugin.java @@ -1,8 +1,9 @@ package com.eternalcode.combat; import com.eternalcode.combat.bridge.BridgeService; -import com.eternalcode.combat.command.handler.InvalidUsageHandlerImpl; -import com.eternalcode.combat.command.handler.MissingPermissionHandlerImpl; +import com.eternalcode.combat.fight.FightManager; +import com.eternalcode.combat.handler.InvalidUsageHandlerImpl; +import com.eternalcode.combat.handler.MissingPermissionHandlerImpl; import com.eternalcode.combat.config.ConfigService; import com.eternalcode.combat.config.implementation.PluginConfig; import com.eternalcode.combat.drop.DropController; @@ -17,7 +18,7 @@ import com.eternalcode.combat.fight.controller.FightUnTagController; import com.eternalcode.combat.fight.effect.FightEffectController; import com.eternalcode.combat.event.EventCaller; -import com.eternalcode.combat.fight.FightManager; +import com.eternalcode.combat.fight.FightManagerImpl; import com.eternalcode.combat.fight.FightTask; import com.eternalcode.combat.fight.bossbar.FightBossBarService; import com.eternalcode.combat.fight.effect.FightEffectService; @@ -86,7 +87,7 @@ public void onEnable() { this.pluginConfig = configService.create(PluginConfig.class, new File(dataFolder, "config.yml")); - this.fightManager = new FightManager(eventCaller); + this.fightManager = new FightManagerImpl(eventCaller); this.fightPearlManager = new FightPearlManager(this.pluginConfig.pearl); this.fightTagOutService = new FightTagOutService(); this.fightEffectService = new FightEffectService(); diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/EternalCombatReloadCommand.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/EternalCombatReloadCommand.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/EternalCombatReloadCommand.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/EternalCombatReloadCommand.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/WhitelistBlacklistMode.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/WhitelistBlacklistMode.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/WhitelistBlacklistMode.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/WhitelistBlacklistMode.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/bridge/BridgeInitializer.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/bridge/BridgeInitializer.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/bridge/BridgeInitializer.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/bridge/BridgeInitializer.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/bridge/BridgeService.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/bridge/BridgeService.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/bridge/BridgeService.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/bridge/BridgeService.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/bridge/placeholder/FightTagPlaceholder.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/bridge/placeholder/FightTagPlaceholder.java similarity index 91% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/bridge/placeholder/FightTagPlaceholder.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/bridge/placeholder/FightTagPlaceholder.java index f605c356..aa51dc90 100644 --- a/eternalcombat-api/src/main/java/com/eternalcode/combat/bridge/placeholder/FightTagPlaceholder.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/bridge/placeholder/FightTagPlaceholder.java @@ -50,13 +50,13 @@ public boolean canRegister() { public String onRequest(OfflinePlayer player, String identifier) { if (identifier.equals("remaining_seconds")) { return this.getFightTag(player) - .map(fightTag -> DurationUtil.format(fightTag.getRemainingDuration())) + .map(fightTagInter -> DurationUtil.format(fightTagInter.getRemainingDuration())) .orElse(""); } if (identifier.equals("remaining_millis")) { return this.getFightTag(player) - .map(fightTag -> DurationParser.TIME_UNITS.format(fightTag.getRemainingDuration())) + .map(fightTagInter -> DurationParser.TIME_UNITS.format(fightTagInter.getRemainingDuration())) .orElse(""); } @@ -77,7 +77,7 @@ public String onRequest(OfflinePlayer player, String identifier) { private @NotNull Optional getTagger(OfflinePlayer player) { return this.getFightTag(player) - .map(fightTag -> fightTag.getTagger()) + .map(fightTagInter -> fightTagInter.getTagger()) .map(taggerId -> this.server.getPlayer(taggerId)); } diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/config/ConfigService.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/config/ConfigService.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/config/ConfigService.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/config/ConfigService.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/config/implementation/PluginConfig.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/config/implementation/PluginConfig.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/config/implementation/PluginConfig.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/config/implementation/PluginConfig.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/drop/Drop.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/Drop.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/drop/Drop.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/Drop.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/drop/DropController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropController.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/drop/DropController.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropController.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/drop/DropKeepInventoryManager.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropKeepInventoryManager.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/drop/DropKeepInventoryManager.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropKeepInventoryManager.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/drop/DropManager.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropManager.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/drop/DropManager.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropManager.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/drop/DropModifier.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropModifier.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/drop/DropModifier.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropModifier.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/drop/DropResult.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropResult.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/drop/DropResult.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropResult.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/drop/DropSettings.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropSettings.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/drop/DropSettings.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropSettings.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/drop/DropType.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropType.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/drop/DropType.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropType.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/drop/impl/PercentDropModifier.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/impl/PercentDropModifier.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/drop/impl/PercentDropModifier.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/impl/PercentDropModifier.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/drop/impl/PlayersHealthDropModifier.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/impl/PlayersHealthDropModifier.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/drop/impl/PlayersHealthDropModifier.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/impl/PlayersHealthDropModifier.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/event/EventCaller.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/event/EventCaller.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/event/EventCaller.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/event/EventCaller.java diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightManagerImpl.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightManagerImpl.java new file mode 100644 index 00000000..67ad0643 --- /dev/null +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightManagerImpl.java @@ -0,0 +1,86 @@ +package com.eternalcode.combat.fight; + +import com.eternalcode.combat.event.EventCaller; + +import com.eternalcode.combat.fight.event.CauseOfTag; +import com.eternalcode.combat.fight.event.CauseOfUnTag; +import com.eternalcode.combat.fight.event.FightTagEvent; +import com.eternalcode.combat.fight.event.FightUntagEvent; +import java.time.Duration; +import java.time.Instant; +import java.util.Collection; +import java.util.Collections; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.Nullable; + +public class FightManagerImpl implements FightManager { + + private final Map fights = new ConcurrentHashMap<>(); + private final EventCaller eventCaller; + + public FightManagerImpl(EventCaller eventCaller) { + this.eventCaller = eventCaller; + } + + @Override + public boolean isInCombat(UUID player) { + if (!this.fights.containsKey(player)) { + return false; + } + + FightTag fightTag = this.fights.get(player); + + return !fightTag.isExpired(); + } + + @Override + public FightUntagEvent untag(UUID player, CauseOfUnTag causeOfUnTag) { + FightUntagEvent event = this.eventCaller.publishEvent(new FightUntagEvent(player, causeOfUnTag)); + if (event.isCancelled()) { + return event; + } + + this.fights.remove(player); + return event; + } + + @Override + public FightTagEvent tag(UUID target, Duration delay, CauseOfTag causeOfTag) { + return this.tag(target, delay, causeOfTag, null); + } + + @ApiStatus.Experimental + @Override + public FightTagEvent tag(UUID target, Duration delay, CauseOfTag causeOfTag, @Nullable UUID tagger) { + FightTagEvent event = this.eventCaller.publishEvent(new FightTagEvent(target, causeOfTag)); + + if (event.isCancelled()) { + return event; + } + Instant now = Instant.now(); + Instant endOfCombatLog = now.plus(delay); + + FightTag fightTag = new FightTagImpl(target, endOfCombatLog, tagger); + + this.fights.put(target, fightTag); + return event; + } + + @Override + public Collection getFights() { + return Collections.unmodifiableCollection(this.fights.values()); + } + + @Override + public FightTag getTag(UUID target) { + return this.fights.get(target); + } + + @Override + public void untagAll() { + this.fights.clear(); + } +} diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightTagCommand.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightTagCommand.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightTagCommand.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightTagCommand.java diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightTagImpl.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightTagImpl.java new file mode 100644 index 00000000..3e71b3f2 --- /dev/null +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightTagImpl.java @@ -0,0 +1,53 @@ +package com.eternalcode.combat.fight; + +import java.time.Duration; +import java.time.Instant; +import java.util.UUID; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.Nullable; + +public class FightTagImpl implements FightTag { + + private final UUID taggedPlayer; + private final Instant endOfCombatLog; + private final @Nullable UUID tagger; + + FightTagImpl(UUID personToAddCombat, Instant endOfCombatLog, @Nullable UUID tagger) { + this.taggedPlayer = personToAddCombat; + this.endOfCombatLog = endOfCombatLog; + this.tagger = tagger; + } + + @Override + public UUID getTaggedPlayer() { + return this.taggedPlayer; + } + + @Override + public Instant getEndOfCombatLog() { + return this.endOfCombatLog; + } + + @Override + public boolean isExpired() { + return Instant.now().isAfter(this.endOfCombatLog); + } + + @Override + public Duration getRemainingDuration() { + Duration between = Duration.between(Instant.now(), this.endOfCombatLog); + + if (between.isNegative()) { + return Duration.ZERO; + } + + return between; + } + + @ApiStatus.Experimental + @Override + public @Nullable UUID getTagger() { + return this.tagger; + } + +} diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightTask.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightTask.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightTask.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightTask.java index 6b4fa79c..0ffe7bd9 100644 --- a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightTask.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightTask.java @@ -1,8 +1,8 @@ package com.eternalcode.combat.fight; -import com.eternalcode.combat.fight.event.CauseOfUnTag; import com.eternalcode.combat.config.implementation.PluginConfig; import com.eternalcode.combat.fight.bossbar.FightBossBarService; +import com.eternalcode.combat.fight.event.CauseOfUnTag; import com.eternalcode.combat.notification.Notification; import com.eternalcode.combat.notification.NotificationAnnouncer; import com.eternalcode.combat.notification.implementation.BossBarNotification; diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/bossbar/FightBossBar.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/bossbar/FightBossBar.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/bossbar/FightBossBar.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/bossbar/FightBossBar.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/bossbar/FightBossBarRegistry.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/bossbar/FightBossBarRegistry.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/bossbar/FightBossBarRegistry.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/bossbar/FightBossBarRegistry.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/bossbar/FightBossBarService.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/bossbar/FightBossBarService.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/bossbar/FightBossBarService.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/bossbar/FightBossBarService.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/controller/FightActionBlockerController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/controller/FightActionBlockerController.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/controller/FightActionBlockerController.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/controller/FightActionBlockerController.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/controller/FightMessageController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/controller/FightMessageController.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/controller/FightMessageController.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/controller/FightMessageController.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/controller/FightTagController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/controller/FightTagController.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/controller/FightTagController.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/controller/FightTagController.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/controller/FightUnTagController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/controller/FightUnTagController.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/controller/FightUnTagController.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/controller/FightUnTagController.java index 1e0157b1..a84e6025 100644 --- a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/controller/FightUnTagController.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/controller/FightUnTagController.java @@ -1,8 +1,8 @@ package com.eternalcode.combat.fight.controller; +import com.eternalcode.combat.fight.FightManager; import com.eternalcode.combat.fight.event.CauseOfUnTag; import com.eternalcode.combat.config.implementation.PluginConfig; -import com.eternalcode.combat.fight.FightManager; import com.eternalcode.combat.fight.logout.LogoutService; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/effect/FightEffectController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/effect/FightEffectController.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/effect/FightEffectController.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/effect/FightEffectController.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/effect/FightEffectService.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/effect/FightEffectService.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/effect/FightEffectService.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/effect/FightEffectService.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/effect/FightEffectSettings.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/effect/FightEffectSettings.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/effect/FightEffectSettings.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/effect/FightEffectSettings.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/logout/Logout.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/logout/Logout.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/logout/Logout.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/logout/Logout.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/logout/LogoutController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/logout/LogoutController.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/logout/LogoutController.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/logout/LogoutController.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/logout/LogoutService.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/logout/LogoutService.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/logout/LogoutService.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/logout/LogoutService.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlManager.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlManager.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlManager.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlManager.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlSettings.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlSettings.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlSettings.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlSettings.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutCommand.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutCommand.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutCommand.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutCommand.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutController.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutController.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutController.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutService.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutService.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutService.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutService.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/command/handler/InvalidUsageHandlerImpl.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/handler/InvalidUsageHandlerImpl.java similarity index 96% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/command/handler/InvalidUsageHandlerImpl.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/handler/InvalidUsageHandlerImpl.java index 8aebba22..a9546f74 100644 --- a/eternalcombat-api/src/main/java/com/eternalcode/combat/command/handler/InvalidUsageHandlerImpl.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/handler/InvalidUsageHandlerImpl.java @@ -1,4 +1,4 @@ -package com.eternalcode.combat.command.handler; +package com.eternalcode.combat.handler; import com.eternalcode.combat.config.implementation.PluginConfig; import com.eternalcode.combat.notification.NotificationAnnouncer; diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/command/handler/MissingPermissionHandlerImpl.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/handler/MissingPermissionHandlerImpl.java similarity index 96% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/command/handler/MissingPermissionHandlerImpl.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/handler/MissingPermissionHandlerImpl.java index 93f669f3..0466f22b 100644 --- a/eternalcombat-api/src/main/java/com/eternalcode/combat/command/handler/MissingPermissionHandlerImpl.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/handler/MissingPermissionHandlerImpl.java @@ -1,4 +1,4 @@ -package com.eternalcode.combat.command.handler; +package com.eternalcode.combat.handler; import com.eternalcode.combat.config.implementation.PluginConfig; import com.eternalcode.combat.notification.NotificationAnnouncer; diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/notification/Notification.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/notification/Notification.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/notification/Notification.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/notification/Notification.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/notification/NotificationAnnouncer.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/notification/NotificationAnnouncer.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/notification/NotificationAnnouncer.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/notification/NotificationAnnouncer.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/notification/NotificationType.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/notification/NotificationType.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/notification/NotificationType.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/notification/NotificationType.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/notification/implementation/ActionBarNotification.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/notification/implementation/ActionBarNotification.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/notification/implementation/ActionBarNotification.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/notification/implementation/ActionBarNotification.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/notification/implementation/BossBarNotification.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/notification/implementation/BossBarNotification.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/notification/implementation/BossBarNotification.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/notification/implementation/BossBarNotification.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/notification/implementation/ChatNotification.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/notification/implementation/ChatNotification.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/notification/implementation/ChatNotification.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/notification/implementation/ChatNotification.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/notification/implementation/SubTitleNotification.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/notification/implementation/SubTitleNotification.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/notification/implementation/SubTitleNotification.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/notification/implementation/SubTitleNotification.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/notification/implementation/TitleNotification.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/notification/implementation/TitleNotification.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/notification/implementation/TitleNotification.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/notification/implementation/TitleNotification.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/notification/serializer/NotificationSerializer.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/notification/serializer/NotificationSerializer.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/notification/serializer/NotificationSerializer.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/notification/serializer/NotificationSerializer.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/region/DefaultRegionProvider.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/region/DefaultRegionProvider.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/region/DefaultRegionProvider.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/region/DefaultRegionProvider.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/region/RegionController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/region/RegionController.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/region/RegionController.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/region/RegionController.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/region/WorldGuardRegionProvider.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/region/WorldGuardRegionProvider.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/region/WorldGuardRegionProvider.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/region/WorldGuardRegionProvider.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/updater/UpdaterNotificationController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/updater/UpdaterNotificationController.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/updater/UpdaterNotificationController.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/updater/UpdaterNotificationController.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/updater/UpdaterService.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/updater/UpdaterService.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/updater/UpdaterService.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/updater/UpdaterService.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/util/DurationUtil.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/util/DurationUtil.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/util/DurationUtil.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/util/DurationUtil.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/util/InventoryUtil.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/util/InventoryUtil.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/util/InventoryUtil.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/util/InventoryUtil.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/util/MathUtil.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/util/MathUtil.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/util/MathUtil.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/util/MathUtil.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/util/RemoveItemResult.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/util/RemoveItemResult.java similarity index 100% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/util/RemoveItemResult.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/util/RemoveItemResult.java From e760964bb66d08653995f1751e688fc076cbf6b5 Mon Sep 17 00:00:00 2001 From: Martin Sulikowski Date: Sun, 29 Sep 2024 01:12:14 +0200 Subject: [PATCH 2/7] Extract all of services to interfaces --- eternalcombat-api/build.gradle.kts | 38 +------------ .../eternalcode/combat/EternalCombatApi.java | 15 ++--- .../combat/fight/FightManager.java | 6 ++ .../eternalcode/combat/fight/FightTag.java | 5 ++ .../eternalcode/combat/fight}/drop/Drop.java | 2 +- .../fight/drop/DropKeepInventoryManager.java | 16 ++++++ .../combat/fight}/drop/DropModifier.java | 2 +- .../combat/fight}/drop/DropResult.java | 2 +- .../combat/fight/drop/DropService.java | 8 +++ .../combat/fight}/drop/DropType.java | 2 +- .../fight/effect/FightEffectService.java | 25 +++++++++ .../combat/fight/event/CauseOfTag.java | 17 ++++++ .../combat/fight/event/CauseOfUnTag.java | 27 +++++++++ .../combat/fight/event/FightTagEvent.java | 44 ++++++++------- .../combat/fight/event/FightUntagEvent.java | 32 ++++++++--- .../combat/fight/pearl/FightPearlService.java | 16 ++++++ .../fight/tagout/FightTagOutService.java | 13 +++++ eternalcombat-plugin/build.gradle.kts | 36 ++++++++++++ .../com/eternalcode/combat/CombatPlugin.java | 56 +++++++++---------- .../config/implementation/PluginConfig.java | 2 +- .../{ => fight}/drop/DropController.java | 10 ++-- .../drop/DropKeepInventoryManagerImpl.java} | 9 ++- .../drop/DropServiceImpl.java} | 8 ++- .../combat/{ => fight}/drop/DropSettings.java | 3 +- .../drop/impl/PercentDropModifier.java | 12 ++-- .../drop/impl/PlayersHealthDropModifier.java | 12 ++-- ...rvice.java => FightEffectServiceImpl.java} | 8 ++- .../fight/pearl/FightPearlController.java | 12 ++-- ...anager.java => FightPearlServiceImpl.java} | 8 ++- ...rvice.java => FightTagOutServiceImpl.java} | 5 +- 30 files changed, 311 insertions(+), 140 deletions(-) rename {eternalcombat-plugin/src/main/java/com/eternalcode/combat => eternalcombat-api/src/main/java/com/eternalcode/combat/fight}/drop/Drop.java (97%) create mode 100644 eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropKeepInventoryManager.java rename {eternalcombat-plugin/src/main/java/com/eternalcode/combat => eternalcombat-api/src/main/java/com/eternalcode/combat/fight}/drop/DropModifier.java (70%) rename {eternalcombat-plugin/src/main/java/com/eternalcode/combat => eternalcombat-api/src/main/java/com/eternalcode/combat/fight}/drop/DropResult.java (91%) create mode 100644 eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropService.java rename {eternalcombat-plugin/src/main/java/com/eternalcode/combat => eternalcombat-api/src/main/java/com/eternalcode/combat/fight}/drop/DropType.java (63%) create mode 100644 eternalcombat-api/src/main/java/com/eternalcode/combat/fight/effect/FightEffectService.java create mode 100644 eternalcombat-api/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlService.java create mode 100644 eternalcombat-api/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutService.java rename eternalcombat-plugin/src/main/java/com/eternalcode/combat/{ => fight}/drop/DropController.java (90%) rename eternalcombat-plugin/src/main/java/com/eternalcode/combat/{drop/DropKeepInventoryManager.java => fight/drop/DropKeepInventoryManagerImpl.java} (79%) rename eternalcombat-plugin/src/main/java/com/eternalcode/combat/{drop/DropManager.java => fight/drop/DropServiceImpl.java} (86%) rename eternalcombat-plugin/src/main/java/com/eternalcode/combat/{ => fight}/drop/DropSettings.java (92%) rename eternalcombat-plugin/src/main/java/com/eternalcode/combat/{ => fight}/drop/impl/PercentDropModifier.java (78%) rename eternalcombat-plugin/src/main/java/com/eternalcode/combat/{ => fight}/drop/impl/PlayersHealthDropModifier.java (86%) rename eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/effect/{FightEffectService.java => FightEffectServiceImpl.java} (93%) rename eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/{FightPearlManager.java => FightPearlServiceImpl.java} (84%) rename eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/{FightTagOutService.java => FightTagOutServiceImpl.java} (86%) diff --git a/eternalcombat-api/build.gradle.kts b/eternalcombat-api/build.gradle.kts index 3ddc75f2..b6911a26 100644 --- a/eternalcombat-api/build.gradle.kts +++ b/eternalcombat-api/build.gradle.kts @@ -8,41 +8,5 @@ plugins { dependencies { // Spigot api compileOnlyApi("org.spigotmc:spigot-api:${Versions.SPIGOT_API}") - - // kyori - api("net.kyori:adventure-platform-bukkit:${Versions.ADVENTURE_PLATFORM_BUKKIT}") - api("net.kyori:adventure-text-minimessage:${Versions.ADVENTURE_TEXT_MINIMESSAGE}") - - // litecommands - api("dev.rollczi:litecommands-bukkit:${Versions.LITE_COMMANDS}") - - // Okaeri configs - api("eu.okaeri:okaeri-configs-yaml-bukkit:${Versions.OKAERI_CONFIGS_YAML_BUKKIT}") - api("eu.okaeri:okaeri-configs-serdes-commons:${Versions.OKAERI_CONFIGS_SERDES_COMMONS}") - api("eu.okaeri:okaeri-configs-serdes-bukkit:${Versions.OKAERI_CONFIGS_SERDES_BUKKIT}") - - // Panda utilities - api("org.panda-lang:panda-utilities:${Versions.PANDA_UTILITIES}") - - // GitCheck - api("com.eternalcode:gitcheck:${Versions.GIT_CHECK}") - - // commons - api("commons-io:commons-io:${Versions.APACHE_COMMONS}") - - // bstats - api("org.bstats:bstats-bukkit:${Versions.B_STATS_BUKKIT}") - - // caffeine - api("com.github.ben-manes.caffeine:caffeine:${Versions.CAFFEINE}") - - api("com.eternalcode:eternalcode-commons-bukkit:${Versions.ETERNALCODE_COMMONS}") - api("com.eternalcode:eternalcode-commons-adventure:${Versions.ETERNALCODE_COMMONS}") - - // worldguard - compileOnly("com.sk89q.worldguard:worldguard-bukkit:${Versions.WORLD_GUARD_BUKKIT}") - - // PlaceholderAPI - compileOnlyApi("me.clip:placeholderapi:${Versions.PLACEHOLDER_API}") - + api("org.jetbrains:annotations:${Versions.JETBRAINS_ANNOTATIONS}") } diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/EternalCombatApi.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/EternalCombatApi.java index bdd26e26..f014cce3 100644 --- a/eternalcombat-api/src/main/java/com/eternalcode/combat/EternalCombatApi.java +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/EternalCombatApi.java @@ -1,13 +1,12 @@ package com.eternalcode.combat; -import com.eternalcode.combat.config.implementation.PluginConfig; -import com.eternalcode.combat.drop.DropKeepInventoryManager; -import com.eternalcode.combat.drop.DropManager; +import com.eternalcode.combat.fight.drop.DropKeepInventoryManager; import com.eternalcode.combat.fight.FightManager; +import com.eternalcode.combat.fight.drop.DropService; import com.eternalcode.combat.fight.effect.FightEffectService; -import com.eternalcode.combat.fight.pearl.FightPearlManager; -import com.eternalcode.combat.fight.tagout.FightTagOutService; +import com.eternalcode.combat.fight.pearl.FightPearlService; import com.eternalcode.combat.region.RegionProvider; +import com.eternalcode.combat.fight.tagout.FightTagOutService; public interface EternalCombatApi { @@ -15,16 +14,14 @@ public interface EternalCombatApi { RegionProvider getRegionProvider(); - FightPearlManager getFightPearlManager(); + FightPearlService getFightPearlManager(); FightTagOutService getFightTagOutService(); FightEffectService getFightEffectService(); - DropManager getDropManager(); + DropService getDropService(); DropKeepInventoryManager getDropKeepInventoryManager(); - PluginConfig getPluginConfig(); - } diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightManager.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightManager.java index d63da175..49a58967 100644 --- a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightManager.java +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightManager.java @@ -13,11 +13,17 @@ public interface FightManager { boolean isInCombat(UUID player); + FightTag getTag(UUID target); + Collection getFights(); + @ApiStatus.Experimental FightTagEvent tag(UUID target, Duration delay, CauseOfTag causeOfTag, @Nullable UUID tagger); + FightTagEvent tag(UUID target, Duration delay, CauseOfTag causeOfTag); + FightUntagEvent untag(UUID player, CauseOfUnTag causeOfUnTag); + void untagAll(); } diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightTag.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightTag.java index dda9817e..f16103f0 100644 --- a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightTag.java +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/FightTag.java @@ -7,11 +7,16 @@ import org.jetbrains.annotations.Nullable; public interface FightTag { + @Nullable @ApiStatus.Experimental UUID getTagger(); + Duration getRemainingDuration(); + boolean isExpired(); + Instant getEndOfCombatLog(); + UUID getTaggedPlayer(); } diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/Drop.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/Drop.java similarity index 97% rename from eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/Drop.java rename to eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/Drop.java index 92839d4e..b8d75438 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/Drop.java +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/Drop.java @@ -1,4 +1,4 @@ -package com.eternalcode.combat.drop; +package com.eternalcode.combat.fight.drop; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropKeepInventoryManager.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropKeepInventoryManager.java new file mode 100644 index 00000000..8fee2353 --- /dev/null +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropKeepInventoryManager.java @@ -0,0 +1,16 @@ +package com.eternalcode.combat.fight.drop; + +import java.util.List; +import java.util.UUID; +import org.bukkit.inventory.ItemStack; + +public interface DropKeepInventoryManager { + + List nextItems(UUID uuid); + + boolean hasItems(UUID uuid); + + void addItems(UUID uuid, List item); + + void addItem(UUID uuid, ItemStack item); +} diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropModifier.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropModifier.java similarity index 70% rename from eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropModifier.java rename to eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropModifier.java index 7c126601..47ec6524 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropModifier.java +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropModifier.java @@ -1,4 +1,4 @@ -package com.eternalcode.combat.drop; +package com.eternalcode.combat.fight.drop; public interface DropModifier { diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropResult.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropResult.java similarity index 91% rename from eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropResult.java rename to eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropResult.java index 15dd56ec..74963bc0 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropResult.java +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropResult.java @@ -1,4 +1,4 @@ -package com.eternalcode.combat.drop; +package com.eternalcode.combat.fight.drop; import org.bukkit.inventory.ItemStack; diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropService.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropService.java new file mode 100644 index 00000000..77528cb7 --- /dev/null +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropService.java @@ -0,0 +1,8 @@ +package com.eternalcode.combat.fight.drop; + +public interface DropService { + + DropResult modify(DropType dropType, Drop drop); + + void registerModifier(DropModifier dropModifier); +} diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropType.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropType.java similarity index 63% rename from eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropType.java rename to eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropType.java index 1e0b9153..46abeed7 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropType.java +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropType.java @@ -1,4 +1,4 @@ -package com.eternalcode.combat.drop; +package com.eternalcode.combat.fight.drop; public enum DropType { diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/effect/FightEffectService.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/effect/FightEffectService.java new file mode 100644 index 00000000..5ad1ae8f --- /dev/null +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/effect/FightEffectService.java @@ -0,0 +1,25 @@ +package com.eternalcode.combat.fight.effect; + +import java.util.List; +import org.bukkit.entity.Player; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +/** + * Manages custom potion effects on players during combat. + * Active effects before combat are stored and restored after combat ends. + */ +public interface FightEffectService { + + void removeCustomEffect(Player player, PotionEffectType type, Integer amplifier); + + void applyCustomEffect(Player player, PotionEffectType type, Integer amplifier); + + List getCurrentEffects(Player player); + + void clearStoredEffects(Player player); + + void restoreActiveEffects(Player player); + + void storeActiveEffect(Player player, PotionEffect effect); +} diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/CauseOfTag.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/CauseOfTag.java index 5e62c959..940117c6 100644 --- a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/CauseOfTag.java +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/CauseOfTag.java @@ -1,8 +1,25 @@ package com.eternalcode.combat.fight.event; public enum CauseOfTag { + + /** + * The player was tagged in combat as a result of an attack by another player. + */ PLAYER, + + /** + * The player was tagged in combat due to an interaction with a non-player entity + * (e.g., mobs or environmental damage). + */ NON_PLAYER, + + /** + * A command was executed to apply a combat tag to the player. + */ COMMAND, + + /** + * A custom cause, typically defined by external plugins or systems, applied the combat tag. + */ CUSTOM } diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/CauseOfUnTag.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/CauseOfUnTag.java index 6cf7958b..52e331cf 100644 --- a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/CauseOfUnTag.java +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/CauseOfUnTag.java @@ -1,11 +1,38 @@ package com.eternalcode.combat.fight.event; public enum CauseOfUnTag { + /** + * The combat tag expired after a set duration. + */ TIME_EXPIRED, + + /** + * The player died, which resulted in the removal of the combat tag. + */ DEATH, + + /** + * The player was killed by another player, causing the combat tag to be removed. + */ DEATH_BY_PLAYER, + + /** + * The player logged out, triggering the removal of the combat tag. + */ LOGOUT, + + /** + * A command was executed to remove the player's combat tag. + */ COMMAND, + + /** + * The attacker released the player, ending the combat and removing the tag. + */ ATTACKER_RELEASE, + + /** + * A custom cause, typically defined by external plugins or systems. + */ CUSTOM } diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/FightTagEvent.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/FightTagEvent.java index 0775d9b3..dc212b42 100644 --- a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/FightTagEvent.java +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/FightTagEvent.java @@ -5,59 +5,61 @@ import org.bukkit.event.HandlerList; import java.util.UUID; +import org.jetbrains.annotations.NotNull; +/** + * This event is triggered when a player is tagged in a fight. + */ public class FightTagEvent extends Event implements Cancellable { - private static final HandlerList handlers = new HandlerList(); + private static final HandlerList HANDLER_LIST = new HandlerList(); private final UUID player; private final CauseOfTag cause; - private boolean isCancelled = false; - private String cancelMessage = ""; + private boolean cancelled = false; public FightTagEvent(UUID player, CauseOfTag cause) { + super(false); + this.player = player; this.cause = cause; } + /** + * Gets the UUID of the player who was tagged. + * + * @return The UUID of the tagged player. + */ public UUID getPlayer() { return this.player; } + /** + * Gets the reason why the player was tagged. + * + * @return The cause of the combat tag as a {@link CauseOfTag}. + */ public CauseOfTag getCause() { return this.cause; } @Override public boolean isCancelled() { - return this.isCancelled; + return this.cancelled; } @Override public void setCancelled(boolean cancelled) { - throw new UnsupportedOperationException("Use #cancel(String) instead"); - } - - public void cancel(String cancelMessage) { - this.isCancelled = true; - this.cancelMessage = cancelMessage; - } - - public void allow() { - this.isCancelled = false; - this.cancelMessage = ""; - } - - public String getCancelMessage() { - return this.cancelMessage; + this.cancelled = cancelled; } + @NotNull @Override public HandlerList getHandlers() { - return handlers; + return HANDLER_LIST; } public static HandlerList getHandlerList() { - return handlers; + return HANDLER_LIST; } } diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/FightUntagEvent.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/FightUntagEvent.java index 18fdfd11..f9913767 100644 --- a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/FightUntagEvent.java +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/FightUntagEvent.java @@ -5,43 +5,61 @@ import org.bukkit.event.HandlerList; import java.util.UUID; +import org.jetbrains.annotations.NotNull; +/** + * This event is triggered when a player is untagged during a fight. + */ public class FightUntagEvent extends Event implements Cancellable { - private static final HandlerList handlers = new HandlerList(); + private static final HandlerList HANDLER_LIST = new HandlerList(); + private final UUID player; private final CauseOfUnTag cause; - private boolean isCancelled = false; + private boolean cancelled; public FightUntagEvent(UUID player, CauseOfUnTag cause) { + super(false); + this.player = player; this.cause = cause; } + /** + * Gets the UUID of the player who was untagged. + * + * @return The UUID of the untagged player. + */ public UUID getPlayer() { return this.player; } - + + /** + * Gets the reason for why the player was untagged. + * + * @return The cause of untagging as a {@link CauseOfUnTag}. + */ public CauseOfUnTag getCause() { return this.cause; } @Override public boolean isCancelled() { - return this.isCancelled; + return this.cancelled; } @Override public void setCancelled(boolean cancelled) { - this.isCancelled = cancelled; + this.cancelled = cancelled; } + @NotNull @Override public HandlerList getHandlers() { - return handlers; + return HANDLER_LIST; } public static HandlerList getHandlerList() { - return handlers; + return HANDLER_LIST; } } diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlService.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlService.java new file mode 100644 index 00000000..18d2b84f --- /dev/null +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlService.java @@ -0,0 +1,16 @@ +package com.eternalcode.combat.fight.pearl; + +import java.time.Duration; +import java.time.Instant; +import java.util.UUID; + +public interface FightPearlService { + + Instant getDelay(UUID uuid); + + Duration getRemainingDelay(UUID uuid); + + boolean hasDelay(UUID uuid); + + void markDelay(UUID uuid); +} diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutService.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutService.java new file mode 100644 index 00000000..1565afa2 --- /dev/null +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutService.java @@ -0,0 +1,13 @@ +package com.eternalcode.combat.fight.tagout; + +import java.time.Duration; +import java.util.UUID; + +public interface FightTagOutService { + + boolean isTaggedOut(UUID player); + + void unTagOut(UUID player); + + void tagOut(UUID player, Duration duration); +} diff --git a/eternalcombat-plugin/build.gradle.kts b/eternalcombat-plugin/build.gradle.kts index 41afd517..16039c64 100644 --- a/eternalcombat-plugin/build.gradle.kts +++ b/eternalcombat-plugin/build.gradle.kts @@ -9,6 +9,42 @@ plugins { dependencies { implementation(project(":eternalcombat-api")) + + // kyori + implementation("net.kyori:adventure-platform-bukkit:${Versions.ADVENTURE_PLATFORM_BUKKIT}") + implementation("net.kyori:adventure-text-minimessage:${Versions.ADVENTURE_TEXT_MINIMESSAGE}") + + // litecommands + implementation("dev.rollczi:litecommands-bukkit:${Versions.LITE_COMMANDS}") + + // Okaeri configs + implementation("eu.okaeri:okaeri-configs-yaml-bukkit:${Versions.OKAERI_CONFIGS_YAML_BUKKIT}") + implementation("eu.okaeri:okaeri-configs-serdes-commons:${Versions.OKAERI_CONFIGS_SERDES_COMMONS}") + implementation("eu.okaeri:okaeri-configs-serdes-bukkit:${Versions.OKAERI_CONFIGS_SERDES_BUKKIT}") + + // Panda utilities + implementation("org.panda-lang:panda-utilities:${Versions.PANDA_UTILITIES}") + + // GitCheck + implementation("com.eternalcode:gitcheck:${Versions.GIT_CHECK}") + + // commons + implementation("commons-io:commons-io:${Versions.APACHE_COMMONS}") + + // bstats + implementation("org.bstats:bstats-bukkit:${Versions.B_STATS_BUKKIT}") + + // caffeine + implementation("com.github.ben-manes.caffeine:caffeine:${Versions.CAFFEINE}") + + implementation("com.eternalcode:eternalcode-commons-bukkit:${Versions.ETERNALCODE_COMMONS}") + implementation("com.eternalcode:eternalcode-commons-adventure:${Versions.ETERNALCODE_COMMONS}") + + // worldguard + compileOnly("com.sk89q.worldguard:worldguard-bukkit:${Versions.WORLD_GUARD_BUKKIT}") + + // PlaceholderAPI + compileOnly("me.clip:placeholderapi:${Versions.PLACEHOLDER_API}") } bukkit { diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/CombatPlugin.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/CombatPlugin.java index 41bf4d27..4c8c689a 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/CombatPlugin.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/CombatPlugin.java @@ -1,16 +1,21 @@ package com.eternalcode.combat; import com.eternalcode.combat.bridge.BridgeService; +import com.eternalcode.combat.fight.drop.DropKeepInventoryManager; import com.eternalcode.combat.fight.FightManager; +import com.eternalcode.combat.fight.drop.DropService; +import com.eternalcode.combat.fight.effect.FightEffectService; +import com.eternalcode.combat.fight.tagout.FightTagOutService; +import com.eternalcode.combat.fight.pearl.FightPearlService; import com.eternalcode.combat.handler.InvalidUsageHandlerImpl; import com.eternalcode.combat.handler.MissingPermissionHandlerImpl; import com.eternalcode.combat.config.ConfigService; import com.eternalcode.combat.config.implementation.PluginConfig; -import com.eternalcode.combat.drop.DropController; -import com.eternalcode.combat.drop.DropKeepInventoryManager; -import com.eternalcode.combat.drop.DropManager; -import com.eternalcode.combat.drop.impl.PercentDropModifier; -import com.eternalcode.combat.drop.impl.PlayersHealthDropModifier; +import com.eternalcode.combat.fight.drop.DropController; +import com.eternalcode.combat.fight.drop.DropKeepInventoryManagerImpl; +import com.eternalcode.combat.fight.drop.DropServiceImpl; +import com.eternalcode.combat.fight.drop.impl.PercentDropModifier; +import com.eternalcode.combat.fight.drop.impl.PlayersHealthDropModifier; import com.eternalcode.combat.fight.FightTagCommand; import com.eternalcode.combat.fight.controller.FightActionBlockerController; import com.eternalcode.combat.fight.controller.FightMessageController; @@ -21,13 +26,13 @@ import com.eternalcode.combat.fight.FightManagerImpl; import com.eternalcode.combat.fight.FightTask; import com.eternalcode.combat.fight.bossbar.FightBossBarService; -import com.eternalcode.combat.fight.effect.FightEffectService; +import com.eternalcode.combat.fight.effect.FightEffectServiceImpl; import com.eternalcode.combat.fight.logout.LogoutController; import com.eternalcode.combat.fight.logout.LogoutService; import com.eternalcode.combat.fight.pearl.FightPearlController; -import com.eternalcode.combat.fight.pearl.FightPearlManager; +import com.eternalcode.combat.fight.pearl.FightPearlServiceImpl; import com.eternalcode.combat.fight.tagout.FightTagOutController; -import com.eternalcode.combat.fight.tagout.FightTagOutService; +import com.eternalcode.combat.fight.tagout.FightTagOutServiceImpl; import com.eternalcode.combat.fight.tagout.FightTagOutCommand; import com.eternalcode.combat.notification.NotificationAnnouncer; import com.eternalcode.combat.region.RegionController; @@ -58,13 +63,13 @@ public final class CombatPlugin extends JavaPlugin implements EternalCombatApi { private static final int BSTATS_METRICS_ID = 17803; private FightManager fightManager; - private FightPearlManager fightPearlManager; + private FightPearlService fightPearlService; private FightTagOutService fightTagOutService; private FightEffectService fightEffectService; private LogoutService logoutService; - private DropManager dropManager; + private DropService dropService; private DropKeepInventoryManager dropKeepInventoryManager; private RegionProvider regionProvider; @@ -88,12 +93,12 @@ public void onEnable() { this.pluginConfig = configService.create(PluginConfig.class, new File(dataFolder, "config.yml")); this.fightManager = new FightManagerImpl(eventCaller); - this.fightPearlManager = new FightPearlManager(this.pluginConfig.pearl); - this.fightTagOutService = new FightTagOutService(); - this.fightEffectService = new FightEffectService(); + this.fightPearlService = new FightPearlServiceImpl(this.pluginConfig.pearl); + this.fightTagOutService = new FightTagOutServiceImpl(); + this.fightEffectService = new FightEffectServiceImpl(); this.logoutService = new LogoutService(); - this.dropManager = new DropManager(); - this.dropKeepInventoryManager = new DropKeepInventoryManager(); + this.dropService = new DropServiceImpl(); + this.dropKeepInventoryManager = new DropKeepInventoryManagerImpl(); UpdaterService updaterService = new UpdaterService(this.getDescription()); @@ -134,20 +139,20 @@ public void onEnable() { Stream.of( new PercentDropModifier(this.pluginConfig.dropSettings), new PlayersHealthDropModifier(this.pluginConfig.dropSettings, this.logoutService) - ).forEach(this.dropManager::registerModifier); + ).forEach(this.dropService::registerModifier); Stream.of( - new DropController(this.dropManager, this.dropKeepInventoryManager, this.pluginConfig.dropSettings, this.fightManager), + new DropController(this.dropService, this.dropKeepInventoryManager, this.pluginConfig.dropSettings, this.fightManager), new FightTagController(this.fightManager, this.pluginConfig), new LogoutController(this.fightManager, this.logoutService, notificationAnnouncer, this.pluginConfig), new FightUnTagController(this.fightManager, this.pluginConfig, this.logoutService), new FightActionBlockerController(this.fightManager, notificationAnnouncer, this.pluginConfig), - new FightPearlController(this.pluginConfig.pearl, notificationAnnouncer, this.fightManager, this.fightPearlManager), + new FightPearlController(this.pluginConfig.pearl, notificationAnnouncer, this.fightManager, this.fightPearlService), new UpdaterNotificationController(updaterService, this.pluginConfig, this.audienceProvider, miniMessage), new RegionController(notificationAnnouncer, this.regionProvider, this.fightManager, this.pluginConfig), new FightEffectController(this.pluginConfig.effect, this.fightEffectService, this.fightManager, this.getServer()), - new FightTagOutController(this.fightTagOutService, this.pluginConfig), + new FightTagOutController(this.fightTagOutService), new FightMessageController(this.fightManager, notificationAnnouncer, fightBossBarService, this.pluginConfig, this.getServer()) ).forEach(listener -> this.getServer().getPluginManager().registerEvents(listener, this)); @@ -183,8 +188,8 @@ public RegionProvider getRegionProvider() { } @Override - public FightPearlManager getFightPearlManager() { - return this.fightPearlManager; + public FightPearlService getFightPearlManager() { + return this.fightPearlService; } @Override @@ -198,17 +203,12 @@ public FightEffectService getFightEffectService() { } @Override - public DropManager getDropManager() { - return this.dropManager; + public DropService getDropService() { + return this.dropService; } @Override public DropKeepInventoryManager getDropKeepInventoryManager() { return this.dropKeepInventoryManager; } - - @Override - public PluginConfig getPluginConfig() { - return this.pluginConfig; - } } diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/config/implementation/PluginConfig.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/config/implementation/PluginConfig.java index 830e2137..c4bc3716 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/config/implementation/PluginConfig.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/config/implementation/PluginConfig.java @@ -1,7 +1,7 @@ package com.eternalcode.combat.config.implementation; import com.eternalcode.combat.WhitelistBlacklistMode; -import com.eternalcode.combat.drop.DropSettings; +import com.eternalcode.combat.fight.drop.DropSettings; import com.eternalcode.combat.fight.effect.FightEffectSettings; import com.eternalcode.combat.fight.pearl.FightPearlSettings; import com.eternalcode.combat.notification.Notification; diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropController.java similarity index 90% rename from eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropController.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropController.java index d1fb05ad..0718cddd 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropController.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropController.java @@ -1,4 +1,4 @@ -package com.eternalcode.combat.drop; +package com.eternalcode.combat.fight.drop; import com.eternalcode.combat.fight.FightManager; import org.bukkit.entity.Player; @@ -15,13 +15,13 @@ public class DropController implements Listener { - private final DropManager dropManager; + private final DropService dropService; private final DropKeepInventoryManager keepInventoryManager; private final DropSettings dropSettings; private final FightManager fightManager; - public DropController(DropManager dropManager, DropKeepInventoryManager keepInventoryManager, DropSettings dropSettings, FightManager fightManager) { - this.dropManager = dropManager; + public DropController(DropService dropService, DropKeepInventoryManager keepInventoryManager, DropSettings dropSettings, FightManager fightManager) { + this.dropService = dropService; this.keepInventoryManager = keepInventoryManager; this.dropSettings = dropSettings; this.fightManager = fightManager; @@ -45,7 +45,7 @@ void onPlayerDeath(PlayerDeathEvent event) { .droppedExp(player.getTotalExperience()) .build(); - DropResult result = this.dropManager.modify(dropType, drop); + DropResult result = this.dropService.modify(dropType, drop); if (result == null) { return; diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropKeepInventoryManager.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropKeepInventoryManagerImpl.java similarity index 79% rename from eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropKeepInventoryManager.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropKeepInventoryManagerImpl.java index 093b710e..cd62b8bc 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropKeepInventoryManager.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropKeepInventoryManagerImpl.java @@ -1,5 +1,6 @@ -package com.eternalcode.combat.drop; +package com.eternalcode.combat.fight.drop; +import com.eternalcode.combat.fight.drop.DropKeepInventoryManager; import org.bukkit.inventory.ItemStack; import java.util.ArrayList; @@ -9,22 +10,26 @@ import java.util.Map; import java.util.UUID; -public class DropKeepInventoryManager { +public class DropKeepInventoryManagerImpl implements DropKeepInventoryManager { private final Map> itemsToGiveAfterRespawn = new HashMap<>(); + @Override public void addItem(UUID uuid, ItemStack item) { this.itemsToGiveAfterRespawn.computeIfAbsent(uuid, k -> new ArrayList<>()).add(item); } + @Override public void addItems(UUID uuid, List item) { item.forEach(i -> this.addItem(uuid, i)); } + @Override public boolean hasItems(UUID uuid) { return this.itemsToGiveAfterRespawn.containsKey(uuid); } + @Override public List nextItems(UUID uuid) { List itemStacks = this.itemsToGiveAfterRespawn.remove(uuid); diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropManager.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropServiceImpl.java similarity index 86% rename from eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropManager.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropServiceImpl.java index 1e924ca2..2df9fc5b 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropManager.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropServiceImpl.java @@ -1,16 +1,17 @@ -package com.eternalcode.combat.drop; +package com.eternalcode.combat.fight.drop; import java.util.HashMap; import java.util.Map; -public class DropManager { +public class DropServiceImpl implements DropService { private final Map modifiers; - public DropManager() { + public DropServiceImpl() { this.modifiers = new HashMap<>(); } + @Override public void registerModifier(DropModifier dropModifier) { DropType dropType = dropModifier.getDropType(); @@ -25,6 +26,7 @@ public void registerModifier(DropModifier dropModifier) { this.modifiers.put(dropType, dropModifier); } + @Override public DropResult modify(DropType dropType, Drop drop) { if (!this.modifiers.containsKey(dropType)) { throw new RuntimeException("No drop modifier found for type '%s'".formatted(dropType.name())); diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropSettings.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropSettings.java similarity index 92% rename from eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropSettings.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropSettings.java index f373ee50..caa65cb4 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/DropSettings.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropSettings.java @@ -1,5 +1,6 @@ -package com.eternalcode.combat.drop; +package com.eternalcode.combat.fight.drop; +import com.eternalcode.combat.fight.drop.DropType; import eu.okaeri.configs.OkaeriConfig; import eu.okaeri.configs.annotation.Comment; diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/impl/PercentDropModifier.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/impl/PercentDropModifier.java similarity index 78% rename from eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/impl/PercentDropModifier.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/impl/PercentDropModifier.java index 81774fbf..f891e937 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/impl/PercentDropModifier.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/impl/PercentDropModifier.java @@ -1,10 +1,10 @@ -package com.eternalcode.combat.drop.impl; +package com.eternalcode.combat.fight.drop.impl; -import com.eternalcode.combat.drop.Drop; -import com.eternalcode.combat.drop.DropModifier; -import com.eternalcode.combat.drop.DropResult; -import com.eternalcode.combat.drop.DropSettings; -import com.eternalcode.combat.drop.DropType; +import com.eternalcode.combat.fight.drop.Drop; +import com.eternalcode.combat.fight.drop.DropModifier; +import com.eternalcode.combat.fight.drop.DropResult; +import com.eternalcode.combat.fight.drop.DropSettings; +import com.eternalcode.combat.fight.drop.DropType; import com.eternalcode.combat.util.InventoryUtil; import com.eternalcode.combat.util.MathUtil; import com.eternalcode.combat.util.RemoveItemResult; diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/impl/PlayersHealthDropModifier.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/impl/PlayersHealthDropModifier.java similarity index 86% rename from eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/impl/PlayersHealthDropModifier.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/impl/PlayersHealthDropModifier.java index d6f4ba15..e0ccfdbf 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/drop/impl/PlayersHealthDropModifier.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/impl/PlayersHealthDropModifier.java @@ -1,10 +1,10 @@ -package com.eternalcode.combat.drop.impl; +package com.eternalcode.combat.fight.drop.impl; -import com.eternalcode.combat.drop.Drop; -import com.eternalcode.combat.drop.DropModifier; -import com.eternalcode.combat.drop.DropResult; -import com.eternalcode.combat.drop.DropSettings; -import com.eternalcode.combat.drop.DropType; +import com.eternalcode.combat.fight.drop.Drop; +import com.eternalcode.combat.fight.drop.DropModifier; +import com.eternalcode.combat.fight.drop.DropResult; +import com.eternalcode.combat.fight.drop.DropSettings; +import com.eternalcode.combat.fight.drop.DropType; import com.eternalcode.combat.fight.logout.Logout; import com.eternalcode.combat.fight.logout.LogoutService; import com.eternalcode.combat.util.InventoryUtil; diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/effect/FightEffectService.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/effect/FightEffectServiceImpl.java similarity index 93% rename from eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/effect/FightEffectService.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/effect/FightEffectServiceImpl.java index 13910444..f9d4ab02 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/effect/FightEffectService.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/effect/FightEffectServiceImpl.java @@ -10,17 +10,19 @@ import java.util.List; import java.util.ArrayList; -public class FightEffectService { +public class FightEffectServiceImpl implements FightEffectService { private final Map> activeEffects = new HashMap<>(); private static final int INFINITE_DURATION = -1; + @Override public void storeActiveEffect(Player player, PotionEffect effect) { List effects = this.activeEffects.computeIfAbsent(player.getUniqueId(), k -> new ArrayList<>()); effects.add(effect); } + @Override public void restoreActiveEffects(Player player) { List currentEffects = this.getCurrentEffects(player); @@ -31,14 +33,17 @@ public void restoreActiveEffects(Player player) { this.clearStoredEffects(player); } + @Override public void clearStoredEffects(Player player) { this.activeEffects.remove(player.getUniqueId()); } + @Override public List getCurrentEffects(Player player) { return this.activeEffects.getOrDefault(player.getUniqueId(), new ArrayList<>()); } + @Override public void applyCustomEffect(Player player, PotionEffectType type, Integer amplifier) { PotionEffect activeEffect = player.getPotionEffect(type); @@ -59,6 +64,7 @@ public void applyCustomEffect(Player player, PotionEffectType type, Integer ampl player.addPotionEffect(new PotionEffect(type, INFINITE_DURATION, amplifier)); } + @Override public void removeCustomEffect(Player player, PotionEffectType type, Integer amplifier) { PotionEffect activeEffect = player.getPotionEffect(type); diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java index 28282b91..8343bc24 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java @@ -24,13 +24,13 @@ public class FightPearlController implements Listener { private final FightPearlSettings settings; private final NotificationAnnouncer announcer; private final FightManager fightManager; - private final FightPearlManager fightPearlManager; + private final FightPearlService fightPearlService; - public FightPearlController(FightPearlSettings settings, NotificationAnnouncer announcer, FightManager fightManager, FightPearlManager fightPearlManager) { + public FightPearlController(FightPearlSettings settings, NotificationAnnouncer announcer, FightManager fightManager, FightPearlService fightPearlService) { this.settings = settings; this.announcer = announcer; this.fightManager = fightManager; - this.fightPearlManager = fightPearlManager; + this.fightPearlService = fightPearlService; } @EventHandler @@ -62,10 +62,10 @@ void onInteract(PlayerInteractEvent event) { return; } - if (this.fightPearlManager.hasDelay(uniqueId)) { + if (this.fightPearlService.hasDelay(uniqueId)) { event.setCancelled(true); - Duration remainingPearlDelay = this.fightPearlManager.getRemainingDelay(uniqueId); + Duration remainingPearlDelay = this.fightPearlService.getRemainingDelay(uniqueId); Formatter formatter = new Formatter() .register("{TIME}", DurationUtil.format(remainingPearlDelay)); @@ -75,7 +75,7 @@ void onInteract(PlayerInteractEvent event) { return; } - this.fightPearlManager.markDelay(uniqueId); + this.fightPearlService.markDelay(uniqueId); } @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlManager.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlServiceImpl.java similarity index 84% rename from eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlManager.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlServiceImpl.java index 5cdaf423..4101a87b 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlManager.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlServiceImpl.java @@ -7,30 +7,34 @@ import java.time.Instant; import java.util.UUID; -public class FightPearlManager { +public class FightPearlServiceImpl implements FightPearlService { private final FightPearlSettings pearlSettings; private final Cache pearlDelays; - public FightPearlManager(FightPearlSettings pearlSettings) { + public FightPearlServiceImpl(FightPearlSettings pearlSettings) { this.pearlSettings = pearlSettings; this.pearlDelays = Caffeine.newBuilder() .expireAfterWrite(pearlSettings.pearlThrowDelay) .build(); } + @Override public void markDelay(UUID uuid) { this.pearlDelays.put(uuid, Instant.now().plus(this.pearlSettings.pearlThrowDelay)); } + @Override public boolean hasDelay(UUID uuid) { return Instant.now().isBefore(this.getDelay(uuid)); } + @Override public Duration getRemainingDelay(UUID uuid) { return Duration.between(Instant.now(), this.getDelay(uuid)); } + @Override public Instant getDelay(UUID uuid) { return this.pearlDelays.asMap().getOrDefault(uuid, Instant.MIN); } diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutService.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutServiceImpl.java similarity index 86% rename from eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutService.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutServiceImpl.java index 9acec882..548e6d1a 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutService.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutServiceImpl.java @@ -6,20 +6,23 @@ import java.util.Map; import java.util.UUID; -public class FightTagOutService { +public class FightTagOutServiceImpl implements FightTagOutService { private final Map tagOuts = new HashMap<>(); + @Override public void tagOut(UUID player, Duration duration) { Instant endTime = Instant.now().plus(duration); this.tagOuts.put(player, endTime); } + @Override public void unTagOut(UUID player) { this.tagOuts.remove(player); } + @Override public boolean isTaggedOut(UUID player) { Instant endTime = this.tagOuts.get(player); From e9cb59305802e2de1f1876395564eeb66b3ca031 Mon Sep 17 00:00:00 2001 From: Martin Sulikowski Date: Sun, 29 Sep 2024 01:22:00 +0200 Subject: [PATCH 3/7] Add jetbrains annotatiots. --- buildSrc/src/main/kotlin/Versions.kt | 2 ++ .../java/com/eternalcode/combat/fight/FightTagCommand.java | 6 +++--- .../combat/fight/tagout/FightTagOutController.java | 7 ++----- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index c31d3012..22074a2e 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -6,6 +6,8 @@ object Versions { const val JUNIT_JUPITER_PARAMS = "5.10.3" const val JUNIT_JUPITER_ENGINE = "5.10.3" + const val JETBRAINS_ANNOTATIONS = "24.1.0" + const val ETERNALCODE_COMMONS = "1.1.3" // TODO: Multification. diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightTagCommand.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightTagCommand.java index 3cb42920..969379a7 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightTagCommand.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightTagCommand.java @@ -56,7 +56,7 @@ void tag(@Context CommandSender sender, @Arg Player target) { FightTagEvent event = this.fightManager.tag(targetUniqueId, time, CauseOfTag.COMMAND); if (event.isCancelled()) { - this.announcer.sendMessage(sender, event.getCancelMessage()); + this.announcer.sendMessage(sender, this.config.messages.admin.adminTagOutCanceled); return; } @@ -85,11 +85,11 @@ void tagMultiple(@Context CommandSender sender, @Arg Player firstTarget, @Arg Pl String format = formatter.format(messages.admin.adminTagMultiplePlayers); if (firstTagEvent.isCancelled()) { - this.announcer.sendMessage(sender, firstTagEvent.getCancelMessage()); + this.announcer.sendMessage(sender, this.config.messages.admin.adminTagOutCanceled); } if (secondTagEvent.isCancelled()) { - this.announcer.sendMessage(sender, firstTagEvent.getCancelMessage()); + this.announcer.sendMessage(sender, this.config.messages.admin.adminTagOutCanceled); } if (firstTagEvent.isCancelled() && secondTagEvent.isCancelled()) { diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutController.java index 1815583f..a32f7533 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutController.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutController.java @@ -1,6 +1,5 @@ package com.eternalcode.combat.fight.tagout; -import com.eternalcode.combat.config.implementation.PluginConfig; import com.eternalcode.combat.fight.event.FightTagEvent; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -10,11 +9,9 @@ public class FightTagOutController implements Listener { private final FightTagOutService tagOutService; - private final PluginConfig config; - public FightTagOutController(FightTagOutService tagOutService, PluginConfig config) { + public FightTagOutController(FightTagOutService tagOutService) { this.tagOutService = tagOutService; - this.config = config; } @EventHandler @@ -22,7 +19,7 @@ void onTagOut(FightTagEvent event) { UUID uniqueId = event.getPlayer(); if (this.tagOutService.isTaggedOut(uniqueId)) { - event.cancel(this.config.messages.admin.adminTagOutCanceled); + event.setCancelled(true); } } From 98504a94f03f3cd24b4c1e0962f4e84b4d659938 Mon Sep 17 00:00:00 2001 From: Martin Sulikowski Date: Sun, 29 Sep 2024 01:37:58 +0200 Subject: [PATCH 4/7] Fix checkstyle violations --- .../com/eternalcode/combat/region/RegionProvider.java | 2 +- .../com/eternalcode/combat/bridge/BridgeService.java | 2 +- .../combat/bridge/placeholder/FightTagPlaceholder.java | 10 +++++----- .../fight/controller/FightActionBlockerController.java | 2 +- .../eternalcode/combat/region/RegionController.java | 2 +- .../combat/region/WorldGuardRegionProvider.java | 8 ++++---- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/region/RegionProvider.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/region/RegionProvider.java index a60c7fe9..b4baf695 100644 --- a/eternalcombat-api/src/main/java/com/eternalcode/combat/region/RegionProvider.java +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/region/RegionProvider.java @@ -8,7 +8,7 @@ public interface RegionProvider { Optional getRegion(Location location); default boolean isInRegion(Location location) { - return getRegion(location).isPresent(); + return this.getRegion(location).isPresent(); } } diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/bridge/BridgeService.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/bridge/BridgeService.java index 665362bd..036c5b45 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/bridge/BridgeService.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/bridge/BridgeService.java @@ -38,7 +38,7 @@ public void init(FightManager fightManager, Server server) { }); this.initialize("PlaceholderAPI", - () -> new FightTagPlaceholder(fightManager, server, plugin).register(), + () -> new FightTagPlaceholder(fightManager, server, this.plugin).register(), () -> this.logger.warning("PlaceholderAPI is not installed, placeholders will not be registered.") ); } diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/bridge/placeholder/FightTagPlaceholder.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/bridge/placeholder/FightTagPlaceholder.java index aa51dc90..b4e9a051 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/bridge/placeholder/FightTagPlaceholder.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/bridge/placeholder/FightTagPlaceholder.java @@ -38,12 +38,12 @@ public boolean canRegister() { @Override public @NotNull String getAuthor() { - return plugin.getDescription().getAuthors().get(0); + return this.plugin.getDescription().getAuthors().get(0); } @Override public @NotNull String getVersion() { - return plugin.getDescription().getVersion(); + return this.plugin.getDescription().getVersion(); } @Override @@ -56,18 +56,18 @@ public String onRequest(OfflinePlayer player, String identifier) { if (identifier.equals("remaining_millis")) { return this.getFightTag(player) - .map(fightTagInter -> DurationParser.TIME_UNITS.format(fightTagInter.getRemainingDuration())) + .map(fightTag -> DurationParser.TIME_UNITS.format(fightTag.getRemainingDuration())) .orElse(""); } if (identifier.equals("opponent")) { - return getTagger(player) + return this.getTagger(player) .map(tagger -> tagger.getName()) .orElse(""); } if (identifier.equals("opponent_health")) { - return getTagger(player) + return this.getTagger(player) .map(tagger -> String.format("%.2f", tagger.getHealth())) .orElse(""); } diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/controller/FightActionBlockerController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/controller/FightActionBlockerController.java index 9432b6ce..ff3b7459 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/controller/FightActionBlockerController.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/controller/FightActionBlockerController.java @@ -50,7 +50,7 @@ void onPlace(BlockPlaceEvent event) { List specificBlocksToPreventPlacing = this.config.settings.specificBlocksToPreventPlacing; - boolean isPlacementBlocked = isPlacementBlocked(level); + boolean isPlacementBlocked = this.isPlacementBlocked(level); Formatter formatter = new Formatter() .register("{Y}", this.config.settings.blockPlacingYCoordinate) diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/region/RegionController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/region/RegionController.java index 9039be19..1023c981 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/region/RegionController.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/region/RegionController.java @@ -45,7 +45,7 @@ void onPlayerMove(PlayerMoveEvent event) { int zFrom = locationFrom.getBlockZ(); if (xTo != xFrom || yTo != yFrom || zTo != zFrom) { - Optional regionOptional = regionProvider.getRegion(locationTo); + Optional regionOptional = this.regionProvider.getRegion(locationTo); if (regionOptional.isEmpty()) { return; } diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/region/WorldGuardRegionProvider.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/region/WorldGuardRegionProvider.java index 96ecef4b..94067277 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/region/WorldGuardRegionProvider.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/region/WorldGuardRegionProvider.java @@ -33,7 +33,7 @@ public Optional getRegion(Location location) { ApplicableRegionSet applicableRegions = regionQuery.getApplicableRegions(BukkitAdapter.adapt(location)); for (ProtectedRegion region : applicableRegions.getRegions()) { - if (!isCombatRegion(region)) { + if (!this.isCombatRegion(region)) { continue; } @@ -62,13 +62,13 @@ private boolean isCombatRegion(ProtectedRegion region) { private record RegionImpl(Location contextLocation, ProtectedRegion region) implements Region { @Override public Location getCenter() { - BlockVector3 min = region.getMinimumPoint(); - BlockVector3 max = region.getMaximumPoint(); + BlockVector3 min = this.region.getMinimumPoint(); + BlockVector3 max = this.region.getMaximumPoint(); double x = (double) (min.getX() + max.getX()) / 2; double z = (double) (min.getZ() + max.getZ()) / 2; - return new Location(contextLocation.getWorld(), x, contextLocation.getY(), z); + return new Location(this.contextLocation.getWorld(), x, this.contextLocation.getY(), z); } } From 4c471c1f0adee139f20da9a7b76e1d3b554d74cf Mon Sep 17 00:00:00 2001 From: Martin Date: Wed, 2 Oct 2024 00:48:34 +0200 Subject: [PATCH 5/7] Follow citralflo feedback. --- .../com/eternalcode/combat/EternalCombatApi.java | 6 +++--- ...anager.java => DropKeepInventoryService.java} | 2 +- .../com/eternalcode/combat/CombatPlugin.java | 16 ++++++++-------- .../combat/fight/drop/DropController.java | 4 ++-- ...pl.java => DropKeepInventoryServiceImpl.java} | 3 +-- 5 files changed, 15 insertions(+), 16 deletions(-) rename eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/{DropKeepInventoryManager.java => DropKeepInventoryService.java} (87%) rename eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/{DropKeepInventoryManagerImpl.java => DropKeepInventoryServiceImpl.java} (87%) diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/EternalCombatApi.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/EternalCombatApi.java index f014cce3..a45af55d 100644 --- a/eternalcombat-api/src/main/java/com/eternalcode/combat/EternalCombatApi.java +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/EternalCombatApi.java @@ -1,6 +1,6 @@ package com.eternalcode.combat; -import com.eternalcode.combat.fight.drop.DropKeepInventoryManager; +import com.eternalcode.combat.fight.drop.DropKeepInventoryService; import com.eternalcode.combat.fight.FightManager; import com.eternalcode.combat.fight.drop.DropService; import com.eternalcode.combat.fight.effect.FightEffectService; @@ -14,7 +14,7 @@ public interface EternalCombatApi { RegionProvider getRegionProvider(); - FightPearlService getFightPearlManager(); + FightPearlService getFightPearlService(); FightTagOutService getFightTagOutService(); @@ -22,6 +22,6 @@ public interface EternalCombatApi { DropService getDropService(); - DropKeepInventoryManager getDropKeepInventoryManager(); + DropKeepInventoryService getDropKeepInventoryService(); } diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropKeepInventoryManager.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropKeepInventoryService.java similarity index 87% rename from eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropKeepInventoryManager.java rename to eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropKeepInventoryService.java index 8fee2353..9b98816e 100644 --- a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropKeepInventoryManager.java +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/drop/DropKeepInventoryService.java @@ -4,7 +4,7 @@ import java.util.UUID; import org.bukkit.inventory.ItemStack; -public interface DropKeepInventoryManager { +public interface DropKeepInventoryService { List nextItems(UUID uuid); diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/CombatPlugin.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/CombatPlugin.java index 4c8c689a..c948ea00 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/CombatPlugin.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/CombatPlugin.java @@ -1,7 +1,7 @@ package com.eternalcode.combat; import com.eternalcode.combat.bridge.BridgeService; -import com.eternalcode.combat.fight.drop.DropKeepInventoryManager; +import com.eternalcode.combat.fight.drop.DropKeepInventoryService; import com.eternalcode.combat.fight.FightManager; import com.eternalcode.combat.fight.drop.DropService; import com.eternalcode.combat.fight.effect.FightEffectService; @@ -12,7 +12,7 @@ import com.eternalcode.combat.config.ConfigService; import com.eternalcode.combat.config.implementation.PluginConfig; import com.eternalcode.combat.fight.drop.DropController; -import com.eternalcode.combat.fight.drop.DropKeepInventoryManagerImpl; +import com.eternalcode.combat.fight.drop.DropKeepInventoryServiceImpl; import com.eternalcode.combat.fight.drop.DropServiceImpl; import com.eternalcode.combat.fight.drop.impl.PercentDropModifier; import com.eternalcode.combat.fight.drop.impl.PlayersHealthDropModifier; @@ -70,7 +70,7 @@ public final class CombatPlugin extends JavaPlugin implements EternalCombatApi { private LogoutService logoutService; private DropService dropService; - private DropKeepInventoryManager dropKeepInventoryManager; + private DropKeepInventoryService dropKeepInventoryService; private RegionProvider regionProvider; @@ -98,7 +98,7 @@ public void onEnable() { this.fightEffectService = new FightEffectServiceImpl(); this.logoutService = new LogoutService(); this.dropService = new DropServiceImpl(); - this.dropKeepInventoryManager = new DropKeepInventoryManagerImpl(); + this.dropKeepInventoryService = new DropKeepInventoryServiceImpl(); UpdaterService updaterService = new UpdaterService(this.getDescription()); @@ -143,7 +143,7 @@ public void onEnable() { Stream.of( - new DropController(this.dropService, this.dropKeepInventoryManager, this.pluginConfig.dropSettings, this.fightManager), + new DropController(this.dropService, this.dropKeepInventoryService, this.pluginConfig.dropSettings, this.fightManager), new FightTagController(this.fightManager, this.pluginConfig), new LogoutController(this.fightManager, this.logoutService, notificationAnnouncer, this.pluginConfig), new FightUnTagController(this.fightManager, this.pluginConfig, this.logoutService), @@ -188,7 +188,7 @@ public RegionProvider getRegionProvider() { } @Override - public FightPearlService getFightPearlManager() { + public FightPearlService getFightPearlService() { return this.fightPearlService; } @@ -208,7 +208,7 @@ public DropService getDropService() { } @Override - public DropKeepInventoryManager getDropKeepInventoryManager() { - return this.dropKeepInventoryManager; + public DropKeepInventoryService getDropKeepInventoryService() { + return this.dropKeepInventoryService; } } diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropController.java index 0718cddd..1c3ce344 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropController.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropController.java @@ -16,11 +16,11 @@ public class DropController implements Listener { private final DropService dropService; - private final DropKeepInventoryManager keepInventoryManager; + private final DropKeepInventoryService keepInventoryManager; private final DropSettings dropSettings; private final FightManager fightManager; - public DropController(DropService dropService, DropKeepInventoryManager keepInventoryManager, DropSettings dropSettings, FightManager fightManager) { + public DropController(DropService dropService, DropKeepInventoryService keepInventoryManager, DropSettings dropSettings, FightManager fightManager) { this.dropService = dropService; this.keepInventoryManager = keepInventoryManager; this.dropSettings = dropSettings; diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropKeepInventoryManagerImpl.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropKeepInventoryServiceImpl.java similarity index 87% rename from eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropKeepInventoryManagerImpl.java rename to eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropKeepInventoryServiceImpl.java index cd62b8bc..98a1fb2d 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropKeepInventoryManagerImpl.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/drop/DropKeepInventoryServiceImpl.java @@ -1,6 +1,5 @@ package com.eternalcode.combat.fight.drop; -import com.eternalcode.combat.fight.drop.DropKeepInventoryManager; import org.bukkit.inventory.ItemStack; import java.util.ArrayList; @@ -10,7 +9,7 @@ import java.util.Map; import java.util.UUID; -public class DropKeepInventoryManagerImpl implements DropKeepInventoryManager { +public class DropKeepInventoryServiceImpl implements DropKeepInventoryService { private final Map> itemsToGiveAfterRespawn = new HashMap<>(); From c104600ff937572c7b667de9c93c9c426411a659 Mon Sep 17 00:00:00 2001 From: Martin Date: Wed, 2 Oct 2024 01:02:15 +0200 Subject: [PATCH 6/7] Add CancelTagReason --- .../combat/fight/event/CancelTagReason.java | 7 +++++ .../combat/fight/event/FightTagEvent.java | 19 +++++++++++++ .../combat/fight/FightTagCommand.java | 27 ++++++++++++++++--- .../fight/tagout/FightTagOutController.java | 2 ++ 4 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/CancelTagReason.java diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/CancelTagReason.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/CancelTagReason.java new file mode 100644 index 00000000..d8cfbe52 --- /dev/null +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/CancelTagReason.java @@ -0,0 +1,7 @@ +package com.eternalcode.combat.fight.event; + +public enum CancelTagReason { + + TAGOUT, + OTHER +} diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/FightTagEvent.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/FightTagEvent.java index dc212b42..0871c195 100644 --- a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/FightTagEvent.java +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/FightTagEvent.java @@ -16,6 +16,7 @@ public class FightTagEvent extends Event implements Cancellable { private final UUID player; private final CauseOfTag cause; private boolean cancelled = false; + private CancelTagReason cancelReason; public FightTagEvent(UUID player, CauseOfTag cause) { super(false); @@ -52,6 +53,24 @@ public void setCancelled(boolean cancelled) { this.cancelled = cancelled; } + /** + * Gets the reason why the event was cancelled. + * + * @return The cancel reason. + */ + public CancelTagReason getCancelReason() { + return this.cancelReason; + } + + /** + * Sets the reason why the event was cancelled. + * + * @param cancelReason The cancel reason. + */ + public void setCancelReason(CancelTagReason cancelReason) { + this.cancelReason = cancelReason; + } + @NotNull @Override public HandlerList getHandlers() { diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightTagCommand.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightTagCommand.java index 969379a7..6fe5b198 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightTagCommand.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/FightTagCommand.java @@ -1,6 +1,7 @@ package com.eternalcode.combat.fight; import com.eternalcode.combat.config.implementation.PluginConfig; +import com.eternalcode.combat.fight.event.CancelTagReason; import com.eternalcode.combat.fight.event.CauseOfTag; import com.eternalcode.combat.fight.event.CauseOfUnTag; import com.eternalcode.combat.fight.event.FightTagEvent; @@ -56,7 +57,13 @@ void tag(@Context CommandSender sender, @Arg Player target) { FightTagEvent event = this.fightManager.tag(targetUniqueId, time, CauseOfTag.COMMAND); if (event.isCancelled()) { - this.announcer.sendMessage(sender, this.config.messages.admin.adminTagOutCanceled); + CancelTagReason cancelReason = event.getCancelReason(); + + if (cancelReason == CancelTagReason.TAGOUT) { + this.announcer.sendMessage(sender, this.config.messages.admin.adminTagOutCanceled); + return; + } + return; } @@ -85,11 +92,25 @@ void tagMultiple(@Context CommandSender sender, @Arg Player firstTarget, @Arg Pl String format = formatter.format(messages.admin.adminTagMultiplePlayers); if (firstTagEvent.isCancelled()) { - this.announcer.sendMessage(sender, this.config.messages.admin.adminTagOutCanceled); + CancelTagReason cancelReason = firstTagEvent.getCancelReason(); + + if (cancelReason == CancelTagReason.TAGOUT) { + this.announcer.sendMessage(sender, this.config.messages.admin.adminTagOutCanceled); + return; + } + + return; } if (secondTagEvent.isCancelled()) { - this.announcer.sendMessage(sender, this.config.messages.admin.adminTagOutCanceled); + CancelTagReason cancelReason = secondTagEvent.getCancelReason(); + + if (cancelReason == CancelTagReason.TAGOUT) { + this.announcer.sendMessage(sender, this.config.messages.admin.adminTagOutCanceled); + return; + } + + return; } if (firstTagEvent.isCancelled() && secondTagEvent.isCancelled()) { diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutController.java index a32f7533..dd520444 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutController.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/tagout/FightTagOutController.java @@ -1,5 +1,6 @@ package com.eternalcode.combat.fight.tagout; +import com.eternalcode.combat.fight.event.CancelTagReason; import com.eternalcode.combat.fight.event.FightTagEvent; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -19,6 +20,7 @@ void onTagOut(FightTagEvent event) { UUID uniqueId = event.getPlayer(); if (this.tagOutService.isTaggedOut(uniqueId)) { + event.setCancelReason(CancelTagReason.TAGOUT); event.setCancelled(true); } } From 0c7430a23b69b3a49ec8f67abd95ab7bf64223c8 Mon Sep 17 00:00:00 2001 From: Martin Date: Wed, 2 Oct 2024 18:28:10 +0200 Subject: [PATCH 7/7] remove unsed `OTHER` in CancelTagReason. --- .../com/eternalcode/combat/fight/event/CancelTagReason.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/CancelTagReason.java b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/CancelTagReason.java index d8cfbe52..3bd1c7c4 100644 --- a/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/CancelTagReason.java +++ b/eternalcombat-api/src/main/java/com/eternalcode/combat/fight/event/CancelTagReason.java @@ -2,6 +2,6 @@ public enum CancelTagReason { - TAGOUT, - OTHER + TAGOUT + }