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
diff --git a/Minigames/pom.xml b/Minigames/pom.xml
index 299391d65..3238574ab 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
+
@@ -141,7 +147,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.2.4
+ 3.4.0
@@ -221,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 d9d244ba6..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,12 +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.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
+import java.util.function.Predicate;
public class Events implements Listener {
private static Minigames plugin = Minigames.getPlugin();
@@ -86,6 +86,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 = "";
@@ -761,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..a129c3ad8
--- /dev/null
+++ b/Minigames/src/main/java/au/com/mineauz/minigames/MinigameTag.java
@@ -0,0 +1,113 @@
+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),
+ 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;
+ }
+ };
+
+ /**
+ * 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),
+ 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;
+ }
+ };
+
+ /**
+ * 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/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 0e185bb9c..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,15 +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());
if (player == null) {
- getWorld().spawnParticle(Particle.BARRIER, temp, 1);
+ getWorld().spawnParticle(Particle.BLOCK_MARKER, temp, 1, 0, 0, 0, 0, Material.BARRIER.createBlockData());
} else {
- player.spawnParticle(Particle.BARRIER, temp, 1);
+ player.spawnParticle(Particle.BLOCK_MARKER, temp, 1, 0, 0, 0, 0, Material.BARRIER.createBlockData());
}
}
}
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/menu/Menu.java b/Minigames/src/main/java/au/com/mineauz/minigames/menu/Menu.java
index 8608b47a2..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
@@ -151,14 +151,17 @@ private void updateAll() {
}
public void displayMenu(MinigamePlayer ply) {
+ Menu t = this;
+ Player player = ply.getPlayer();
updateAll();
populateMenu();
- Player player = ply.getPlayer();
-
inv = Bukkit.createInventory(player, rows * 9, name);
inv.setContents(pageView);
- ply.getPlayer().openInventory(inv);
- ply.setMenu(this);
+ // Some calls of displayMenu are async, which is not allowed.
+ Minigames.getPlugin().getServer().getScheduler().runTask(Minigames.getPlugin(), () -> {
+ ply.getPlayer().openInventory(inv);
+ ply.setMenu(t);
+ });
}
public boolean getAllowModify() {
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..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,10 @@ 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");
private StringFlag mechanic = new StringFlag("custom", "scoretype");
private BooleanFlag paintBallMode = new BooleanFlag(false, "paintball");
@@ -241,7 +245,11 @@ private void setup(MinigameType type, Location start) {
addConfigFlag(minChestRandom);
addConfigFlag(minPlayers);
addConfigFlag(usePlayerDisplayNames);
+ addConfigFlag(keepInventory);
+ addConfigFlag(friendlyFireSplashPotions);
+ addConfigFlag(friendlyFireLingeringPotions);
addConfigFlag(showPlayerBroadcasts);
+ addConfigFlag(showCTFBroadcasts);
addConfigFlag(minScore);
addConfigFlag(objective);
addConfigFlag(paintBallDamage);
@@ -400,6 +408,30 @@ public void setUsePlayerDisplayNames(Boolean value) {
usePlayerDisplayNames.setFlag(value);
}
+ public boolean keepInventory() {
+ return keepInventory.getFlag();
+ }
+
+ 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();
}
@@ -498,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();
}
@@ -1233,6 +1273,10 @@ 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));
playerMenu.addItems(itemsPlayer);
playerMenu.addItem(new MenuItemPage("Back", MenuUtility.getBackMaterial(), main), main.getSize() - 9);
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)
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..d33f98159 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
@@ -48,6 +48,14 @@
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 17
+ 17
+
+
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 fc70aee66..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
@@ -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,68 @@ 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;
+ }
+ }
+
+ @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 bd75aa4f1..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
@@ -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();
@@ -295,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){
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/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
+
diff --git a/pom.xml b/pom.xml
index 8f180ea55..07dc5f9a2 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
@@ -218,6 +218,14 @@
versions-maven-plugin
2.8.1
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 17
+ 17
+
+
org.jacoco
jacoco-maven-plugin