Fixed round ending. kind of. The first round works the next one does not
This commit is contained in:
parent
cc267d8cfe
commit
7fed4d8435
@ -2,11 +2,9 @@ package net.nevet5gi;
|
||||
|
||||
import net.nevet5gi.commands.StartGameCommand;
|
||||
import net.nevet5gi.events.PreStartTTTEvent;
|
||||
import net.nevet5gi.listeners.GameStartTTTListener;
|
||||
import net.nevet5gi.listeners.GamesOnTTTListener;
|
||||
import net.nevet5gi.listeners.PlayerInteractAtEntityListener;
|
||||
import net.nevet5gi.listeners.PreStartTTTListener;
|
||||
import net.nevet5gi.listeners.*;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public final class SimpleTTTCore extends JavaPlugin {
|
||||
@ -16,7 +14,8 @@ public final class SimpleTTTCore extends JavaPlugin {
|
||||
@Override
|
||||
public void onEnable() {
|
||||
this.getCommand("startgame").setExecutor(new StartGameCommand(this));
|
||||
this.getServer().getPluginManager().registerEvents(new PlayerInteractAtEntityListener(), this);
|
||||
this.getServer().getPluginManager().registerEvents(new DeathListener(), this);
|
||||
this.getServer().getPluginManager().registerEvents(new PlayerAttackListener(), this);
|
||||
this.getServer().getPluginManager().registerEvents(new GamesOnTTTListener(), this);
|
||||
this.getServer().getPluginManager().registerEvents(new GameStartTTTListener(), this);
|
||||
this.getServer().getPluginManager().registerEvents(new PreStartTTTListener(), this);
|
||||
|
@ -1,6 +1,7 @@
|
||||
package net.nevet5gi.commands;
|
||||
|
||||
import net.nevet5gi.SimpleTTTCore;
|
||||
import net.nevet5gi.events.TTTGamesOnEvent;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@ -19,9 +20,10 @@ public class StartGameCommand implements CommandExecutor {
|
||||
if (sender instanceof Player) {
|
||||
Player player = (Player) sender;
|
||||
if (player.getServer().getOnlinePlayers().size() >= 2) {
|
||||
player.sendMessage("Game Started");
|
||||
//player.sendMessage(getRandomRole().toString());
|
||||
SimpleTTTCore.startGame(plugin);
|
||||
if (!TTTGamesOnEvent.isInGame()) {
|
||||
player.sendMessage("Game Started");
|
||||
SimpleTTTCore.startGame(plugin);
|
||||
}
|
||||
} else {
|
||||
player.sendMessage("Not enough players to start game!");
|
||||
}
|
||||
|
@ -4,9 +4,11 @@ import net.nevet5gi.util.Role;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@ -16,9 +18,11 @@ public class TTTGamesOnEvent extends Event {
|
||||
|
||||
private static JavaPlugin plugin;
|
||||
|
||||
private List<Player> participatingPlayers = new ArrayList<>();
|
||||
private Map<Player, Role> playerRoles;
|
||||
private int[] roleAmounts = {0,0,0,0,0,0,0,0};
|
||||
private static boolean inGame = false;
|
||||
|
||||
private static List<Player> participatingPlayers = new ArrayList<>();
|
||||
private static Map<Player, Role> playerRoles;
|
||||
private static int[] roleAmounts = {0,0,0,0,0,0,0,0};
|
||||
|
||||
|
||||
public TTTGamesOnEvent(JavaPlugin plugin, List<Player> participatingPlayers, Map<Player, Role> playerRoles, int[] roleAmounts) {
|
||||
@ -29,6 +33,12 @@ public class TTTGamesOnEvent extends Event {
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static void removePlayer(Player player) {
|
||||
participatingPlayers.remove(player);
|
||||
playerRoles.remove(player);
|
||||
}
|
||||
|
||||
public int[] getRoleAmounts() {
|
||||
return roleAmounts;
|
||||
}
|
||||
@ -45,8 +55,18 @@ public class TTTGamesOnEvent extends Event {
|
||||
return playerRoles.get(player);
|
||||
}
|
||||
|
||||
public Role getPlayerRoleByInt(int playerInt) {
|
||||
return playerRoles.get(playerInt);
|
||||
|
||||
public static boolean isInGame() {
|
||||
return inGame;
|
||||
}
|
||||
|
||||
public static void setInGame(boolean choice) {
|
||||
inGame = choice;
|
||||
}
|
||||
|
||||
|
||||
public static Role getRoleOfPlayer(Player player) {
|
||||
return playerRoles.get(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
28
src/main/java/net/nevet5gi/listeners/DeathListener.java
Normal file
28
src/main/java/net/nevet5gi/listeners/DeathListener.java
Normal file
@ -0,0 +1,28 @@
|
||||
package net.nevet5gi.listeners;
|
||||
|
||||
import net.nevet5gi.events.TTTGamesOnEvent;
|
||||
import net.nevet5gi.util.Role;
|
||||
import net.nevet5gi.util.RoleColorHelper;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
|
||||
public class DeathListener implements Listener {
|
||||
@EventHandler
|
||||
public static void onDeath(PlayerDeathEvent event) {
|
||||
if (event.getEntity() instanceof Player) {
|
||||
Player player = event.getEntity();
|
||||
|
||||
if (TTTGamesOnEvent.isInGame()) {
|
||||
Role playerRole = TTTGamesOnEvent.getRoleOfPlayer(player);
|
||||
int roleId = playerRole.getId();
|
||||
TTTGamesOnEvent.removePlayer(player);
|
||||
GamesOnTTTListener.rolesLeft[roleId]--;
|
||||
GamesOnTTTListener.playersLeft--;
|
||||
event.getEntity().getKiller().sendMessage(RoleColorHelper.getChatColorOfRole(TTTGamesOnEvent.getRoleOfPlayer(event.getEntity().getKiller())) + "You have killed: " + player.getName() + "!");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -24,17 +24,14 @@ public class GameStartTTTListener implements Listener {
|
||||
while (roleIsUnavailable) {
|
||||
role = event.getRandomRole();
|
||||
if (amounts[role.getId()] < 1) {
|
||||
System.out.println(amounts[role.getId()]);
|
||||
continue;
|
||||
}
|
||||
event.setPlayerRole(player, role);
|
||||
amounts[role.getId()]--;
|
||||
roleIsUnavailable = false;
|
||||
}
|
||||
System.out.println("End while loop");
|
||||
}
|
||||
}
|
||||
System.out.println("End for loop");
|
||||
|
||||
gameTaskId = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(event.getPlugin(), () -> {
|
||||
if (!called) {
|
||||
|
@ -17,17 +17,20 @@ import org.bukkit.event.Listener;
|
||||
public class GamesOnTTTListener implements Listener {
|
||||
|
||||
private static int gamesOnTaskId = -1;
|
||||
private static int timeLeft = 300;
|
||||
private static int timeLeft = 35;
|
||||
|
||||
public static int playersLeft = -1;
|
||||
|
||||
private static boolean doRush = true;
|
||||
|
||||
public static int[] rolesLeft = {0,0,0,0,0,0,0,0,0};
|
||||
|
||||
@EventHandler
|
||||
public static void gamesOnEvent(TTTGamesOnEvent event) {
|
||||
TTTGamesOnEvent.setInGame(true);
|
||||
playersLeft = event.getPlayers().size();
|
||||
rolesLeft = RoleAmountHelper.getAmountOfRoles(playersLeft);
|
||||
for (Player player : event.getPlayers()) {
|
||||
System.out.println(event.getPlayerRole(player));
|
||||
ChatColor roleColor = RoleColorHelper.getChatColorOfRole(event.getPlayerRole(player));
|
||||
player.sendTitle("Your role is: " + roleColor + event.getPlayerRole(player).toString(), "", 20, 80, 20);
|
||||
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(roleColor + RoleDescriptionHelper.getRoleDescription(event.getPlayerRole(player))));
|
||||
@ -38,7 +41,7 @@ public class GamesOnTTTListener implements Listener {
|
||||
bossBar.addPlayer(player);
|
||||
}
|
||||
gamesOnTaskId = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(event.getPlugin(), () -> {
|
||||
if (timeLeft == -1) {
|
||||
if (timeLeft == -1 && TTTGamesOnEvent.isInGame()) {
|
||||
bossBar.setTitle("Time Left: " + "Overtime");
|
||||
bossBar.setColor(BarColor.RED);
|
||||
} else if (timeLeft != 0) {
|
||||
@ -48,7 +51,7 @@ public class GamesOnTTTListener implements Listener {
|
||||
bossBar.setColor(BarColor.RED);
|
||||
} else if (timeLeft > 30) {
|
||||
bossBar.setColor(BarColor.GREEN);
|
||||
} else if (timeLeft > 10 && timeLeft < 30) {
|
||||
} else if (timeLeft > 10 && timeLeft <= 30) {
|
||||
bossBar.setColor(BarColor.YELLOW);
|
||||
} else {
|
||||
bossBar.setColor(BarColor.WHITE);
|
||||
@ -56,17 +59,21 @@ public class GamesOnTTTListener implements Listener {
|
||||
timeLeft--;
|
||||
} else if (timeLeft == 0) {
|
||||
//DONE Make this not fail with null value after time is up
|
||||
if (GameHelper.getGameDecision(event.getRoleAmounts(), playersLeft, doRush).equals(GameDecision.RUSH)) {
|
||||
if (GameHelper.getGameDecision(rolesLeft, playersLeft, doRush).equals(GameDecision.RUSH)) {
|
||||
doRush = false;
|
||||
timeLeft = 120;
|
||||
} else if (GameHelper.getGameDecision(event.getRoleAmounts(), playersLeft, doRush).equals(GameDecision.OVERTIME)) {
|
||||
} else if (GameHelper.getGameDecision(rolesLeft, playersLeft, doRush).equals(GameDecision.OVERTIME)) {
|
||||
timeLeft = -1;
|
||||
} else if (GameHelper.getGameDecision(event.getRoleAmounts(), playersLeft, doRush).equals(GameDecision.END)) {
|
||||
} else if (GameHelper.getGameDecision(rolesLeft, playersLeft, doRush).equals(GameDecision.END)) {
|
||||
bossBar.removeAll();
|
||||
for (Player player : event.getPlugin().getServer().getOnlinePlayers()) {
|
||||
player.sendTitle(RoleWinnerHelper.getTitle(GameHelper.getWinner()), "", 10, 60, 10);
|
||||
player.sendTitle(RoleColorHelper.getChatColorOfRole(GameHelper.getWinner()) + RoleWinnerHelper.getTitle(GameHelper.getWinner()), "", 10, 60, 10);
|
||||
}
|
||||
SimpleTTTCore.startGame(event.getPlugin());
|
||||
doRush = true;
|
||||
/*SimpleTTTCore.startGame(event.getPlugin());*/
|
||||
TTTGamesOnEvent.setInGame(false);
|
||||
timeLeft = -1;
|
||||
playersLeft = -1;
|
||||
event.getPlugin().getServer().getScheduler().cancelTask(gamesOnTaskId);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,7 @@
|
||||
package net.nevet5gi.listeners;
|
||||
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
public class PlayerAttackListener implements Listener {
|
||||
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
package net.nevet5gi.listeners;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerInteractAtEntityEvent;
|
||||
import org.bukkit.inventory.EquipmentSlot;
|
||||
|
||||
public class PlayerInteractAtEntityListener implements Listener {
|
||||
@EventHandler
|
||||
public static void onPlayerDeath(PlayerInteractAtEntityEvent event) {
|
||||
if (event.getHand() == EquipmentSlot.OFF_HAND) {
|
||||
return; // off hand packet, ignore.
|
||||
}
|
||||
|
||||
GamesOnTTTListener.playersLeft--;
|
||||
}
|
||||
}
|
@ -3,57 +3,72 @@ package net.nevet5gi.util;
|
||||
public class GameHelper {
|
||||
|
||||
private static Role Winner = null;
|
||||
private static boolean inOvertime = false;
|
||||
|
||||
//Format: Detectives:Sheriffs:Survivalists:Mercenaries:Traitors:Assassins:LoneWolf:Jester
|
||||
public static GameDecision getGameDecision(int[] PlayerRolesLeft, int PlayersLeft, boolean doRush) {
|
||||
int InnocentRoles = PlayersLeft - (PlayerRolesLeft[4] + PlayerRolesLeft[5] + PlayerRolesLeft[6] + PlayerRolesLeft[7]);
|
||||
int NeutralRoles = PlayerRolesLeft[6] + PlayerRolesLeft[7];
|
||||
int TraitorRoles = PlayerRolesLeft[4] + PlayerRolesLeft[5];
|
||||
int LoneWolf = PlayerRolesLeft[6];
|
||||
int Jester = PlayerRolesLeft[7];
|
||||
int InnocentRoles = PlayersLeft - (NeutralRoles + TraitorRoles);
|
||||
|
||||
|
||||
if (NeutralRoles == 0 && TraitorRoles > 0) {
|
||||
int CombinedRoles = InnocentRoles + NeutralRoles + TraitorRoles;
|
||||
|
||||
if (InnocentRoles > TraitorRoles && doRush) {
|
||||
Winner = null;
|
||||
return GameDecision.RUSH;
|
||||
}
|
||||
|
||||
if (TraitorRoles > InnocentRoles) {
|
||||
Winner = Role.INNOCENT;
|
||||
return GameDecision.END;
|
||||
}
|
||||
|
||||
if (TraitorRoles == InnocentRoles) {
|
||||
Winner = null;
|
||||
return GameDecision.OVERTIME;
|
||||
}
|
||||
} else if (NeutralRoles > 0 && TraitorRoles == 0) {
|
||||
if (NeutralRoles == InnocentRoles) {
|
||||
Winner = null;
|
||||
return GameDecision.OVERTIME;
|
||||
}
|
||||
|
||||
if (NeutralRoles > InnocentRoles) {
|
||||
Winner = Role.INNOCENT;
|
||||
return GameDecision.END;
|
||||
}
|
||||
|
||||
if (InnocentRoles > NeutralRoles && doRush) {
|
||||
Winner = null;
|
||||
return GameDecision.RUSH;
|
||||
}
|
||||
|
||||
if (InnocentRoles > NeutralRoles) {
|
||||
Winner = null;
|
||||
return GameDecision.OVERTIME;
|
||||
}
|
||||
|
||||
if (InnocentRoles + NeutralRoles == 0 && TraitorRoles > 0) {
|
||||
/*System.out.println("Win " + 1);*/
|
||||
Winner = Role.TRAITORS;
|
||||
return GameDecision.END;
|
||||
}
|
||||
return null;
|
||||
|
||||
if (TraitorRoles + NeutralRoles == 0 && InnocentRoles > 0) {
|
||||
/*System.out.println(2);*/
|
||||
Winner = Role.INNOCENT;
|
||||
return GameDecision.END;
|
||||
}
|
||||
|
||||
else if (Jester == 1 && CombinedRoles - Jester == 0) {
|
||||
/*System.out.println(3);*/
|
||||
Winner = Role.JESTER;
|
||||
return GameDecision.END;
|
||||
}
|
||||
|
||||
else if (LoneWolf == 1 && CombinedRoles - LoneWolf == 0) {
|
||||
/*System.out.println(4);*/
|
||||
Winner = Role.LONEWOLF;
|
||||
return GameDecision.END;
|
||||
}
|
||||
|
||||
|
||||
if (InnocentRoles == NeutralRoles + TraitorRoles && doRush) {
|
||||
/*System.out.println(5);*/
|
||||
Winner = null;
|
||||
return GameDecision.RUSH;
|
||||
}
|
||||
|
||||
else if (InnocentRoles == NeutralRoles + TraitorRoles && !doRush) {
|
||||
/*System.out.println(6);*/
|
||||
Winner = null;
|
||||
inOvertime = true;
|
||||
return GameDecision.OVERTIME;
|
||||
}
|
||||
|
||||
|
||||
/*if (Winner == null) {
|
||||
Winner = Role.JESTER;
|
||||
}*/
|
||||
return GameDecision.END;
|
||||
}
|
||||
|
||||
public static Role getWinner() {
|
||||
return Winner;
|
||||
}
|
||||
|
||||
public static boolean isInOvertime() {
|
||||
return inOvertime;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
name: SimpleTTT
|
||||
version: 1.0.0
|
||||
main: com.the5gi.SimpleTTTCore
|
||||
main: net.nevet5gi.SimpleTTTCore
|
||||
api-version: 1.19
|
||||
authors: [ the5gi,SteveO718 ]
|
||||
authors: [ the5gi , SteveO718 ]
|
||||
commands:
|
||||
startgame:
|
||||
permission: sttt.start
|
||||
|
Loading…
Reference in New Issue
Block a user