Skip to content

Commit

Permalink
Fixes T::45, T::46, T::49, T::53
Browse files Browse the repository at this point in the history
- 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
  • Loading branch information
joshi1999 committed Oct 30, 2022
1 parent a7f0952 commit 891bdb6
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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<MinigamePlayer> 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<MinigamePlayer> 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<MinigamePlayer> 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<MinigamePlayer> 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);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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")) {
Expand Down Expand Up @@ -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());
}
}
Expand Down Expand Up @@ -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<MinigamePlayer> w = new ArrayList<>(ply.getTeam().getPlayers());
List<MinigamePlayer> l = new ArrayList<>(mgm.getPlayers().size() - ply.getTeam().getPlayers().size());
for (Team t : TeamsModule.getMinigameModule(mgm).getTeams()) {
Expand All @@ -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();
Expand All @@ -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);
}
Expand Down Expand Up @@ -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();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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();
}
Expand Down Expand Up @@ -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));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 891bdb6

Please sign in to comment.