Skip to content

Commit

Permalink
Functions update
Browse files Browse the repository at this point in the history
- Separated all functions in classes
- Fixed the counter who used Thread.sleep()
  • Loading branch information
Ezzud authored Nov 5, 2021
1 parent 02c6699 commit 345a532
Show file tree
Hide file tree
Showing 10 changed files with 633 additions and 486 deletions.
3 changes: 2 additions & 1 deletion config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ huntedColor: "&e"
guardColor: "&6"
spectatorColor: "&7"
coordinatesRefreshDelay: 45 #Commas do not work

counterToStart: 5 #Countdown before game starts

winCommands:
- "tell %player% You win!"
Expand Down Expand Up @@ -170,6 +170,7 @@ messages_notAGuard: "&cYou are not a guard"
messages_gameAlreadyStarted: '&cGame already started'
messages_gameStarted: "&aGame just started"
messages_gameIsStarting: "&aStarting in..."
messages_gameStartingCount: "&b%seconds%"

messages_gameNotStarted: "&cGame is not started"
messages_gameStopped: "&cGame has been stopped"
Expand Down
2 changes: 1 addition & 1 deletion plugin.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Manhunt
main: fr.ezzud.hunting.Main
version: 1.3.3
version: 1.3.5
author: Ezzud
api-version: 1.16
commands:
Expand Down
437 changes: 12 additions & 425 deletions src/fr/ezzud/hunting/Main.java

Large diffs are not rendered by default.

105 changes: 46 additions & 59 deletions src/fr/ezzud/hunting/commands/CommandHandler.java
Original file line number Diff line number Diff line change
@@ -1,26 +1,27 @@
package fr.ezzud.hunting.commands;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
import org.bukkit.Sound;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;

import fr.ezzud.hunting.Main;
import fr.ezzud.hunting.management.CountdownTimer;
import fr.ezzud.hunting.management.colorManager;
import fr.ezzud.hunting.management.compassManager;
import fr.ezzud.hunting.management.gameManager;
import fr.ezzud.hunting.management.teamManager;
import fr.ezzud.hunting.management.whitelistManager;

