From 301de953c04e3d7c78aee9ce14bee39ba36e3bc7 Mon Sep 17 00:00:00 2001 From: Maxlego08 Date: Thu, 22 Feb 2024 19:58:18 +0100 Subject: [PATCH] :memo: Add koth save for loot --- src/fr/maxlego08/koth/KothListener.java | 2 ++ src/fr/maxlego08/koth/ZKoth.java | 21 ++++++++++++-------- src/fr/maxlego08/koth/api/Koth.java | 4 +++- src/fr/maxlego08/koth/loader/KothLoader.java | 4 +++- src/main/resources/koth-example.yml | 2 +- 5 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/fr/maxlego08/koth/KothListener.java b/src/fr/maxlego08/koth/KothListener.java index c1f65e8..ce037cc 100644 --- a/src/fr/maxlego08/koth/KothListener.java +++ b/src/fr/maxlego08/koth/KothListener.java @@ -127,6 +127,8 @@ public class KothListener extends ListenerAdapter { itemStacks.removeIf(itemStack -> itemStack == null || itemStack.getType() == Material.AIR); koth.setItemStacks(itemStacks); message(player, Message.LOOT_CHANGE, "%name%", koth.getName()); + + manager.saveKoth(koth); } } } diff --git a/src/fr/maxlego08/koth/ZKoth.java b/src/fr/maxlego08/koth/ZKoth.java index e41dea2..a7e485d 100644 --- a/src/fr/maxlego08/koth/ZKoth.java +++ b/src/fr/maxlego08/koth/ZKoth.java @@ -526,12 +526,6 @@ public class ZKoth extends ZUtils implements Koth { } - if (Config.displayMessageKothCap.contains(currentRemainingSeconds)) { - broadcast(Message.EVENT_TIMER); - } else if (enableEverySecondsCapMessage) { - broadcast(Message.EVENT_EVERYSECONDS); - } - if (this.hasWin()) { this.endKoth(task, cuboid, player); @@ -541,6 +535,14 @@ public class ZKoth extends ZUtils implements Koth { KothCapEvent capEvent = new KothCapEvent(this, player, this.remainingSeconds.get(), this.kothTeam.getFactionTag(player)); capEvent.callEvent(); + if (Config.displayMessageKothCap.contains(currentRemainingSeconds)) { + broadcast(Message.EVENT_TIMER); + } else if (enableEverySecondsCapMessage) { + broadcast(Message.EVENT_EVERYSECONDS); + } + + this.plugin.getKothHologram().update(this); + switch (this.kothType) { case CAPTURE: default: @@ -551,8 +553,6 @@ public class ZKoth extends ZUtils implements Koth { this.playersValues.put(this.currentPlayer.getUniqueId(), this.getValue(this.currentPlayer) + 1); break; } - - this.plugin.getKothHologram().update(this); } }); } @@ -773,4 +773,9 @@ public class ZKoth extends ZUtils implements Koth { Collections.shuffle(itemStacks, new Random()); return itemStacks.stream().limit(this.randomItemStacks).collect(Collectors.toList()); } + + @Override + public int getRandomItemStack() { + return this.randomItemStacks; + } } diff --git a/src/fr/maxlego08/koth/api/Koth.java b/src/fr/maxlego08/koth/api/Koth.java index ad0642e..68c943c 100644 --- a/src/fr/maxlego08/koth/api/Koth.java +++ b/src/fr/maxlego08/koth/api/Koth.java @@ -1,6 +1,5 @@ package fr.maxlego08.koth.api; -import fr.maxlego08.koth.KothPlugin; import fr.maxlego08.koth.api.discord.DiscordWebhookConfig; import fr.maxlego08.koth.api.utils.HologramConfig; import fr.maxlego08.koth.api.utils.ScoreboardConfiguration; @@ -76,9 +75,12 @@ public interface Koth { DiscordWebhookConfig getDiscordWebhookConfig(); List getItemStacks(); + void setItemStacks(List itemStacks); KothLootType getLootType(); List getRandomItemStacks(); + + int getRandomItemStack(); } diff --git a/src/fr/maxlego08/koth/loader/KothLoader.java b/src/fr/maxlego08/koth/loader/KothLoader.java index 7b7c345..cd45848 100644 --- a/src/fr/maxlego08/koth/loader/KothLoader.java +++ b/src/fr/maxlego08/koth/loader/KothLoader.java @@ -66,9 +66,10 @@ public class KothLoader extends ZUtils implements Loader { } List itemStacks = configuration.getStringList("loot.items").stream().map(ItemStackUtils::deserializeItemStack).collect(Collectors.toList()); + int randomItemStacks = configuration.getInt("loot.random", 0); return new ZKoth(this.plugin, fileName, kothType, name, captureSeconds, minLocation, maxLocation, startCommands, endCommands, cooldownScoreboard, - startScoreboard, cooldownStart, stopAfterSeconds, enableStartCapMessage, enableLooseCapMessage, enableEverySecondsCapMessage, hologramConfig, itemStacks, kothLootType, discordWebhookConfig); + startScoreboard, cooldownStart, stopAfterSeconds, enableStartCapMessage, enableLooseCapMessage, enableEverySecondsCapMessage, hologramConfig, itemStacks, kothLootType, discordWebhookConfig, randomItemStacks); } @Override @@ -91,6 +92,7 @@ public class KothLoader extends ZUtils implements Loader { hologramConfigLoader.save(koth.getHologramConfig(), configuration, "hologram."); configuration.set("loot.type", koth.getLootType().name()); + configuration.set("loot.random", koth.getRandomItemStack()); List items = koth.getItemStacks().stream().map(ItemStackUtils::serializeItemStack).collect(Collectors.toList()); configuration.set("loot.items", items); diff --git a/src/main/resources/koth-example.yml b/src/main/resources/koth-example.yml index 0f6668f..ed536fa 100644 --- a/src/main/resources/koth-example.yml +++ b/src/main/resources/koth-example.yml @@ -135,7 +135,7 @@ webhook: loot: # Takes 10 items from the list of items, to put all the items you must put -1 - randomItemStacks: 3 + random: 3 # Available type : # DROP # CHEST