From 9978137280056b96f093d69fc0563a62ecd41536 Mon Sep 17 00:00:00 2001 From: Joshi1999 Date: Wed, 9 Mar 2022 00:01:57 +0100 Subject: [PATCH 01/12] MatchTeamColor Condidtion showing matching item to color --- .../conditions/MatchTeamCondition.java | 63 +++++++++++++++---- 1 file changed, 51 insertions(+), 12 deletions(-) diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/MatchTeamCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/MatchTeamCondition.java index fc70aee66..b604d253d 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/MatchTeamCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/MatchTeamCondition.java @@ -18,21 +18,22 @@ import au.com.mineauz.minigames.minigame.TeamColor; import au.com.mineauz.minigamesregions.Node; import au.com.mineauz.minigamesregions.Region; +import org.bukkit.inventory.ItemStack; public class MatchTeamCondition extends ConditionInterface { - + private StringFlag team = new StringFlag("RED", "team"); @Override public String getName() { return "MATCH_TEAM"; } - + @Override - public String getCategory(){ + public String getCategory() { return "Team Conditions"; } - + @Override public void describe(Map out) { out.put("Team", team.getFlag()); @@ -55,7 +56,7 @@ public boolean checkNodeCondition(MinigamePlayer player, Node node) { @Override public boolean checkRegionCondition(MinigamePlayer player, Region region) { - if(player == null || !player.isInMinigame()) return false; + if (player == null || !player.isInMinigame()) return false; return player.getTeam() != null && player.getTeam().getColor().toString().equals(team.getFlag()); } @@ -67,7 +68,7 @@ public void saveArguments(FileConfiguration config, String path) { @Override public void loadArguments(FileConfiguration config, - String path) { + String path) { team.loadValue(path, config); loadInvert(config, path); } @@ -75,25 +76,63 @@ public void loadArguments(FileConfiguration config, @Override public boolean displayMenu(MinigamePlayer player, Menu prev) { Menu m = new Menu(3, "Match Team", player); - m.addItem(new MenuItemPage("Back",MenuUtility.getBackMaterial(), prev), m.getSize() - 9); + m.addItem(new MenuItemPage("Back", MenuUtility.getBackMaterial(), prev), m.getSize() - 9); List teams = new ArrayList<>(); - for(TeamColor t : TeamColor.values()) + for (TeamColor t : TeamColor.values()) teams.add(MinigameUtils.capitalize(t.toString().replace("_", " "))); - m.addItem(new MenuItemList("Team Color", Material.WHITE_WOOL, new Callback() { - + + m.addItem(new MenuItemList("Team Color", getTeamMaterial(), new Callback() { + @Override public void setValue(String value) { team.setFlag(value.toUpperCase().replace(" ", "_")); } - + @Override public String getValue() { return MinigameUtils.capitalize(team.getFlag().replace("_", " ")); } - }, teams)); + }, teams) { + @Override + public ItemStack getItem() { + ItemStack stack = super.getItem(); + stack.setType(getTeamMaterial()); + return stack; + } + }); addInvertMenuItem(m); m.displayMenu(player); return true; } + private Material getTeamMaterial() { + switch (team.getFlag()) { + case "RED": + return Material.RED_WOOL; + case "BLUE": + return Material.BLUE_WOOL; + case "GREEN": + return Material.GREEN_WOOL; + case "YELLOW": + return Material.YELLOW_WOOL; + case "PURPLE": + return Material.PURPLE_WOOL; + case "BLACK": + return Material.BLACK_WOOL; + case "DARK_RED": + return Material.RED_CONCRETE; + case "DARK_BLUE": + return Material.BLUE_CONCRETE; + case "DARK_GREEN": + return Material.GREEN_CONCRETE; + case "DARK_PURPLE": + return Material.PURPLE_CONCRETE; + case "GRAY": + return Material.GRAY_WOOL; + case "WHITE": + default: + return Material.WHITE_WOOL; + } + } + } From c32475ac04c8b0f7d5c039e2772d16cc4e8eca25 Mon Sep 17 00:00:00 2001 From: Joshi1999 Date: Wed, 9 Mar 2022 00:54:48 +0100 Subject: [PATCH 02/12] Fixes PlayerHasItemCondition --- .../conditions/PlayerHasItemCondition.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerHasItemCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerHasItemCondition.java index bd75aa4f1..1467b5da0 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerHasItemCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerHasItemCondition.java @@ -101,13 +101,13 @@ private boolean check(MinigamePlayer player) { if (checkType == PositionType.HOTBAR) { startSlot = 0; - endSlot = 9; + endSlot = 8; } else if (checkType == PositionType.MAIN) { startSlot = 9; - endSlot = 36; + endSlot = 35; } else if (checkType == PositionType.SLOT) { startSlot = slot.getFlag(); - endSlot = startSlot + 1; + endSlot = startSlot; } else { startSlot = 0; endSlot = searchItems.length; @@ -128,9 +128,12 @@ private boolean check(MinigamePlayer player) { } int i =0; for(ItemStack slot: searchItems){ - if((iendSlot)) + if((iendSlot)) { + i++; continue; - if (slot.getType() == material) { + } + i++; + if (slot != null && slot.getType() == material) { ItemMeta meta = slot.getItemMeta(); From da8b7adfe1b57bdcf387739ad217f68321076342 Mon Sep 17 00:00:00 2001 From: Joshi1999 Date: Wed, 9 Mar 2022 12:13:33 +0100 Subject: [PATCH 03/12] Fixing AsyncInventoryEvent Calls --- .../au/com/mineauz/minigames/menu/Menu.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/menu/Menu.java b/Minigames/src/main/java/au/com/mineauz/minigames/menu/Menu.java index 8608b47a2..89e16a3d5 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/menu/Menu.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/menu/Menu.java @@ -151,14 +151,18 @@ private void updateAll() { } public void displayMenu(MinigamePlayer ply) { - updateAll(); - populateMenu(); - Player player = ply.getPlayer(); - - inv = Bukkit.createInventory(player, rows * 9, name); - inv.setContents(pageView); - ply.getPlayer().openInventory(inv); - ply.setMenu(this); + Menu t = this; + // Some calls of displayMenu are async, which is not allowed. + Minigames.getPlugin().getServer().getScheduler().runTask(Minigames.getPlugin(), () -> { + updateAll(); + populateMenu(); + Player player = ply.getPlayer(); + + inv = Bukkit.createInventory(player, rows * 9, name); + inv.setContents(pageView); + ply.getPlayer().openInventory(inv); + ply.setMenu(t); + }); } public boolean getAllowModify() { From f7dbe71165613e3afc18c33a51f7e0743c8e863c Mon Sep 17 00:00:00 2001 From: Joshi1999 Date: Thu, 10 Mar 2022 21:47:54 +0100 Subject: [PATCH 04/12] Adding GameTickTrigger --- .../com/mineauz/minigamesregions/Region.java | 47 +++++++++++++++++-- .../minigamesregions/RegionEvents.java | 5 +- .../minigamesregions/RegionModule.java | 2 + .../conditions/ConditionInterface.java | 1 + .../ContainsEntireTeamCondition.java | 4 ++ .../conditions/ContainsEntityCondition.java | 5 ++ .../conditions/ContainsOneTeamCondition.java | 4 ++ .../conditions/HasFlagCondition.java | 4 ++ .../conditions/HasLoudOutCondition.java | 4 ++ .../conditions/HasRequiredFlagsCondition.java | 4 ++ .../conditions/MatchBlockCondition.java | 4 ++ .../conditions/MatchTeamCondition.java | 5 ++ .../conditions/MinigameTimerCondition.java | 4 ++ .../conditions/PlayerCountCondition.java | 4 ++ .../conditions/PlayerFoodRangeCondition.java | 5 ++ .../conditions/PlayerHasItemCondition.java | 4 ++ .../PlayerHealthRangeCondition.java | 4 ++ .../conditions/PlayerScoreRangeCondition.java | 4 ++ .../conditions/PlayerXPRangeCondition.java | 5 ++ .../conditions/RandomChanceCondition.java | 4 ++ .../conditions/TeamPlayerCountCondition.java | 4 ++ .../conditions/TeamScoreRangeCondition.java | 5 ++ .../menuitems/MenuItemConditionAdd.java | 43 ++++++++++------- .../menuitems/MenuItemRegionExecutor.java | 19 ++++---- .../triggers/BlockBreakTrigger.java | 4 ++ .../triggers/BlockPlaceTrigger.java | 4 ++ .../triggers/DeathTrigger.java | 4 ++ .../triggers/EnterTrigger.java | 4 ++ .../triggers/GameEndTrigger.java | 4 ++ .../triggers/GameJoinTrigger.java | 4 ++ .../triggers/GameQuitTrigger.java | 4 ++ .../triggers/GameStartTrigger.java | 4 ++ .../triggers/GameTickTrigger.java | 24 ++++++++++ .../triggers/InteractTrigger.java | 4 ++ .../triggers/ItemDropTrigger.java | 4 ++ .../triggers/ItemPickupTrigger.java | 4 ++ .../triggers/LeaveTrigger.java | 4 ++ .../triggers/LeftClickBlockTrigger.java | 4 ++ .../triggers/MinigameTimerTrigger.java | 4 ++ .../triggers/PlayerDamageTrigger.java | 5 ++ .../triggers/PlayerDropFlagTrigger.java | 5 ++ .../triggers/PlayerFoodChangeTrigger.java | 5 ++ .../triggers/PlayerKillTrigger.java | 5 ++ .../triggers/PlayerKilledTrigger.java | 5 ++ .../triggers/PlayerTakeFlagTrigger.java | 5 ++ .../triggers/PlayerXPChangeTrigger.java | 5 ++ .../triggers/RandomTrigger.java | 4 ++ .../triggers/RemoteTrigger.java | 4 ++ .../triggers/RespawnTrigger.java | 4 ++ .../triggers/RightClickBlockTrigger.java | 4 ++ .../triggers/StartGlideTrigger.java | 5 ++ .../triggers/StopGlideTrigger.java | 5 ++ .../triggers/TickTrigger.java | 4 ++ .../minigamesregions/triggers/Trigger.java | 2 +- .../minigamesregions/triggers/Triggers.java | 1 + 55 files changed, 312 insertions(+), 30 deletions(-) create mode 100644 Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameTickTrigger.java diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/Region.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/Region.java index e6a118aa2..0010ea39f 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/Region.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/Region.java @@ -11,6 +11,7 @@ import au.com.mineauz.minigamesregions.triggers.Triggers; import com.google.common.collect.ImmutableSet; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.Location; import java.util.ArrayList; @@ -25,6 +26,8 @@ public class Region implements ScriptObject { private List players = new ArrayList<>(); private long taskDelay = 20; private int taskID; + private int gameTickTaskID; + private int gameTickDelay = 1; private boolean enabled = true; public Region(String name, Location point1, Location point2){ @@ -146,7 +149,7 @@ public void changeTickDelay(long delay){ removeTickTask(); taskDelay = delay; taskID = Bukkit.getScheduler().scheduleSyncRepeatingTask(Minigames.getPlugin(), () -> { -List plys = new ArrayList<>(players); + List plys = new ArrayList<>(players); for(MinigamePlayer player : plys){ execute(Triggers.getTrigger("TICK"), player); } @@ -158,20 +161,35 @@ public long getTickDelay(){ } public void startTickTask(){ - if(taskID != -1) + if(taskID != -1) { removeTickTask(); - + } + taskID = Bukkit.getScheduler().scheduleSyncRepeatingTask(Minigames.getPlugin(), () -> { -List plys = new ArrayList<>(players); + List plys = new ArrayList<>(players); for(MinigamePlayer player : plys){ execute(Triggers.getTrigger("TICK"), player); } }, 0, taskDelay); } + + public void startGameTickTask() { + if(gameTickTaskID != -1) { + removeGameTickTask(); + } + + gameTickTaskID = Bukkit.getScheduler().scheduleSyncRepeatingTask(Minigames.getPlugin(), () -> { + executeGameTick(); + }, 0, gameTickDelay); + } public void removeTickTask(){ Bukkit.getScheduler().cancelTask(taskID); } + + public void removeGameTickTask() { + Bukkit.getScheduler().cancelTask(gameTickTaskID); + } public void setEnabled(boolean enabled){ this.enabled = enabled; @@ -217,6 +235,27 @@ public void execute(RegionExecutor exec, MinigamePlayer player){ exec.addPlayerTrigger(player); } } + + public void executeGameTick() { + if(players.size() == 0) return; + // There is no condition, which is not player specific, so we can just execute all executors. + for(RegionExecutor exec : executors) { + for (ActionInterface act : exec.getActions()) { + if (!enabled && !act.getName().equalsIgnoreCase("SET_ENABLED")) continue; + try { + if (checkConditions(exec, null) && exec.getTrigger() == Triggers.getTrigger("GAME_TICK")) { + act.executeRegionAction(null, this); + exec.addPublicTrigger(); + } + } catch (Exception e) { + for (MinigamePlayer player : players) { + player.getPlayer().sendMessage(ChatColor.AQUA + "[Minigames]" + + ChatColor.RED + " Only RandomChanceCondition is applicable to game tick trigger!"); + } + } + } + } + } @Override public ScriptReference get(String name) { diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/RegionEvents.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/RegionEvents.java index dfc3aed4f..46be3c836 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/RegionEvents.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/RegionEvents.java @@ -141,7 +141,9 @@ private void playerJoin(JoinMinigameEvent event){ for(RegionExecutor ex : region.getExecutors()){ if(ex.getTrigger().getName().equalsIgnoreCase("TICK")){ region.startTickTask(); - break; + } + if(ex.getTrigger().getName().equals("GAME_TICK")){ + region.startGameTickTask(); } } } @@ -194,6 +196,7 @@ private void playerQuit(QuitMinigameEvent event){ exec.clearTriggers(); } region.removeTickTask(); + region.removeGameTickTask(); region.setEnabled(true); } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/RegionModule.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/RegionModule.java index 52d612ba1..e7d4741f0 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/RegionModule.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/RegionModule.java @@ -277,12 +277,14 @@ public List getRegions(){ public void removeRegion(String name){ if(hasRegion(name)){ regions.get(name).removeTickTask(); + regions.get(name).removeGameTickTask(); regions.remove(name); } else{ for(String n : regions.keySet()){ if(n.equalsIgnoreCase(name)){ regions.get(n).removeTickTask(); + regions.get(n).removeGameTickTask(); regions.remove(n); break; } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/ConditionInterface.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/ConditionInterface.java index 6277c3873..c25f7aea0 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/ConditionInterface.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/ConditionInterface.java @@ -37,6 +37,7 @@ public boolean isInverted(){ public abstract void saveArguments(FileConfiguration config, String path); public abstract void loadArguments(FileConfiguration config, String path); public abstract boolean displayMenu(MinigamePlayer player, Menu prev); + public abstract boolean onPlayerApplicable(); public abstract void describe(Map out); diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/ContainsEntireTeamCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/ContainsEntireTeamCondition.java index 2030a652b..340b47689 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/ContainsEntireTeamCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/ContainsEntireTeamCondition.java @@ -67,4 +67,8 @@ public boolean displayMenu(MinigamePlayer player, Menu prev) { return true; } + @Override + public boolean onPlayerApplicable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/ContainsEntityCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/ContainsEntityCondition.java index b40fc1365..26a134f1d 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/ContainsEntityCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/ContainsEntityCondition.java @@ -134,4 +134,9 @@ public void describe(Map out) { out.put("Match Name", customName.getFlag()); } } + + @Override + public boolean onPlayerApplicable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/ContainsOneTeamCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/ContainsOneTeamCondition.java index dbc2666be..c680594a7 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/ContainsOneTeamCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/ContainsOneTeamCondition.java @@ -76,4 +76,8 @@ public boolean displayMenu(MinigamePlayer player, Menu prev) { return true; } + @Override + public boolean onPlayerApplicable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/HasFlagCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/HasFlagCondition.java index 7bbfff026..f92782053 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/HasFlagCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/HasFlagCondition.java @@ -80,4 +80,8 @@ public boolean displayMenu(MinigamePlayer player, Menu prev) { return true; } + @Override + public boolean onPlayerApplicable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/HasLoudOutCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/HasLoudOutCondition.java index 7422cb70f..716cfe143 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/HasLoudOutCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/HasLoudOutCondition.java @@ -104,5 +104,9 @@ public void describe(Map out) { out.put("Loadout",loadOutName.getFlag()); } + @Override + public boolean onPlayerApplicable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/HasRequiredFlagsCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/HasRequiredFlagsCondition.java index 3f725db3e..6fa509b89 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/HasRequiredFlagsCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/HasRequiredFlagsCondition.java @@ -69,4 +69,8 @@ public boolean displayMenu(MinigamePlayer player, Menu prev) { return true; } + @Override + public boolean onPlayerApplicable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/MatchBlockCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/MatchBlockCondition.java index 3802134e6..c0fb935dd 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/MatchBlockCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/MatchBlockCondition.java @@ -123,4 +123,8 @@ public BlockData getValue() { return true; } + @Override + public boolean onPlayerApplicable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/MatchTeamCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/MatchTeamCondition.java index b604d253d..70dbf28a2 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/MatchTeamCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/MatchTeamCondition.java @@ -135,4 +135,9 @@ private Material getTeamMaterial() { } } + @Override + public boolean onPlayerApplicable() { + return true; + } + } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/MinigameTimerCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/MinigameTimerCondition.java index cb54a828c..53f4a2f90 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/MinigameTimerCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/MinigameTimerCondition.java @@ -91,4 +91,8 @@ public boolean displayMenu(MinigamePlayer player, Menu prev) { return true; } + @Override + public boolean onPlayerApplicable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerCountCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerCountCondition.java index 128709b86..a34bff862 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerCountCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerCountCondition.java @@ -78,4 +78,8 @@ public boolean displayMenu(MinigamePlayer player, Menu prev) { return true; } + @Override + public boolean onPlayerApplicable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerFoodRangeCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerFoodRangeCondition.java index d3242496b..514e0e815 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerFoodRangeCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerFoodRangeCondition.java @@ -91,4 +91,9 @@ public boolean displayMenu(MinigamePlayer player, Menu prev) { m.displayMenu(player); return true; } + + @Override + public boolean onPlayerApplicable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerHasItemCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerHasItemCondition.java index 1467b5da0..6fe23468f 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerHasItemCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerHasItemCondition.java @@ -298,4 +298,8 @@ private enum PositionType { SLOT } + @Override + public boolean onPlayerApplicable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerHealthRangeCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerHealthRangeCondition.java index 6a7102b6c..8ed544726 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerHealthRangeCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerHealthRangeCondition.java @@ -84,4 +84,8 @@ public boolean displayMenu(MinigamePlayer player, Menu prev) { return true; } + @Override + public boolean onPlayerApplicable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerScoreRangeCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerScoreRangeCondition.java index daad47f17..9ca1163d4 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerScoreRangeCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerScoreRangeCondition.java @@ -80,4 +80,8 @@ public boolean displayMenu(MinigamePlayer player, Menu prev) { return true; } + @Override + public boolean onPlayerApplicable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerXPRangeCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerXPRangeCondition.java index 2e68150e9..8a82412f6 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerXPRangeCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/PlayerXPRangeCondition.java @@ -91,4 +91,9 @@ public boolean displayMenu(MinigamePlayer player, Menu prev) { m.displayMenu(player); return true; } + + @Override + public boolean onPlayerApplicable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/RandomChanceCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/RandomChanceCondition.java index 7f56916ef..843d95e18 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/RandomChanceCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/RandomChanceCondition.java @@ -81,4 +81,8 @@ public boolean displayMenu(MinigamePlayer player, Menu prev) { return true; } + @Override + public boolean onPlayerApplicable() { + return false; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/TeamPlayerCountCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/TeamPlayerCountCondition.java index 3ab97b4b9..10a37d92f 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/TeamPlayerCountCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/TeamPlayerCountCondition.java @@ -91,4 +91,8 @@ public boolean displayMenu(MinigamePlayer player, Menu prev) { return true; } + @Override + public boolean onPlayerApplicable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/TeamScoreRangeCondition.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/TeamScoreRangeCondition.java index d5bd69439..c990ed7c4 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/TeamScoreRangeCondition.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/conditions/TeamScoreRangeCondition.java @@ -126,4 +126,9 @@ public String getValue() { m.displayMenu(player); return true; } + + @Override + public boolean onPlayerApplicable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/menuitems/MenuItemConditionAdd.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/menuitems/MenuItemConditionAdd.java index c1ce26a32..b2e5d7e24 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/menuitems/MenuItemConditionAdd.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/menuitems/MenuItemConditionAdd.java @@ -11,8 +11,8 @@ import java.util.*; -public class MenuItemConditionAdd extends MenuItem{ - +public class MenuItemConditionAdd extends MenuItem { + private RegionExecutor rexec; private NodeExecutor nexec; @@ -25,39 +25,50 @@ public MenuItemConditionAdd(String name, Material displayItem, NodeExecutor exec super(name, displayItem); this.nexec = exec; } - + @Override - public ItemStack onClick(){ + public ItemStack onClick() { Menu m = new Menu(6, "Conditions", getContainer().getViewer()); m.setPreviousPage(getContainer()); Map cats = new HashMap<>(); List cons = new ArrayList<>(Conditions.getAllConditionNames()); Collections.sort(cons); - for(String con : cons){ - if((Conditions.getConditionByName(con).useInNodes() && nexec != null) || - (Conditions.getConditionByName(con).useInRegions() && rexec != null)){ + for (String con : cons) { + if ((Conditions.getConditionByName(con).useInNodes() && nexec != null) || + (Conditions.getConditionByName(con).useInRegions() && rexec != null)) { + if (rexec != null) { + if (!rexec.getTrigger().triggerOnPlayerAvailable()) { + if (Conditions.getConditionByName(con).onPlayerApplicable()) { + continue; + } + } + } else { + if (!nexec.getTrigger().triggerOnPlayerAvailable()) { + if (Conditions.getConditionByName(con).onPlayerApplicable()) { + continue; + } + } + } String catname = Conditions.getConditionByName(con).getCategory(); - if(catname == null) + if (catname == null) catname = "misc conditions"; catname.toLowerCase(); Menu cat = null; - if(!cats.containsKey(catname)){ + if (!cats.containsKey(catname)) { cat = new Menu(6, MinigameUtils.capitalize(catname), getContainer().getViewer()); cats.put(catname, cat); m.addItem(new MenuItemPage(MinigameUtils.capitalize(catname), Material.CHEST, cat)); - cat.addItem(new MenuItemPage("Back",MenuUtility.getBackMaterial(), m), cat.getSize() - 9); - } - else + cat.addItem(new MenuItemPage("Back", MenuUtility.getBackMaterial(), m), cat.getSize() - 9); + } else cat = cats.get(catname); MenuItemCustom c = new MenuItemCustom(MinigameUtils.capitalize(con), Material.PAPER); final String fcon = con; c.setClick(object -> { ConditionInterface condition = Conditions.getConditionByName(fcon); - if(rexec != null){ + if (rexec != null) { rexec.addCondition(condition); getContainer().addItem(new MenuItemCondition(MinigameUtils.capitalize(fcon), Material.PAPER, rexec, condition)); - } - else{ + } else { nexec.addCondition(condition); getContainer().addItem(new MenuItemCondition(MinigameUtils.capitalize(fcon), Material.PAPER, nexec, condition)); } @@ -67,7 +78,7 @@ public ItemStack onClick(){ cat.addItem(c); } } - m.addItem(new MenuItemPage("Back",MenuUtility.getBackMaterial(), getContainer()), m.getSize() - 9); + m.addItem(new MenuItemPage("Back", MenuUtility.getBackMaterial(), getContainer()), m.getSize() - 9); m.displayMenu(getContainer().getViewer()); return null; } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/menuitems/MenuItemRegionExecutor.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/menuitems/MenuItemRegionExecutor.java index 08c253322..c11334c7c 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/menuitems/MenuItemRegionExecutor.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/menuitems/MenuItemRegionExecutor.java @@ -1,5 +1,6 @@ package au.com.mineauz.minigamesregions.menuitems; +import au.com.mineauz.minigamesregions.triggers.Trigger; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; @@ -57,14 +58,16 @@ public ItemStack onClick(){ m.addItem(c2); m.addItem(new MenuItemNewLine()); - - m.addItem(new MenuItemInteger("Trigger Count", - MinigameUtils.stringToList("Number of times this;node can be;triggered"), - Material.STONE, ex.getTriggerCountCallback(), 0, null)); - - m.addItem(new MenuItemBoolean("Trigger Per Player", - MinigameUtils.stringToList("Whether this node;is triggered per player;or just on count"), - Material.ENDER_PEARL, ex.getIsTriggerPerPlayerCallback())); + if (ex.getTrigger().triggerOnPlayerAvailable()) { + m.addItem(new MenuItemInteger("Trigger Count", + MinigameUtils.stringToList("Number of times this;node can be;triggered"), + Material.STONE, ex.getTriggerCountCallback(), 0, null)); + } + if (ex.getTrigger().triggerOnPlayerAvailable()) { + m.addItem(new MenuItemBoolean("Trigger Per Player", + MinigameUtils.stringToList("Whether this node;is triggered per player;or just on count"), + Material.ENDER_PEARL, ex.getIsTriggerPerPlayerCallback())); + } m.addItem(new MenuItemPage("Back",MenuUtility.getBackMaterial(), getContainer()), m.getSize() - 9); m.displayMenu(fviewer); return null; diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/BlockBreakTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/BlockBreakTrigger.java index 27f1be8a7..3111d6d2b 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/BlockBreakTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/BlockBreakTrigger.java @@ -17,4 +17,8 @@ public boolean useInNodes() { return true; } + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/BlockPlaceTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/BlockPlaceTrigger.java index a865886ce..5e17d1d24 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/BlockPlaceTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/BlockPlaceTrigger.java @@ -17,4 +17,8 @@ public boolean useInNodes() { return true; } + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/DeathTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/DeathTrigger.java index 6918e6725..0034b799e 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/DeathTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/DeathTrigger.java @@ -17,4 +17,8 @@ public boolean useInNodes() { return true; } + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/EnterTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/EnterTrigger.java index e08905d86..d39d56b8f 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/EnterTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/EnterTrigger.java @@ -17,4 +17,8 @@ public boolean useInNodes() { return false; } + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameEndTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameEndTrigger.java index 7c45104c6..7a4e89213 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameEndTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameEndTrigger.java @@ -17,4 +17,8 @@ public boolean useInNodes() { return true; } + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameJoinTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameJoinTrigger.java index 46bd4509a..8793f342b 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameJoinTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameJoinTrigger.java @@ -17,4 +17,8 @@ public boolean useInNodes() { return true; } + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameQuitTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameQuitTrigger.java index 2eb972bfc..3c777b85b 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameQuitTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameQuitTrigger.java @@ -17,4 +17,8 @@ public boolean useInNodes() { return true; } + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameStartTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameStartTrigger.java index 9a1fe4d9b..816d86cce 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameStartTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameStartTrigger.java @@ -17,4 +17,8 @@ public boolean useInNodes() { return true; } + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameTickTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameTickTrigger.java new file mode 100644 index 000000000..672a99ceb --- /dev/null +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/GameTickTrigger.java @@ -0,0 +1,24 @@ +package au.com.mineauz.minigamesregions.triggers; + +public class GameTickTrigger implements Trigger { + + @Override + public String getName() { + return "GAME_TICK"; + } + + @Override + public boolean useInRegions() { + return true; + } + + @Override + public boolean useInNodes() { + return false; + } + + @Override + public boolean triggerOnPlayerAvailable() { + return false; + } +} diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/InteractTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/InteractTrigger.java index 5c25815a7..623ae38d7 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/InteractTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/InteractTrigger.java @@ -17,4 +17,8 @@ public boolean useInNodes() { return true; } + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/ItemDropTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/ItemDropTrigger.java index 6ba3dc465..81b933b75 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/ItemDropTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/ItemDropTrigger.java @@ -17,4 +17,8 @@ public boolean useInNodes() { return true; } + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/ItemPickupTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/ItemPickupTrigger.java index 11ffb71d0..ba4741f75 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/ItemPickupTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/ItemPickupTrigger.java @@ -17,4 +17,8 @@ public boolean useInNodes() { return true; } + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/LeaveTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/LeaveTrigger.java index 184ca20be..a6e7997a0 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/LeaveTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/LeaveTrigger.java @@ -17,4 +17,8 @@ public boolean useInNodes() { return false; } + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/LeftClickBlockTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/LeftClickBlockTrigger.java index 89f5bed7e..c653a2a81 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/LeftClickBlockTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/LeftClickBlockTrigger.java @@ -17,4 +17,8 @@ public boolean useInNodes() { return true; } + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/MinigameTimerTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/MinigameTimerTrigger.java index dca61bf63..99e0925b3 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/MinigameTimerTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/MinigameTimerTrigger.java @@ -17,4 +17,8 @@ public boolean useInNodes() { return true; } + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerDamageTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerDamageTrigger.java index b9c263c7f..a2f29902b 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerDamageTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerDamageTrigger.java @@ -15,4 +15,9 @@ public boolean useInRegions() { public boolean useInNodes() { return true; } + + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerDropFlagTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerDropFlagTrigger.java index efa382629..9c2508b84 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerDropFlagTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerDropFlagTrigger.java @@ -19,4 +19,9 @@ public boolean useInRegions() { public boolean useInNodes() { return true; } + + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerFoodChangeTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerFoodChangeTrigger.java index 69e9143e2..cf848a32c 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerFoodChangeTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerFoodChangeTrigger.java @@ -15,4 +15,9 @@ public boolean useInRegions() { public boolean useInNodes() { return true; } + + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerKillTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerKillTrigger.java index ddc64ba65..0b139c931 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerKillTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerKillTrigger.java @@ -19,4 +19,9 @@ public boolean useInRegions() { public boolean useInNodes() { return true; } + + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerKilledTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerKilledTrigger.java index 51a841623..3aeae2057 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerKilledTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerKilledTrigger.java @@ -19,4 +19,9 @@ public boolean useInRegions() { public boolean useInNodes() { return true; } + + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerTakeFlagTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerTakeFlagTrigger.java index b0ded94da..78f41bee0 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerTakeFlagTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerTakeFlagTrigger.java @@ -15,4 +15,9 @@ public boolean useInRegions() { public boolean useInNodes() { return true; } + + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerXPChangeTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerXPChangeTrigger.java index 25fcaa767..664a526f6 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerXPChangeTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/PlayerXPChangeTrigger.java @@ -15,4 +15,9 @@ public boolean useInRegions() { public boolean useInNodes() { return true; } + + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/RandomTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/RandomTrigger.java index 598c4da75..5f02cbb05 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/RandomTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/RandomTrigger.java @@ -17,4 +17,8 @@ public boolean useInNodes() { return true; } + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/RemoteTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/RemoteTrigger.java index 9660fb266..c2d24b4f3 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/RemoteTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/RemoteTrigger.java @@ -17,4 +17,8 @@ public boolean useInNodes() { return true; } + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/RespawnTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/RespawnTrigger.java index cc7329f30..2376a2659 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/RespawnTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/RespawnTrigger.java @@ -17,4 +17,8 @@ public boolean useInNodes() { return true; } + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/RightClickBlockTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/RightClickBlockTrigger.java index de662e817..afc70b22e 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/RightClickBlockTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/RightClickBlockTrigger.java @@ -17,4 +17,8 @@ public boolean useInNodes() { return true; } + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/StartGlideTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/StartGlideTrigger.java index 4f5457eb6..622c269c0 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/StartGlideTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/StartGlideTrigger.java @@ -20,4 +20,9 @@ public boolean useInRegions() { public boolean useInNodes() { return false; } + + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/StopGlideTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/StopGlideTrigger.java index e9b49c483..4ae328152 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/StopGlideTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/StopGlideTrigger.java @@ -19,4 +19,9 @@ public boolean useInRegions() { public boolean useInNodes() { return false; } + + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/TickTrigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/TickTrigger.java index 425cb8a3d..4af48b1eb 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/TickTrigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/TickTrigger.java @@ -17,4 +17,8 @@ public boolean useInNodes() { return false; } + @Override + public boolean triggerOnPlayerAvailable() { + return true; + } } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/Trigger.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/Trigger.java index 2dd11d532..b90f505b8 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/Trigger.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/Trigger.java @@ -5,5 +5,5 @@ public interface Trigger { String getName(); boolean useInRegions(); boolean useInNodes(); - + boolean triggerOnPlayerAvailable(); } diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/Triggers.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/Triggers.java index f8c062ebc..8bd86849e 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/Triggers.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/triggers/Triggers.java @@ -38,6 +38,7 @@ public class Triggers { addTrigger(new RightClickBlockTrigger()); addTrigger(new StartGlideTrigger()); addTrigger(new StopGlideTrigger()); + addTrigger(new GameTickTrigger()); } public static void addTrigger(Trigger trigger){ From 56303534d82814af9a77186613affd44ff6b8c07 Mon Sep 17 00:00:00 2001 From: Joshi1999 Date: Thu, 10 Mar 2022 23:05:29 +0100 Subject: [PATCH 05/12] Fixing Region Select NoSuchElementError --- .../minigames/display/spigot/SpigotDisplayCuboid.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/display/spigot/SpigotDisplayCuboid.java b/Minigames/src/main/java/au/com/mineauz/minigames/display/spigot/SpigotDisplayCuboid.java index 0e185bb9c..39b0192ed 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/display/spigot/SpigotDisplayCuboid.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/display/spigot/SpigotDisplayCuboid.java @@ -77,10 +77,11 @@ private void placeEffectAt(double x, double y, double z) { temp.setZ(z); temp.setWorld(getWorld()); + // TODO Can be changed to Barrier after update to 1.18 if (player == null) { - getWorld().spawnParticle(Particle.BARRIER, temp, 1); + getWorld().spawnParticle(Particle.FLAME, temp, 1, 0, 0, 0, 0); } else { - player.spawnParticle(Particle.BARRIER, temp, 1); + player.spawnParticle(Particle.FLAME, temp, 1, 0, 0, 0, 0); } } } From 89f039bfbfa0a9bc0bcf7975e401c5a12a7a19d8 Mon Sep 17 00:00:00 2001 From: joshi1999 Date: Tue, 19 Jul 2022 20:38:01 +0300 Subject: [PATCH 06/12] Adding keep inventory option --- .../main/java/au/com/mineauz/minigames/Events.java | 13 +++++++++---- .../java/au/com/mineauz/minigames/menu/Menu.java | 11 +++++------ .../au/com/mineauz/minigames/minigame/Minigame.java | 11 +++++++++++ 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/Events.java b/Minigames/src/main/java/au/com/mineauz/minigames/Events.java index d9d244ba6..f21f6a67b 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/Events.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/Events.java @@ -38,10 +38,7 @@ import org.bukkit.inventory.ItemStack; import java.io.File; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; public class Events implements Listener { private static Minigames plugin = Minigames.getPlugin(); @@ -86,6 +83,14 @@ public void onPlayerDeath(PlayerDeathEvent event) { if (ply.isInMinigame()) { Minigame mgm = ply.getMinigame(); if (!mgm.hasDeathDrops()) { + if (mgm.keepInventory()) { + List drops = Arrays.asList(ply.getPlayer().getInventory().getContents()); + PlayerLoadout l = new PlayerLoadout("deathDrops"); + for (int i = 0; i < drops.size(); i++) { + l.addItem(drops.get(i), i); + } + ply.setLoadout(l); + } event.getDrops().clear(); } String msg = ""; diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/menu/Menu.java b/Minigames/src/main/java/au/com/mineauz/minigames/menu/Menu.java index 89e16a3d5..bfc4cf11d 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/menu/Menu.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/menu/Menu.java @@ -152,14 +152,13 @@ private void updateAll() { public void displayMenu(MinigamePlayer ply) { Menu t = this; + Player player = ply.getPlayer(); + updateAll(); + populateMenu(); + inv = Bukkit.createInventory(player, rows * 9, name); + inv.setContents(pageView); // Some calls of displayMenu are async, which is not allowed. Minigames.getPlugin().getServer().getScheduler().runTask(Minigames.getPlugin(), () -> { - updateAll(); - populateMenu(); - Player player = ply.getPlayer(); - - inv = Bukkit.createInventory(player, rows * 9, name); - inv.setContents(pageView); ply.getPlayer().openInventory(inv); ply.setMenu(t); }); diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/minigame/Minigame.java b/Minigames/src/main/java/au/com/mineauz/minigames/minigame/Minigame.java index fc02a3903..77f481583 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/minigame/Minigame.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/minigame/Minigame.java @@ -121,6 +121,7 @@ public class Minigame implements ScriptObject { private BooleanFlag allowDragonEggTeleport = new BooleanFlag(true, "allowDragonEggTeleport"); private BooleanFlag usePlayerDisplayNames = new BooleanFlag(true, "usePlayerDisplayNames"); private BooleanFlag showPlayerBroadcasts = new BooleanFlag(true, "showPlayerBroadcasts"); + private BooleanFlag keepInventory = new BooleanFlag(false, "keepInventory"); private StringFlag mechanic = new StringFlag("custom", "scoretype"); private BooleanFlag paintBallMode = new BooleanFlag(false, "paintball"); @@ -241,6 +242,7 @@ private void setup(MinigameType type, Location start) { addConfigFlag(minChestRandom); addConfigFlag(minPlayers); addConfigFlag(usePlayerDisplayNames); + addConfigFlag(keepInventory); addConfigFlag(showPlayerBroadcasts); addConfigFlag(minScore); addConfigFlag(objective); @@ -400,6 +402,14 @@ public void setUsePlayerDisplayNames(Boolean value) { usePlayerDisplayNames.setFlag(value); } + public boolean keepInventory() { + return keepInventory.getFlag(); + } + + public void setKeepInventory(boolean value) { + keepInventory.setFlag(value); + } + public int getMaxPlayers() { return maxPlayers.getFlag(); } @@ -1233,6 +1243,7 @@ public void setValue(Integer value) { itemsPlayer.add(usePlayerDisplayNames.getMenuItem("Use Players Display Names", Material.POTATO, MinigameUtils .stringToList("Use Player Nicks or Real Names"))); itemsPlayer.add(showPlayerBroadcasts.getMenuItem("Show Join/Exit Broadcasts", Material.PAPER, MinigameUtils.stringToList("Show Join and Exit broadcasts; Plus other Player broadcasts"))); + itemsPlayer.add(keepInventory.getMenuItem("Keep Inventory", Material.ZOMBIE_HEAD)); playerMenu.addItems(itemsPlayer); playerMenu.addItem(new MenuItemPage("Back", MenuUtility.getBackMaterial(), main), main.getSize() - 9); From 3f1b9f7572c9ebd60c0eb9faeb4a197fa1d19d04 Mon Sep 17 00:00:00 2001 From: joshi1999 Date: Fri, 5 Aug 2022 19:12:40 +0200 Subject: [PATCH 07/12] Update to 1.19 - Change RegionDisplay to Barrier and imporved performance issues, when many and big regions were displayed --- Minigames/pom.xml | 8 +++- .../minigames/commands/BackendCommand.java | 6 ++- .../minigames/commands/ScoreboardCommand.java | 4 +- .../display/spigot/SpigotDisplayCuboid.java | 13 ++++-- .../mineauz/minigames/helpers/TestHelper.java | 30 ++++++++++++++ .../mineauz/minigames/objects/MockSign.java | 40 ++++++++++++++++++- .../minigames/objects/SignBlockDataMock.java | 31 ++++++++++++++ Regions/pom.xml | 2 +- .../util/NullCommandSender.java | 25 +++++++++++- pom.xml | 10 ++--- 10 files changed, 153 insertions(+), 16 deletions(-) diff --git a/Minigames/pom.xml b/Minigames/pom.xml index 299391d65..f4bd32749 100644 --- a/Minigames/pom.xml +++ b/Minigames/pom.xml @@ -5,7 +5,7 @@ au.com.mineauz MinigamesProject - 1.16-SNAPSHOT + 1.19-SNAPSHOT ../pom.xml Minigames @@ -109,6 +109,12 @@ paste-gg-api 1.0.0-SNAPSHOT + + commons-lang + commons-lang + 2.5 + compile + diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/commands/BackendCommand.java b/Minigames/src/main/java/au/com/mineauz/minigames/commands/BackendCommand.java index 7dc1fbb3a..14cb43a14 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/commands/BackendCommand.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/commands/BackendCommand.java @@ -14,6 +14,8 @@ import java.util.List; import java.util.logging.Level; +import static com.google.common.util.concurrent.MoreExecutors.directExecutor; + public class BackendCommand implements ICommand { @Override public String getName() { @@ -77,7 +79,7 @@ public void onFailure(Throwable t) { @Override public void onSuccess(Void result) { } - }); + }, directExecutor()); } catch (IllegalArgumentException e) { sender.sendMessage(ChatColor.RED + e.getMessage()); } @@ -97,7 +99,7 @@ public void onSuccess(Void result) { sender.sendMessage(ChatColor.GOLD + "The backend has been successfully switched"); sender.sendMessage(ChatColor.GOLD + "!!! This change is " + ChatColor.BOLD + "temporary" + ChatColor.GOLD + ". Please update the config !!!"); } - }); + }, directExecutor()); } catch (IllegalArgumentException e) { sender.sendMessage(ChatColor.RED + e.getMessage()); } diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/commands/ScoreboardCommand.java b/Minigames/src/main/java/au/com/mineauz/minigames/commands/ScoreboardCommand.java index 570d6d390..2e653edb4 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/commands/ScoreboardCommand.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/commands/ScoreboardCommand.java @@ -16,6 +16,8 @@ import java.util.Arrays; import java.util.List; +import static com.google.common.util.concurrent.MoreExecutors.directExecutor; + public class ScoreboardCommand implements ICommand { private Minigames plugin = Minigames.getPlugin(); @@ -166,7 +168,7 @@ public void onFailure(Throwable t) { sender.sendMessage(ChatColor.RED + "An internal error occured while loading the statistics"); t.printStackTrace(); } - }); + }, directExecutor()); return true; } diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/display/spigot/SpigotDisplayCuboid.java b/Minigames/src/main/java/au/com/mineauz/minigames/display/spigot/SpigotDisplayCuboid.java index 39b0192ed..5c0469dfd 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/display/spigot/SpigotDisplayCuboid.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/display/spigot/SpigotDisplayCuboid.java @@ -5,6 +5,7 @@ import au.com.mineauz.minigames.display.IDisplayCubiod; import au.com.mineauz.minigames.display.INonPersistantDisplay; import org.bukkit.Location; +import org.bukkit.Material; import org.bukkit.Particle; import org.bukkit.World; import org.bukkit.entity.Player; @@ -16,6 +17,8 @@ public class SpigotDisplayCuboid extends AbstractDisplayObject implements IDispl private Vector minCorner; private Vector maxCorner; + private int lastBarrier = 41; + public SpigotDisplayCuboid(DisplayManager manager, World world, Vector minCorner, Vector maxCorner) { super(manager, world); this.minCorner = minCorner; @@ -72,16 +75,20 @@ public void refresh() { } private void placeEffectAt(double x, double y, double z) { + lastBarrier++; + if (lastBarrier < 41) { + return; + } + lastBarrier = 0; temp.setX(x); temp.setY(y); temp.setZ(z); temp.setWorld(getWorld()); - // TODO Can be changed to Barrier after update to 1.18 if (player == null) { - getWorld().spawnParticle(Particle.FLAME, temp, 1, 0, 0, 0, 0); + getWorld().spawnParticle(Particle.BLOCK_MARKER, temp, 1, 0, 0, 0, 0, Material.BARRIER.createBlockData()); } else { - player.spawnParticle(Particle.FLAME, temp, 1, 0, 0, 0, 0); + player.spawnParticle(Particle.BLOCK_MARKER, temp, 1, 0, 0, 0, 0, Material.BARRIER.createBlockData()); } } } diff --git a/Minigames/src/test/java/au/com/mineauz/minigames/helpers/TestHelper.java b/Minigames/src/test/java/au/com/mineauz/minigames/helpers/TestHelper.java index 725b1b08b..801dd9737 100644 --- a/Minigames/src/test/java/au/com/mineauz/minigames/helpers/TestHelper.java +++ b/Minigames/src/test/java/au/com/mineauz/minigames/helpers/TestHelper.java @@ -12,8 +12,13 @@ import be.seeseemelk.mockbukkit.block.BlockMock; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.SoundGroup; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.block.BlockSupport; import org.bukkit.block.data.BlockData; import org.bukkit.material.MaterialData; +import org.jetbrains.annotations.NotNull; /** * Created for the AddstarMC Project. Created by Narimm on 6/02/2019. @@ -76,6 +81,31 @@ public boolean matches(BlockData blockData) { public BlockData clone() { return this; } + + @Override + public @NotNull SoundGroup getSoundGroup() { + return null; + } + + @Override + public boolean isSupported(@NotNull Block block) { + return false; + } + + @Override + public boolean isSupported(@NotNull Location location) { + return false; + } + + @Override + public boolean isFaceSturdy(@NotNull BlockFace blockFace, @NotNull BlockSupport blockSupport) { + return false; + } + + @Override + public boolean isRandomlyTicked() { + return false; + } }; return new SignBlockMock(Material.OAK_SIGN, new Location(world, 10, 40, 10), sign, bData); } diff --git a/Minigames/src/test/java/au/com/mineauz/minigames/objects/MockSign.java b/Minigames/src/test/java/au/com/mineauz/minigames/objects/MockSign.java index 5c3f110b8..ee5570961 100644 --- a/Minigames/src/test/java/au/com/mineauz/minigames/objects/MockSign.java +++ b/Minigames/src/test/java/au/com/mineauz/minigames/objects/MockSign.java @@ -5,6 +5,7 @@ import be.seeseemelk.mockbukkit.UnimplementedOperationException; import be.seeseemelk.mockbukkit.block.BlockStateMock; +import net.kyori.adventure.text.Component; import org.bukkit.DyeColor; import org.bukkit.Location; import org.bukkit.NamespacedKey; @@ -33,6 +34,21 @@ public MockSign(MaterialData data, boolean edittable) { lines.addLast(""); } + @Override + public @NotNull List lines() { + return null; + } + + @Override + public @NotNull Component line(int i) throws IndexOutOfBoundsException { + return null; + } + + @Override + public void line(int i, @NotNull Component component) throws IndexOutOfBoundsException { + + } + @Override public String[] getLines() { String[] out = new String[lines.size()]; @@ -60,17 +76,37 @@ public void setEditable(boolean b) { edittable = b; } + @Override + public boolean isGlowingText() { + return false; + } + + @Override + public void setGlowingText(boolean b) { + + } + @Override public Location getLocation(Location loc) { return super.getLocation(loc); } - @Override + @Override + public boolean isCollidable() { + return false; + } + + @Override public @NotNull PersistentDataContainer getPersistentDataContainer() { throw new UnimplementedOperationException("This is not yet implemented"); } - @Override + @Override + public boolean isSnapshot() { + return false; + } + + @Override public @Nullable DyeColor getColor() { return null; } diff --git a/Minigames/src/test/java/au/com/mineauz/minigames/objects/SignBlockDataMock.java b/Minigames/src/test/java/au/com/mineauz/minigames/objects/SignBlockDataMock.java index 66ae4229c..0e9c91441 100644 --- a/Minigames/src/test/java/au/com/mineauz/minigames/objects/SignBlockDataMock.java +++ b/Minigames/src/test/java/au/com/mineauz/minigames/objects/SignBlockDataMock.java @@ -1,7 +1,13 @@ package au.com.mineauz.minigames.objects; +import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.SoundGroup; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.block.BlockSupport; import org.bukkit.block.data.BlockData; +import org.jetbrains.annotations.NotNull; /** * Created for the AddstarMC Project. Created by Narimm on 10/01/2019. @@ -36,4 +42,29 @@ public boolean matches(BlockData blockData) { public BlockData clone() { return null; } + + @Override + public @NotNull SoundGroup getSoundGroup() { + return null; + } + + @Override + public boolean isSupported(@NotNull Block block) { + return false; + } + + @Override + public boolean isSupported(@NotNull Location location) { + return false; + } + + @Override + public boolean isFaceSturdy(@NotNull BlockFace blockFace, @NotNull BlockSupport blockSupport) { + return false; + } + + @Override + public boolean isRandomlyTicked() { + return false; + } } diff --git a/Regions/pom.xml b/Regions/pom.xml index be693f2d9..dc23c471d 100644 --- a/Regions/pom.xml +++ b/Regions/pom.xml @@ -3,7 +3,7 @@ au.com.mineauz MinigamesProject - 1.16-SNAPSHOT + 1.19-SNAPSHOT ../pom.xml Minigames-Regions diff --git a/Regions/src/main/java/au/com/mineauz/minigamesregions/util/NullCommandSender.java b/Regions/src/main/java/au/com/mineauz/minigamesregions/util/NullCommandSender.java index 68aaa83d8..4d3849393 100644 --- a/Regions/src/main/java/au/com/mineauz/minigamesregions/util/NullCommandSender.java +++ b/Regions/src/main/java/au/com/mineauz/minigamesregions/util/NullCommandSender.java @@ -2,6 +2,7 @@ import au.com.mineauz.minigames.MinigameUtils; import au.com.mineauz.minigames.Minigames; +import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; import org.bukkit.Server; import org.bukkit.command.CommandSender; @@ -13,8 +14,10 @@ import org.bukkit.permissions.PermissionAttachmentInfo; import org.bukkit.plugin.Plugin; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Set; +import java.util.UUID; public class NullCommandSender implements ConsoleCommandSender { @Override @@ -30,12 +33,27 @@ public void sendMessage(String[] messages) { } } } - + + @Override + public void sendMessage(@Nullable UUID uuid, @NotNull String s) { + + } + + @Override + public void sendMessage(@Nullable UUID uuid, @NotNull String... strings) { + + } + @Override public void sendRawMessage(String message) { MinigameUtils.debugMessage("[Suppressed] " + message); } + @Override + public void sendRawMessage(@Nullable UUID uuid, @NotNull String s) { + + } + @Override public Server getServer() { return Bukkit.getServer(); @@ -51,6 +69,11 @@ public String getName() { return new CommandSender.Spigot(); } + @Override + public @NotNull Component name() { + return null; + } + @Override public boolean isPermissionSet(String name) { return true; diff --git a/pom.xml b/pom.xml index 8f180ea55..271046ff0 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 au.com.mineauz MinigamesProject - 1.16-SNAPSHOT + 1.19-SNAPSHOT pom Minigames-Project https://www.spigotmc.org/resources/minigames.19687/ @@ -18,7 +18,7 @@ ${project.version}-${build.number} false ${spigot.api.version}.${spigot.minor.version}-R0.1-SNAPSHOT - 1.16 + 1.19 1 ${env.CODACY_API_TOKEN} @@ -89,8 +89,8 @@ - destroystokyo-repo - https://repo.destroystokyo.com/repository/maven-public/ + papermc + https://repo.papermc.io/repository/maven-public/ @@ -112,7 +112,7 @@ - com.destroystokyo.paper + io.papermc.paper paper-api ${spigot.version} provided From 7b64d3456d9f5c0c2b6a89bdc2db3891299b1941 Mon Sep 17 00:00:00 2001 From: Joshi1999 Date: Fri, 5 Aug 2022 19:17:00 +0200 Subject: [PATCH 08/12] Update minigamesdistribution to 1.19 --- minigamesdistribution/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/minigamesdistribution/pom.xml b/minigamesdistribution/pom.xml index 2669ba313..ba638bd6d 100644 --- a/minigamesdistribution/pom.xml +++ b/minigamesdistribution/pom.xml @@ -3,7 +3,7 @@ MinigamesProject au.com.mineauz - 1.16-SNAPSHOT + 1.19-SNAPSHOT minigames-distribution Minigames-Pack @@ -50,4 +50,4 @@ - \ No newline at end of file + From 442a00e541402a86eee409678acb40c99a05c531 Mon Sep 17 00:00:00 2001 From: Joshi1999 Date: Fri, 5 Aug 2022 19:20:39 +0200 Subject: [PATCH 09/12] Update Mavenworkflow to Java 17 --- .github/workflows/maven.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 91106d3f4..2263ed3bf 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -9,9 +9,9 @@ jobs: steps: - uses: actions/checkout@v1 - - name: Set up JDK 1.8 + - name: Set up JDK 17 uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 17 - name: Build with Maven run: mvn -B package --file pom.xml From fdb29ea08e4c15a575eacf5810efa8edcc01a308 Mon Sep 17 00:00:00 2001 From: joshi1999 Date: Sat, 24 Sep 2022 00:51:27 +0200 Subject: [PATCH 10/12] Adding potionFriendlyFire configuration --- Minigames/pom.xml | 10 +- .../java/au/com/mineauz/minigames/Events.java | 54 +++++++++++ .../au/com/mineauz/minigames/MinigameTag.java | 95 +++++++++++++++++++ .../mineauz/minigames/minigame/Minigame.java | 22 +++++ Regions/pom.xml | 8 ++ pom.xml | 8 ++ 6 files changed, 196 insertions(+), 1 deletion(-) create mode 100644 Minigames/src/main/java/au/com/mineauz/minigames/MinigameTag.java diff --git a/Minigames/pom.xml b/Minigames/pom.xml index f4bd32749..3238574ab 100644 --- a/Minigames/pom.xml +++ b/Minigames/pom.xml @@ -147,7 +147,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.4 + 3.4.0 @@ -227,6 +227,14 @@ versions-maven-plugin 2.8.1 + + org.apache.maven.plugins + maven-compiler-plugin + + 17 + 17 + + diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/Events.java b/Minigames/src/main/java/au/com/mineauz/minigames/Events.java index f21f6a67b..a80e5248f 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/Events.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/Events.java @@ -36,9 +36,12 @@ import org.bukkit.event.player.*; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.inventory.ItemStack; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; import java.io.File; import java.util.*; +import java.util.function.Predicate; public class Events implements Listener { private static Minigames plugin = Minigames.getPlugin(); @@ -766,4 +769,55 @@ private void breakScoreboard(BlockBreakEvent event) { } } } + + @EventHandler(ignoreCancelled = true) + private void potionAffectsPlayer(PotionSplashEvent event) { + if (!(event.getPotion().getShooter() instanceof Player)) return; + MinigamePlayer ply = pdata.getMinigamePlayer((Player) event.getPotion().getShooter()); + if (ply == null) return; + if (!ply.isInMinigame()) return; + if (ply.getMinigame().friendlyFireSplashPotions()) return; + List list = event.getAffectedEntities().stream() + .filter(p -> p instanceof Player) + .filter(p -> pdata.getMinigamePlayer((Player) p) != null) + .filter(p -> pdata.getMinigamePlayer((Player) p).isInMinigame()) + .filter(p -> pdata.getMinigamePlayer((Player) p).getMinigame() == ply.getMinigame()) + .map(p -> (Player) p) + .toList(); + if (list.isEmpty()) return; + List effects = event.getPotion().getEffects().stream().map(PotionEffect::getType).toList(); + list.stream().filter(Predicate.not(p -> isEffectApplicable(effects, ply, pdata.getMinigamePlayer(p)))).forEach(p -> event.setIntensity(p, 0.0)); + } + + @EventHandler(ignoreCancelled = true) + private void effectAreaAffectsPlayer(AreaEffectCloudApplyEvent event) { + if (!(event.getEntity().getSource() instanceof Player)) return; + MinigamePlayer ply = pdata.getMinigamePlayer((Player) event.getEntity().getSource()); + if (ply == null) return; + if (!ply.isInMinigame()) return; + if (ply.getMinigame().friendlyFireLingeringPotions()) return; + List list = event.getAffectedEntities().stream() + .filter(p -> p instanceof Player) + .filter(p -> pdata.getMinigamePlayer((Player) p) != null) + .filter(p -> pdata.getMinigamePlayer((Player) p).isInMinigame()) + .filter(p -> pdata.getMinigamePlayer((Player) p).getMinigame() == ply.getMinigame()) + .map(p -> (Player) p) + .toList(); + if (list.isEmpty()) return; + List effects = List.of(event.getEntity().getBasePotionData().getType().getEffectType()); + event.getAffectedEntities().removeAll(list.stream().filter(Predicate.not(p -> isEffectApplicable(effects, ply, pdata.getMinigamePlayer(p)))).toList()); + } + + private boolean isEffectApplicable(Collection effectTypes, MinigamePlayer ply, MinigamePlayer rPly) { + if (!ply.getMinigame().isTeamGame()) { + if (ply == rPly) { + return !MinigameTag.NEGATIVE_POTION.isTagged(effectTypes); + } + return !MinigameTag.POSITIVE_POTION.isTagged(effectTypes); + } + if (ply.getTeam() == rPly.getTeam()) { + return !MinigameTag.NEGATIVE_POTION.isTagged(effectTypes); + } + return !MinigameTag.POSITIVE_POTION.isTagged(effectTypes); + } } diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/MinigameTag.java b/Minigames/src/main/java/au/com/mineauz/minigames/MinigameTag.java new file mode 100644 index 000000000..900f80637 --- /dev/null +++ b/Minigames/src/main/java/au/com/mineauz/minigames/MinigameTag.java @@ -0,0 +1,95 @@ +package au.com.mineauz.minigames; + +import org.bukkit.potion.PotionEffectType; + +import java.util.Collection; +import java.util.List; + +public interface MinigameTag { + + /** + * MinigameTag representing vanilla potions with negative effect(s). + * Also represents all potions with exclusive negative effects, which aren't in the value list. + */ + MinigameTag> NEGATIVE_POTION = new MinigameTag() { + + @Override + public boolean isTagged(Object item) { + List list = getValues().stream().flatMap(Collection::stream).toList(); + return ((Collection) item).stream().allMatch(list::contains); + } + + @Override + public List> getValues() { + List> list = List.of( + List.of(PotionEffectType.SLOW), + List.of(PotionEffectType.HARM), + List.of(PotionEffectType.WEAKNESS), + List.of(PotionEffectType.POISON) + ); + return list; + } + }; + + /** + * MinigameTag representing vanilla potions with positive effect(s) + * Also represents all potions with exclusive positive effects, which aren't in the value list. + */ + MinigameTag> POSITIVE_POTION = new MinigameTag<>() { + @Override + public boolean isTagged(Collection item) { + List list = getValues().stream().flatMap(Collection::stream).toList(); + return ((Collection) item).stream().allMatch(list::contains); + } + + @Override + public List> getValues() { + List> list = List.of( + List.of(PotionEffectType.FIRE_RESISTANCE), + List.of(PotionEffectType.LUCK), + List.of(PotionEffectType.HEAL), + List.of(PotionEffectType.NIGHT_VISION), + List.of(PotionEffectType.REGENERATION), + List.of(PotionEffectType.SLOW_FALLING), + List.of(PotionEffectType.SPEED), + List.of(PotionEffectType.JUMP), + List.of(PotionEffectType.INCREASE_DAMAGE), + List.of(PotionEffectType.INVISIBILITY), + List.of(PotionEffectType.WATER_BREATHING) + ); + return list; + } + }; + + /** + * MinigameTag representing vanilla potions with both, positive and negative, effects + */ + MinigameTag> MIXED_POTION = new MinigameTag() { + + @Override + public boolean isTagged(Object item) { + return getValues().contains(item); + } + + @Override + public List> getValues() { + List> list = List.of( + List.of(PotionEffectType.SLOW, PotionEffectType.DAMAGE_RESISTANCE) + ); + return list; + } + }; + + /** + * Returns whether this tag has an entry for the specified object + * @param item to check + * @return if it is tagged + */ + boolean isTagged(T item); + + /** + * Returns a list of all tagged objects + * @return + */ + List getValues(); +} diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/minigame/Minigame.java b/Minigames/src/main/java/au/com/mineauz/minigames/minigame/Minigame.java index 77f481583..987bc5369 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/minigame/Minigame.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/minigame/Minigame.java @@ -122,6 +122,8 @@ public class Minigame implements ScriptObject { private BooleanFlag usePlayerDisplayNames = new BooleanFlag(true, "usePlayerDisplayNames"); private BooleanFlag showPlayerBroadcasts = new BooleanFlag(true, "showPlayerBroadcasts"); private BooleanFlag keepInventory = new BooleanFlag(false, "keepInventory"); + private BooleanFlag friendlyFireSplashPotions = new BooleanFlag(true, "friendlyFireSplashPotions"); + private BooleanFlag friendlyFireLingeringPotions = new BooleanFlag(true, "friendlyFireLingeringPotions"); private StringFlag mechanic = new StringFlag("custom", "scoretype"); private BooleanFlag paintBallMode = new BooleanFlag(false, "paintball"); @@ -243,6 +245,8 @@ private void setup(MinigameType type, Location start) { addConfigFlag(minPlayers); addConfigFlag(usePlayerDisplayNames); addConfigFlag(keepInventory); + addConfigFlag(friendlyFireSplashPotions); + addConfigFlag(friendlyFireLingeringPotions); addConfigFlag(showPlayerBroadcasts); addConfigFlag(minScore); addConfigFlag(objective); @@ -410,6 +414,22 @@ public void setKeepInventory(boolean value) { keepInventory.setFlag(value); } + public boolean friendlyFireSplashPotions() { + return friendlyFireSplashPotions.getFlag(); + } + + public void setFriendlyFireSplashPotions(boolean value) { + friendlyFireSplashPotions.setFlag(value); + } + + public boolean friendlyFireLingeringPotions() { + return friendlyFireLingeringPotions.getFlag(); + } + + public void setFriendlyFireLingeringPotions(boolean value) { + friendlyFireLingeringPotions.setFlag(value); + } + public int getMaxPlayers() { return maxPlayers.getFlag(); } @@ -1244,6 +1264,8 @@ public void setValue(Integer value) { .stringToList("Use Player Nicks or Real Names"))); itemsPlayer.add(showPlayerBroadcasts.getMenuItem("Show Join/Exit Broadcasts", Material.PAPER, MinigameUtils.stringToList("Show Join and Exit broadcasts; Plus other Player broadcasts"))); itemsPlayer.add(keepInventory.getMenuItem("Keep Inventory", Material.ZOMBIE_HEAD)); + itemsPlayer.add(friendlyFireSplashPotions.getMenuItem("Allow friendly fire with splash potions", Material.SPLASH_POTION)); + itemsPlayer.add(friendlyFireLingeringPotions.getMenuItem("Allow friendly fire with lingering potions", Material.LINGERING_POTION)); playerMenu.addItems(itemsPlayer); playerMenu.addItem(new MenuItemPage("Back", MenuUtility.getBackMaterial(), main), main.getSize() - 9); diff --git a/Regions/pom.xml b/Regions/pom.xml index dc23c471d..d33f98159 100644 --- a/Regions/pom.xml +++ b/Regions/pom.xml @@ -48,6 +48,14 @@ + + org.apache.maven.plugins + maven-compiler-plugin + + 17 + 17 + + diff --git a/pom.xml b/pom.xml index 271046ff0..07dc5f9a2 100644 --- a/pom.xml +++ b/pom.xml @@ -218,6 +218,14 @@ versions-maven-plugin 2.8.1 + + org.apache.maven.plugins + maven-compiler-plugin + + 17 + 17 + + org.jacoco jacoco-maven-plugin From a7f0952b3a66901dd4fd8f330b3088ac2ce05eb5 Mon Sep 17 00:00:00 2001 From: joshi1999 Date: Fri, 14 Oct 2022 08:07:15 +0200 Subject: [PATCH 11/12] Added every possible vanilla potion effekt. --- .../au/com/mineauz/minigames/MinigameTag.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/MinigameTag.java b/Minigames/src/main/java/au/com/mineauz/minigames/MinigameTag.java index 900f80637..a129c3ad8 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/MinigameTag.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/MinigameTag.java @@ -25,7 +25,17 @@ public List> getValues() { List.of(PotionEffectType.SLOW), List.of(PotionEffectType.HARM), List.of(PotionEffectType.WEAKNESS), - List.of(PotionEffectType.POISON) + List.of(PotionEffectType.POISON), + List.of(PotionEffectType.BLINDNESS), + List.of(PotionEffectType.BAD_OMEN), + List.of(PotionEffectType.CONFUSION), + List.of(PotionEffectType.DARKNESS), + List.of(PotionEffectType.GLOWING), + List.of(PotionEffectType.HUNGER), + List.of(PotionEffectType.LEVITATION), + List.of(PotionEffectType.SLOW_DIGGING), + List.of(PotionEffectType.UNLUCK), + List.of(PotionEffectType.WITHER) ); return list; } @@ -55,7 +65,15 @@ public List> getValues() { List.of(PotionEffectType.JUMP), List.of(PotionEffectType.INCREASE_DAMAGE), List.of(PotionEffectType.INVISIBILITY), - List.of(PotionEffectType.WATER_BREATHING) + List.of(PotionEffectType.WATER_BREATHING), + List.of(PotionEffectType.ABSORPTION), + List.of(PotionEffectType.DAMAGE_RESISTANCE), + List.of(PotionEffectType.CONDUIT_POWER), + List.of(PotionEffectType.DOLPHINS_GRACE), + List.of(PotionEffectType.FAST_DIGGING), + List.of(PotionEffectType.HEALTH_BOOST), + List.of(PotionEffectType.HERO_OF_THE_VILLAGE), + List.of(PotionEffectType.SATURATION) ); return list; } From 891bdb61da074b39f33e9b3db3f0525f4a9725d1 Mon Sep 17 00:00:00 2001 From: joshi1999 Date: Sun, 30 Oct 2022 12:38:16 +0100 Subject: [PATCH 12/12] Fixes T::45, T::46, T::49, T::53 - TakeFlagTrigger wasn't triggered - Only Oak-Signs worked as Flags - Broadcasts wasn't working - CTF-Broadcasts are now a seperate option - Flag Home-Returns were announced, even though broadcasts were disabled --- .../minigames/managers/MinigameManager.java | 42 +++++++++++++------ .../minigames/mechanics/CTFMechanic.java | 26 ++++++------ .../mineauz/minigames/minigame/Minigame.java | 11 +++++ .../mineauz/minigames/objects/CTFFlag.java | 1 + .../com/mineauz/minigames/signs/FlagSign.java | 9 ++-- 5 files changed, 58 insertions(+), 31 deletions(-) diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/managers/MinigameManager.java b/Minigames/src/main/java/au/com/mineauz/minigames/managers/MinigameManager.java index 6178afe82..0dad07984 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/managers/MinigameManager.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/managers/MinigameManager.java @@ -283,33 +283,51 @@ public void sendMinigameMessage(final Minigame minigame, final String message, f this.sendMinigameMessage(minigame, message, type, Collections.singletonList(exclude)); } + /** + * Sending a general Broadcast + * @param minigame The minigame in which this message shall be sent + * @param message The message + * @param type Message Type + * @param exclude Players, which shall not get this message + */ public void sendMinigameMessage(final Minigame minigame, final String message, MinigameMessageType type, final List exclude) { if (!minigame.getShowPlayerBroadcasts()) { return; } - String finalMessage; + sendBroadcastMessage(minigame, message, type, exclude); + } + + /** + * Sending a ctf relevant message + * @param minigame The minigame in which this message shall be sent + * @param message The message + * @param type Message Type + * @param exclude Players, which shall not get this message + */ + public void sendCTFMessage(final Minigame minigame, final String message, MinigameMessageType type, + final List exclude) { + if (!minigame.getShowCTFBroadcasts()) { + return; + } + sendBroadcastMessage(minigame, message, type, exclude); + } + + // This sends a message to every player which is not excluded from the exclude list + private void sendBroadcastMessage(Minigame minigame, String message, MinigameMessageType type, List exclude) { + String finalMessage = ""; if (type == null) { type = MinigameMessageType.INFO; } - switch (type) { - case ERROR: - finalMessage = ChatColor.RED + "[Minigames] " + ChatColor.WHITE; - break; - case INFO: - default: - finalMessage = ChatColor.AQUA + "[Minigames] " + ChatColor.WHITE; - break; - } finalMessage += message; final List sendto = new ArrayList<>(); - Collections.copy(minigame.getPlayers(), sendto); + sendto.addAll(minigame.getPlayers()); sendto.addAll(minigame.getSpectators()); if (exclude != null) { sendto.removeAll(exclude); } for (final MinigamePlayer pl : sendto) { - pl.sendInfoMessage(finalMessage); + pl.sendMessage(finalMessage, type); } } diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/mechanics/CTFMechanic.java b/Minigames/src/main/java/au/com/mineauz/minigames/mechanics/CTFMechanic.java index 65ad949f2..8293151f1 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/mechanics/CTFMechanic.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/mechanics/CTFMechanic.java @@ -95,7 +95,7 @@ public void takeFlag(PlayerInteractEvent event) { MinigamePlayer ply = pdata.getMinigamePlayer(event.getPlayer()); if (ply == null) return; if (ply.isInMinigame() && !ply.getPlayer().isDead() && ply.getMinigame().hasStarted()) { - if (event.getAction() == Action.RIGHT_CLICK_BLOCK && (event.getClickedBlock().getType() == Material.OAK_SIGN || event.getClickedBlock().getType() == Material.OAK_WALL_SIGN) && ply.getPlayer().getInventory().getItemInMainHand().getType() == Material.AIR) { + if (event.getAction() == Action.RIGHT_CLICK_BLOCK && (event.getClickedBlock().getState() instanceof Sign ) && ply.getPlayer().getInventory().getItemInMainHand().getType() == Material.AIR) { Minigame mgm = ply.getMinigame(); Sign sign = (Sign) event.getClickedBlock().getState(); if (mgm.getMechanicName().equals("ctf") && sign.getLine(1).equals(ChatColor.GREEN + "Flag")) { @@ -136,11 +136,11 @@ public void takeFlag(PlayerInteractEvent event) { if (mgm.getFlagCarrier(ply).getTeam() != null) { Team fteam = mgm.getFlagCarrier(ply).getTeam(); String message = ply.getName() + " stole " + fteam.getChatColor() + fteam.getDisplayName() + ChatColor.WHITE + "'s flag!"; - mdata.sendMinigameMessage(mgm, message); + mdata.sendCTFMessage(mgm, message, MinigameMessageType.INFO, null); mgm.getFlagCarrier(ply).startCarrierParticleEffect(ply.getPlayer()); } else { String message = ply.getName() + " stole the " + ChatColor.GRAY + "neutral" + ChatColor.WHITE + " flag!"; - mdata.sendMinigameMessage(mgm, message); + mdata.sendCTFMessage(mgm, message, MinigameMessageType.INFO, null); mgm.getFlagCarrier(ply).startCarrierParticleEffect(ply.getPlayer()); } } @@ -172,15 +172,15 @@ public void takeFlag(PlayerInteractEvent event) { if (!end) { String message = MinigameUtils.formStr("player.ctf.capture", ply.getName(), ply.getTeam().getChatColor() + ply.getTeam().getDisplayName()); - mdata.sendMinigameMessage(mgm, message); + mdata.sendCTFMessage(mgm, message, MinigameMessageType.INFO, null); } flag.stopCarrierParticleEffect(); ply.addScore(); mgm.setScore(ply, ply.getScore()); if (end) { - mdata.sendMinigameMessage(mgm, MinigameUtils.formStr("player.ctf.captureFinal", ply.getName(), - ply.getTeam().getChatColor() + ply.getTeam().getDisplayName())); + mdata.sendCTFMessage(mgm, MinigameUtils.formStr("player.ctf.captureFinal", ply.getName(), + ply.getTeam().getChatColor() + ply.getTeam().getDisplayName()), MinigameMessageType.INFO, null); List w = new ArrayList<>(ply.getTeam().getPlayers()); List l = new ArrayList<>(mgm.getPlayers().size() - ply.getTeam().getPlayers().size()); for (Team t : TeamsModule.getMinigameModule(mgm).getTeams()) { @@ -197,11 +197,11 @@ public void takeFlag(PlayerInteractEvent event) { end = true; } - mdata.sendMinigameMessage(mgm, MinigameUtils.formStr("player.ctf.captureNeutral", ply.getName())); + mdata.sendCTFMessage(mgm, MinigameUtils.formStr("player.ctf.captureNeutral", ply.getName()), MinigameMessageType.INFO, null); flag.stopCarrierParticleEffect(); if (end) { - mdata.sendMinigameMessage(mgm, MinigameUtils.formStr("player.ctf.captureNeutralFinal", ply.getName())); + mdata.sendCTFMessage(mgm, MinigameUtils.formStr("player.ctf.captureNeutralFinal", ply.getName()), MinigameMessageType.INFO, null); pdata.endMinigame(ply); mgm.resetFlags(); @@ -216,8 +216,8 @@ public void takeFlag(PlayerInteractEvent event) { mgm.addDroppedFlag(newID, flag); } flag.respawnFlag(); - mdata.sendMinigameMessage(mgm, MinigameUtils.formStr("player.ctf.returned", ply.getName(), - ply.getTeam().getChatColor() + ply.getTeam().getDisplayName() + ChatColor.WHITE)); + mdata.sendCTFMessage(mgm, MinigameUtils.formStr("player.ctf.returned", ply.getName(), + ply.getTeam().getChatColor() + ply.getTeam().getDisplayName() + ChatColor.WHITE), MinigameMessageType.INFO, null); } else if (mgm.getFlagCarrier(ply) != null && mgm.hasDroppedFlag(clickID) && !mgm.getDroppedFlag(clickID).isAtHome()) { ply.sendMessage(MinigameUtils.getLang("player.ctf.returnFail"), MinigameMessageType.LOSS); } @@ -246,10 +246,10 @@ public void dropFlag(PlayerDeathEvent event) { mgm.removeFlagCarrier(ply); if (team != null) - mdata.sendMinigameMessage(mgm, MinigameUtils.formStr("player.ctf.dropped", ply.getName(), - team.getChatColor() + team.getDisplayName() + ChatColor.WHITE)); + mdata.sendCTFMessage(mgm, MinigameUtils.formStr("player.ctf.dropped", ply.getName(), + team.getChatColor() + team.getDisplayName() + ChatColor.WHITE), MinigameMessageType.INFO, null); else - mdata.sendMinigameMessage(mgm, MinigameUtils.formStr("player.ctf.droppedNeutral", ply.getName())); + mdata.sendCTFMessage(mgm, MinigameUtils.formStr("player.ctf.droppedNeutral", ply.getName()), MinigameMessageType.INFO, null); flag.stopCarrierParticleEffect(); flag.startReturnTimer(); } diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/minigame/Minigame.java b/Minigames/src/main/java/au/com/mineauz/minigames/minigame/Minigame.java index 987bc5369..a33de97ba 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/minigame/Minigame.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/minigame/Minigame.java @@ -121,6 +121,7 @@ public class Minigame implements ScriptObject { private BooleanFlag allowDragonEggTeleport = new BooleanFlag(true, "allowDragonEggTeleport"); private BooleanFlag usePlayerDisplayNames = new BooleanFlag(true, "usePlayerDisplayNames"); private BooleanFlag showPlayerBroadcasts = new BooleanFlag(true, "showPlayerBroadcasts"); + private BooleanFlag showCTFBroadcasts = new BooleanFlag(true, "showCTFBroadcasts"); private BooleanFlag keepInventory = new BooleanFlag(false, "keepInventory"); private BooleanFlag friendlyFireSplashPotions = new BooleanFlag(true, "friendlyFireSplashPotions"); private BooleanFlag friendlyFireLingeringPotions = new BooleanFlag(true, "friendlyFireLingeringPotions"); @@ -248,6 +249,7 @@ private void setup(MinigameType type, Location start) { addConfigFlag(friendlyFireSplashPotions); addConfigFlag(friendlyFireLingeringPotions); addConfigFlag(showPlayerBroadcasts); + addConfigFlag(showCTFBroadcasts); addConfigFlag(minScore); addConfigFlag(objective); addConfigFlag(paintBallDamage); @@ -528,6 +530,14 @@ public Boolean getShowPlayerBroadcasts() { return showPlayerBroadcasts.getFlag(); } + public void setShowCTFBroadcasts(Boolean showCTFBroadcasts) { + this.showCTFBroadcasts.setFlag(showCTFBroadcasts); + } + + public Boolean getShowCTFBroadcasts() { + return showCTFBroadcasts.getFlag(); + } + public MinigameType getType() { return type.getFlag(); } @@ -1263,6 +1273,7 @@ public void setValue(Integer value) { itemsPlayer.add(usePlayerDisplayNames.getMenuItem("Use Players Display Names", Material.POTATO, MinigameUtils .stringToList("Use Player Nicks or Real Names"))); itemsPlayer.add(showPlayerBroadcasts.getMenuItem("Show Join/Exit Broadcasts", Material.PAPER, MinigameUtils.stringToList("Show Join and Exit broadcasts; Plus other Player broadcasts"))); + itemsPlayer.add(showCTFBroadcasts.getMenuItem("Show CTF Broadcasts", Material.PAPER, MinigameUtils.stringToList("Show Flag captures and home returns"))); itemsPlayer.add(keepInventory.getMenuItem("Keep Inventory", Material.ZOMBIE_HEAD)); itemsPlayer.add(friendlyFireSplashPotions.getMenuItem("Allow friendly fire with splash potions", Material.SPLASH_POTION)); itemsPlayer.add(friendlyFireLingeringPotions.getMenuItem("Allow friendly fire with lingering potions", Material.LINGERING_POTION)); diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/objects/CTFFlag.java b/Minigames/src/main/java/au/com/mineauz/minigames/objects/CTFFlag.java index 0d76e0bdd..724be06d3 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/objects/CTFFlag.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/objects/CTFFlag.java @@ -181,6 +181,7 @@ public void startReturnTimer() { minigame.addDroppedFlag(newID, self); } respawnFlag(); + //TODO: Build this again with broadcasts. for (MinigamePlayer pl : minigame.getPlayers()) { if (getTeam() != null) pl.sendInfoMessage(MinigameUtils.formStr("minigame.flag.returnedTeam", getTeam().getChatColor() + getTeam().getDisplayName() + ChatColor.WHITE)); diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/signs/FlagSign.java b/Minigames/src/main/java/au/com/mineauz/minigames/signs/FlagSign.java index 7bbb5eb52..5aac3b47f 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/signs/FlagSign.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/signs/FlagSign.java @@ -76,14 +76,11 @@ public boolean signUse(Sign sign, MinigamePlayer player) { return false; } if (!sign.getLine(2).isEmpty() && player.getPlayer().isOnGround() && - !mgm.getMechanicName().equals("ctf") && - !player.hasFlag(ChatColor.stripColor(sign.getLine(2)))) { + mgm.getMechanicName().equals("ctf") && + !player.hasFlag(ChatColor.stripColor(sign.getLine(2))) && + !player.getTeam().getDisplayName().equals(ChatColor.stripColor(sign.getLine(2) + " Team"))) { TakeFlagEvent ev = new TakeFlagEvent(mgm, player, ChatColor.stripColor(sign.getLine(2))); Bukkit.getPluginManager().callEvent(ev); - if (!ev.isCancelled()) { - player.addFlag(ChatColor.stripColor(sign.getLine(2))); - player.sendInfoMessage(MinigameUtils.formStr("sign.flag.taken", ChatColor.stripColor(sign.getLine(2)))); - } return true; } } else if (player.getPlayer().getInventory().getItemInMainHand().getType() != Material.AIR)