public class CommandHandler implements CommandExecutor {
Main plugin;
static Main plugin;

public CommandHandler(Main instance) {
plugin = instance;
Expand All @@ -42,9 +43,9 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
} else {
plugin.reloadConfig();
plugin.saveConfig();
plugin.setColors();
plugin.resetWhitelist();
plugin.setWhitelist();
colorManager.setColors();
whitelistManager.resetWhitelist();
whitelistManager.setWhitelist();
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + plugin.getConfig().getString("messages_reloadMessageSuccessful")));
return true;
}
Expand Down Expand Up @@ -188,14 +189,14 @@ public boolean onCommand(CommandSender sender, Command command, String label, St

if(Bukkit.getOfflinePlayer(args[1]) != null) {
OfflinePlayer player = Bukkit.getOfflinePlayer(args[1]);
if(Main.isTeam(player.getName()) == true) {
if(teamManager.isTeam(player.getName()) == true) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + "&cPlayer is already in a team!"));
return true;
}
plugin.getConfig().set("hunted", player.getName());
plugin.saveConfig();
plugin.reloadConfig();
plugin.setColors();
colorManager.setColors();
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + "&aThe speedrunner is now &6" + player.getName()));
return true;
} else {
Expand All @@ -219,7 +220,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + "&cUsage: /manhunt addteammember <player name> <team>"));
return true;
}
if(Main.isTeam(player.getName()) == true) {
if(teamManager.isTeam(player.getName()) == true) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + "&cPlayer is already in a team!"));
return true;
}
Expand All @@ -230,7 +231,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
plugin.getConfig().set("team1", list);
plugin.saveConfig();
plugin.reloadConfig();
plugin.setColors();
colorManager.setColors();
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + "&e" + player.getName() + " &ahas been added to the team " + plugin.getConfig().getString("team1Color") + plugin.getConfig().getString("team1name")));
break;
case "team2":
Expand All @@ -239,7 +240,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
plugin.getConfig().set("team2", list2);
plugin.saveConfig();
plugin.reloadConfig();
plugin.setColors();
colorManager.setColors();
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + "&e" + player.getName() + " &ahas been added to the team " + plugin.getConfig().getString("team2Color") + plugin.getConfig().getString("team2name")));
break;
case "guards":
Expand All @@ -248,7 +249,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
plugin.getConfig().set("guards", list3);
plugin.saveConfig();
plugin.reloadConfig();
plugin.setColors();
colorManager.setColors();
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + "&e" + player.getName() + " &ahas been added to the team " + plugin.getConfig().getString("guardColor") + plugin.getConfig().getString("guardTeamName")));
break;
case "spectators":
Expand All @@ -257,7 +258,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
plugin.getConfig().set("spectators", list4);
plugin.saveConfig();
plugin.reloadConfig();
plugin.setColors();
colorManager.setColors();
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + "&e" + player.getName() + " &ahas been added to the team " + plugin.getConfig().getString("spectatorColor") + plugin.getConfig().getString("spectatorName")));
break;
default:
Expand Down Expand Up @@ -287,7 +288,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + "&cUsage: /manhunt removeteammember <player name> <team>"));
return true;
}
if(Main.isTeam(player.getName()) == false) {
if(teamManager.isTeam(player.getName()) == false) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + "&cPlayer is not in a team!"));
return true;
}
Expand Down Expand Up @@ -390,32 +391,34 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + plugin.getConfig().getString("messages_gameAlreadyStarted")));
return true;
}
Main.GameState = true;
if(plugin.counting == true) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + plugin.getConfig().getString("messages_gameAlreadyStarted")));
return true;
}
Bukkit.getWorld("world").setTime(0);
Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + plugin.getConfig().getString("messages_gameIsStarting")));
try {Thread.sleep(1000L);} catch (InterruptedException e) {e.printStackTrace();}
Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', "&b5"));
try {Thread.sleep(1000L);} catch (InterruptedException e) {e.printStackTrace();}
Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', "&b4"));
try {Thread.sleep(1000L);} catch (InterruptedException e) {e.printStackTrace();}
Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', "&b3"));
try {Thread.sleep(1000L);} catch (InterruptedException e) {e.printStackTrace();}
Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', "&b2"));
try {Thread.sleep(1000L);} catch (InterruptedException e) {e.printStackTrace();}
Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', "&b1"));
try {Thread.sleep(1000L);} catch (InterruptedException e) {e.printStackTrace();}
ArrayList<?> list = new ArrayList<>(Bukkit.getOnlinePlayers());
list.forEach((p) -> {

Player player = ((Player) p);
player.getActivePotionEffects().clear();
Main.giveItems(player);

player.playSound(player.getLocation(), Sound.ENTITY_ENDER_DRAGON_GROWL, 100, 0);
});
Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + plugin.getConfig().getString("messages_gameStarted")));

Main.compassCalibrate(plugin.getConfig().getString("hunted"), plugin.getConfig());
plugin.counting = true;
plugin.counted = false;
CountdownTimer timer = new CountdownTimer(plugin,
plugin.getConfig().getInt("counterToStart"),
() -> {
Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + plugin.getConfig().getString("messages_gameIsStarting")));
},
() -> {
plugin.counted = true;
plugin.counting = false;
new gameManager().start();
Main.GameState = true;
Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + plugin.getConfig().getString("messages_gameStarted")));

compassManager.calibrate(plugin.getConfig().getString("hunted"), plugin.getConfig());
},
(t) -> Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("messages_gameStartingCount").replaceAll("%seconds%", String.valueOf(t.getSecondsLeft()))))

);
timer.scheduleTimer();




}
if (args.length > 0 && args[0].equalsIgnoreCase("stop")) {
Expand All @@ -427,23 +430,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + plugin.getConfig().getString("messages_gameNotStarted")));
return true;
}
Main.GameState = false;
ArrayList<?> list = new ArrayList<>(Bukkit.getOnlinePlayers());
list.forEach((p) -> {
Player player = ((Player) p);
player.getActivePotionEffects().clear();
player.setGameMode(GameMode.ADVENTURE);
player.teleport(new Location(Bukkit.getWorld("world"), Double.parseDouble(plugin.getConfig().getString("spawnCoords").split(", ")[0]), Double.parseDouble(plugin.getConfig().getString("spawnCoords").split(", ")[1]), Double.parseDouble(plugin.getConfig().getString("spawnCoords").split(", ")[2])));
player.setHealth(20.0);
player.setFoodLevel(20);
player.setSaturation(20);
player.setLevel(0);
player.setExp(0);
player.getInventory().clear();
});


Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("prefix") + plugin.getConfig().getString("messages_gameStopped")));
gameManager.stop();
return true;
}
return false;
Expand Down
66 changes: 66 additions & 0 deletions src/fr/ezzud/hunting/management/CountdownTimer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package fr.ezzud.hunting.management;

import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.function.Consumer;

// Thanks to https://www.spigotmc.org/members/expdev.174734/

public class CountdownTimer implements Runnable {

private JavaPlugin plugin;

private Integer assignedTaskId;

private int seconds;
private int secondsLeft;

private Consumer<CountdownTimer> everySecond;
private Runnable beforeTimer;
private Runnable afterTimer;

public CountdownTimer(JavaPlugin plugin, int seconds,
Runnable beforeTimer, Runnable afterTimer,
Consumer<CountdownTimer> everySecond) {
this.plugin = plugin;

this.seconds = seconds;
this.secondsLeft = seconds;

this.beforeTimer = beforeTimer;
this.afterTimer = afterTimer;
this.everySecond = everySecond;
}


@Override
public void run() {
if (secondsLeft < 1) {
afterTimer.run();

if (assignedTaskId != null) Bukkit.getScheduler().cancelTask(assignedTaskId);
return;
}

if (secondsLeft == seconds) beforeTimer.run();

everySecond.accept(this);

secondsLeft--;
}


public int getTotalSeconds() {
return seconds;
}

public int getSecondsLeft() {
return secondsLeft;
}

public void scheduleTimer() {
this.assignedTaskId = Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, this, 0L, 20L);
}

}
67 changes: 67 additions & 0 deletions src/fr/ezzud/hunting/management/colorManager.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package fr.ezzud.hunting.management;

import java.util.ArrayList;
import java.util.Iterator;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;

import fr.ezzud.hunting.Main;

public class colorManager {
static Main plugin = Main.getInstance();
public static void setColors() {
ArrayList<?> list2 = new ArrayList<>(Bukkit.getOnlinePlayers());
list2.forEach((p) -> {
Player player = ((Player) p);



Iterator<?> team1Var = plugin.getConfig().getStringList("team1").iterator();

while(team1Var.hasNext()) {
String member = (String)team1Var.next();
if(member.equals(player.getName())) {
player.setDisplayName(plugin.getConfig().getString("team1Color").replaceAll("&", "§") + player.getName() + ChatColor.RESET);
player.setPlayerListName(plugin.getConfig().getString("team1Color").replaceAll("&", "§") + player.getName() + ChatColor.RESET);
}
}

Iterator<?> team2Var = plugin.getConfig().getStringList("team2").iterator();

while(team2Var.hasNext()) {
String member = (String)team2Var.next();
if(member.equals(player.getName())) {
player.setDisplayName(plugin.getConfig().getString("team2Color").replaceAll("&", "§") + player.getName() + ChatColor.RESET);
player.setPlayerListName(plugin.getConfig().getString("team2Color").replaceAll("&", "§") + player.getName() + ChatColor.RESET);
}
}

String teamHVar = plugin.getConfig().getString("hunted");
if(teamHVar.equals(player.getName())) {
player.setDisplayName(plugin.getConfig().getString("huntedColor").replaceAll("&", "§") + player.getName() + ChatColor.RESET);
player.setPlayerListName(plugin.getConfig().getString("huntedColor").replaceAll("&", "§") + player.getName() + ChatColor.RESET);
}

Iterator<?> teamGVar = plugin.getConfig().getStringList("guards").iterator();

while(teamGVar.hasNext()) {
String member = (String)teamGVar.next();
if(member.equals(player.getName())) {
player.setDisplayName(ChatColor.GOLD + player.getName() + ChatColor.RESET);
player.setPlayerListName(plugin.getConfig().getString("guardColor").replaceAll("&", "§") + player.getName() + ChatColor.RESET);
}
}
Iterator<?> teamSVar = plugin.getConfig().getStringList("spectators").iterator();

while(teamSVar.hasNext()) {
String member = (String)teamSVar.next();
if(member.equals(player.getName())) {
player.setDisplayName(plugin.getConfig().getString("spectatorColor").replaceAll("&", "§") + player.getName() + ChatColor.RESET);
player.setPlayerListName(plugin.getConfig().getString("spectatorColor").replaceAll("&", "§") + player.getName() + ChatColor.RESET);
}
}
});
}
}
Loading

0 comments on commit 345a532

Please sign in to comment.