Skip to content

Commit

Permalink
added walls type vote
Browse files Browse the repository at this point in the history
added spectator to tab but hide player itself
  • Loading branch information
NonSwag committed May 1, 2023
1 parent e9b2541 commit 023dda1
Show file tree
Hide file tree
Showing 23 changed files with 133 additions and 52 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ public void onEnable() {
}
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}, 1);
}
Expand Down
Binary file modified out/production/walls/net/nonswag/fvr/walls/Walls$1.class
Binary file not shown.
Binary file modified out/production/walls/net/nonswag/fvr/walls/Walls$GameState.class
Binary file not shown.
Binary file not shown.
Binary file modified out/production/walls/net/nonswag/fvr/walls/Walls$Sort.class
Binary file not shown.
Binary file modified out/production/walls/net/nonswag/fvr/walls/Walls$Team.class
Binary file not shown.
Binary file modified out/production/walls/net/nonswag/fvr/walls/Walls.class
Binary file not shown.
Binary file not shown.
Binary file modified out/production/walls/net/nonswag/fvr/walls/api/GameStarter.class
Binary file not shown.
Binary file modified out/production/walls/net/nonswag/fvr/walls/api/Notifier.class
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
1 change: 0 additions & 1 deletion src/main/java/net/nonswag/fvr/walls/Walls.java
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,6 @@ public double getKD() {

public static final List<UUID> teamCaptains = new ArrayList<>();

public static String logPlayer = null;
public static final String levelName;
private static String nextMap;
public static final String DISCORD = "https://discord.gg/vpAgZxQ";
Expand Down
30 changes: 30 additions & 0 deletions src/main/java/net/nonswag/fvr/walls/api/GameStarter.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import net.nonswag.fvr.walls.Walls.Team;
import net.nonswag.fvr.walls.Walls.WallsPlayer;
import net.nonswag.fvr.walls.commands.FullKitCommand;
import net.nonswag.fvr.walls.commands.WallsCommand;
import net.nonswag.fvr.walls.kits.BasicPlayerKit;
import net.nonswag.fvr.walls.kits.ProStartPlayerKitPerks;
import net.nonswag.fvr.walls.kits.VipStartPlayerKitPerks;
Expand All @@ -15,6 +16,7 @@
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom;

public class GameStarter {

Expand Down Expand Up @@ -84,12 +86,40 @@ public static void startGame(Map<UUID, WallsPlayer> players, final Walls walls)
walls.kickOffCompassThread();
Notifier.broadcast("Enemy Finder Compass now activated.");

countForVotes();

if (Walls.diamondWalls) FullKitCommand.fullDiamond(walls);
else if (Walls.ironWalls) FullKitCommand.fullIron(walls);
walls.clock.setClock(walls.getPeaceTimeMins() * 60, walls::dropWalls);
walls.getPlayerScoreBoard().updateScoreboardScores();
}

private static void countForVotes() {
int ironVotes = WallsCommand.IRON_VOTES.size();
int diamondVotes = WallsCommand.DIAMOND_VOTES.size();

if (ironVotes + diamondVotes > 0) {
if (diamondVotes > ironVotes) {
Notifier.broadcast("DiamondWalls won with " + diamondVotes + " votes");
Walls.diamondWalls = true;
Walls.ironWalls = false;
} else if (ironVotes > diamondVotes) {
Notifier.broadcast("IronWalls won with " + ironVotes + " votes");
Walls.diamondWalls = false;
Walls.ironWalls = true;
} else {
boolean diamond = ThreadLocalRandom.current().nextBoolean();
Notifier.broadcast("§aThe voting ended in a draw! The server voted for " + (diamond ? "§bDiamondWalls" : "§7IronWalls"));
Walls.diamondWalls = diamond;
Walls.ironWalls = !diamond;
}
}


WallsCommand.IRON_VOTES.clear();
WallsCommand.DIAMOND_VOTES.clear();
}


private static int getSmallestTeam(Walls myWalls) {
int smallestTeam = 100;
Expand Down
5 changes: 2 additions & 3 deletions src/main/java/net/nonswag/fvr/walls/api/Notifier.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,8 @@
import java.util.UUID;

public class Notifier {

private static final String PREFIX = "§6§lWalls§r ";
public static final String STAFF_CHAT = "§c[§bStaffChat§c] §b";
public static final String PREFIX = "§6§lWalls§r ";
private static final String STAFF_CHAT = "§c[§bStaffChat§c] §b";

public static void error(CommandSender sender, String message) {
sender.sendMessage(PREFIX + ChatColor.RED + message);
Expand Down
14 changes: 12 additions & 2 deletions src/main/java/net/nonswag/fvr/walls/api/PlayerVisibility.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package net.nonswag.fvr.walls.api;

import net.minecraft.server.v1_8_R3.EntityPlayer;
import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo;
import net.nonswag.fvr.walls.Walls;
import net.nonswag.fvr.walls.Walls.Team;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
import org.bukkit.entity.Player;

import java.util.UUID;
Expand All @@ -13,7 +16,7 @@ public static void makeSpecInvisible(Walls walls, Player spec) {
for (Team team : Team.values()) {
for (UUID fighter : walls.getTeamList(team)) {
Player player = Bukkit.getPlayer(fighter);
if (player != null) player.hidePlayer(spec);
if (player != null) hidePlayer(player, spec);
}
}
}
Expand All @@ -30,10 +33,17 @@ public static void makeSpecVisToSpecs(Walls walls, Player spec) {
public static void hideAllSpecs(Walls walls, Player player) {
for (UUID spectator : walls.getTeamList(Team.SPECTATORS)) {
Player all = Bukkit.getPlayer(spectator);
if (all != null) player.hidePlayer(all);
if (all != null) hidePlayer(player, all);
}
}

private static void hidePlayer(Player viewer, Player viewed) {
viewer.hidePlayer(viewed);
EntityPlayer viewerHandle = ((CraftPlayer) viewer).getHandle();
EntityPlayer viewedHandle = ((CraftPlayer) viewed).getHandle();
viewerHandle.playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, viewedHandle));
}

public static void makeInVisPlayerNowVisible(Player wasInvisible) {
for (Player all : Bukkit.getOnlinePlayers()) all.showPlayer(wasInvisible);
}
Expand Down
92 changes: 53 additions & 39 deletions src/main/java/net/nonswag/fvr/walls/commands/WallsCommand.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package net.nonswag.fvr.walls.commands;

import lombok.RequiredArgsConstructor;
import net.nonswag.fvr.walls.Walls;
import net.nonswag.fvr.walls.Walls.PlayerJoinType;
import net.nonswag.fvr.walls.Walls.Team;
Expand All @@ -15,52 +16,76 @@
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.*;

import static net.nonswag.fvr.walls.api.Notifier.*;

@RequiredArgsConstructor
public class WallsCommand implements CommandExecutor {
private final Walls walls;

public WallsCommand(Walls walls) {
this.walls = walls;
}

@Override
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
if (args.length < 1) {
if (sender instanceof Player) error(sender, "usage: /walls votestart");
if (sender.isOp()) {
error(sender, "usage: /walls drop | rank | autostartplayers | clanrename | clanbattle | captain | restricted | diamondwalls | ironwalls | fixdb");
}
} else if (args[0].equalsIgnoreCase("diamondwalls")) {
if (sender.isOp()) broadcast("Set diamondwalls to " + (Walls.diamondWalls = !Walls.diamondWalls));
else error(sender, "You have no rights to do this");
} else if (args[0].equalsIgnoreCase("ironwalls")) {
if (sender.isOp()) broadcast("Set ironwalls to " + (Walls.ironWalls = !Walls.ironWalls));
else error(sender, "You have no rights to do this");
} else if (args[0].equalsIgnoreCase("stop")) stop(sender);
if (sender instanceof Player) error(sender, "usage: /walls voteStart | voteIron | voteDiamond");
if (sender.isOp()) error(sender, "usage: /walls drop | rank | autoStartPlayers | clanRename | " +
"clanBattle | captain | restricted | diamondWalls | ironWalls | fixdb | stop | chat | " +
"noStaffChat | start | addPlayer | silence | captain");
} else if (args[0].equalsIgnoreCase("voteDiamond")) voteDiamond(sender);
else if (args[0].equalsIgnoreCase("voteIron")) voteIron(sender);
else if (args[0].equalsIgnoreCase("diamondWalls")) diamondWalls(sender);
else if (args[0].equalsIgnoreCase("ironWalls")) ironWalls(sender);
else if (args[0].equalsIgnoreCase("stop")) stop(sender);
else if (args[0].equalsIgnoreCase("fixdb")) fixdb(sender);
else if (args[0].equalsIgnoreCase("votestart")) votestart(sender);
else if (args[0].equalsIgnoreCase("voteStart")) voteStart(sender);
else if (args[0].equalsIgnoreCase("chat")) chatListener(sender);
else if (args[0].equalsIgnoreCase("nostaffchat")) noStaffChat(sender);
else if (args[0].equalsIgnoreCase("noStaffChat")) noStaffChat(sender);
else if (args[0].equalsIgnoreCase("start")) startWalls(sender);
else if (args[0].equalsIgnoreCase("addplayer")) addPlayer(sender, args);
else if (args[0].equalsIgnoreCase("addPlayer")) addPlayer(sender, args);
else if (args[0].equalsIgnoreCase("silence")) silenceComand(sender);
else if (args[0].equalsIgnoreCase("clanrename")) setClanName(sender, args);
else if (args[0].equalsIgnoreCase("clanRename")) setClanName(sender, args);
else if (args[0].equalsIgnoreCase("drop")) drop(sender);
else if (args[0].equalsIgnoreCase("rank")) setRank(sender, args);
else if (args[0].equalsIgnoreCase("autostartplayers")) setAutoStartPlayers(sender, args);
else if (args[0].equalsIgnoreCase("clanbattle")) toggleClanBattle(sender);
else if (args[0].equalsIgnoreCase("autoStartPlayers")) setAutoStartPlayers(sender, args);
else if (args[0].equalsIgnoreCase("clanBattle")) toggleClanBattle(sender);
else if (args[0].equalsIgnoreCase("restricted")) setPlayerJoinRestriction(sender, args);
else if (args[0].equalsIgnoreCase("captain")) this.addCaptain(sender, args);
else if (args[0].equalsIgnoreCase("logPlayer")) this.logPlayer(sender, args);
else if (args[0].equalsIgnoreCase("captain")) addCaptain(sender, args);
else error(sender, args[0] + " is not a valid argument");
return true;
}

public static final Set<Player> DIAMOND_VOTES = Collections.newSetFromMap(new WeakHashMap<>());
public static final Set<Player> IRON_VOTES = Collections.newSetFromMap(new WeakHashMap<>());

private void vote(CommandSender sender, Set<Player> set, String type) {
if (sender instanceof Player) {
if (set.equals(IRON_VOTES)) DIAMOND_VOTES.remove(sender);
if (set.equals(DIAMOND_VOTES)) IRON_VOTES.remove(sender);
if (!set.contains(sender)) {
set.add((Player) sender);
Notifier.broadcast(sender.getName() + " voted for " + type + " walls §8(§7" + set.size() + "§8)");
} else Notifier.error(sender, "You already voted for " + type + " walls");
} else error(sender, "This is a player command");
}

private void voteDiamond(CommandSender sender) {
vote(sender, DIAMOND_VOTES, "diamond");
}

private void voteIron(CommandSender sender) {
vote(sender, IRON_VOTES, "iron");
}

private static void diamondWalls(CommandSender sender) {
if (sender.isOp()) broadcast("Set diamondwalls to " + (Walls.diamondWalls = !Walls.diamondWalls));
else error(sender, "You have no rights to do this");
}

private static void ironWalls(CommandSender sender) {
if (sender.isOp()) broadcast("Set ironwalls to " + (Walls.ironWalls = !Walls.ironWalls));
else error(sender, "You have no rights to do this");
}

public static boolean FIX_DB = false;

private void fixdb(CommandSender sender) {
Expand All @@ -76,7 +101,7 @@ private void fixdb(CommandSender sender) {

public static final List<UUID> VOTES = new ArrayList<>();

private void votestart(CommandSender sender) {
private void voteStart(CommandSender sender) {
if (sender instanceof Player) {
Player player = (Player) sender;
if (walls.starting) error(player, "The game is already starting");
Expand All @@ -97,7 +122,7 @@ private void autoStart() {
walls.starting = true;
} else {
int players = Walls.preGameAutoStartPlayers / 2 - VOTES.size();
broadcast(players + " more vote" + (players != 1 ? "s are" : " is") + " needed §8(§7/walls votestart§8)");
broadcast(players + " more vote" + (players != 1 ? "s are" : " is") + " needed §8(§7/walls voteStart§8)");
}
}

Expand Down Expand Up @@ -280,15 +305,4 @@ private void toggleClanBattle(CommandSender sender) {
success(sender, "Yup. ClanBattle set to " + Walls.clanBattle);
} else error(sender, "You have no rights to do this");
}

private void logPlayer(CommandSender sender, String[] args) {
if (sender.isOp()) {
if (args.length == 2) {
Walls.logPlayer = args[1];
success(sender, "Now Logging data for: " + Walls.logPlayer);
} else {
error(sender, "Nope.");
}
} else error(sender, "You have no rights to do this");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public void onPlayerChat(AsyncPlayerChatEvent event) {
String rank = twp.getRank().display();
String clan = "";
if (twp.getClan() != null) {
clan = ChatColor.DARK_RED + "" + ChatColor.BOLD + ChatColor.translateAlternateColorCodes('&', twp.getClan()) + ChatColor.WHITE + "◊";
clan = ChatColor.DARK_RED + String.valueOf(ChatColor.BOLD) + ChatColor.translateAlternateColorCodes('&', twp.getClan()) + ChatColor.WHITE + "◊";
}
switch (walls.getGameState()) {
case PREGAME:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
import lombok.RequiredArgsConstructor;
import me.filoghost.holographicdisplays.api.HolographicDisplaysAPI;
import me.filoghost.holographicdisplays.api.hologram.Hologram;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.ComponentBuilder;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import net.nonswag.fvr.walls.Walls;
import net.nonswag.fvr.walls.api.GameStarter;
import net.nonswag.fvr.walls.api.Notifier;
Expand Down Expand Up @@ -39,6 +43,16 @@ public void onPlayerJoin(PlayerJoinEvent event) {
case PREGAME:
player.setTeam(Walls.Team.SPECTATORS);
walls.getSpectatorKit().givePlayerKit(event.getPlayer());
event.getPlayer().sendMessage(new ComponentBuilder(Notifier.PREFIX)
.append("Click to vote for ")
.append("§b§nDiamondWalls")
.event(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/walls voteDiamond"))
.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[]{new TextComponent("/walls voteDiamond")}))
.append(" or ", ComponentBuilder.FormatRetention.NONE)
.append("§7§nIronWalls")
.event(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/walls voteIron"))
.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[]{new TextComponent("/walls voteIron")}))
.create());
event.getPlayer().setHealth(20);
event.getPlayer().setFoodLevel(20);
walls.getPlayerScoreBoard().setScoreBoard(event.getPlayer());
Expand Down
26 changes: 21 additions & 5 deletions src/main/resources/config.yml
Original file line number Diff line number Diff line change
@@ -1,24 +1,40 @@
# TheWalls
Language: en

# the peace time before the walls drop (in minutes)
peaceTimeMins: 15

# the amount of players required to start a game automatically
preGameAutoStartPlayers: 4

# the time til the game automatically starts (in seconds)
preGameAutoStartSeconds: 120

# the time the game takes to start after reaching the player cap or force starting it (in seconds)
gameStartSeconds: 30

# the time a player counts as "in combat" without fighting (in seconds)
combatRelogTime: 10

# the time a player has to reconnect before being disqualified (in seconds)
relogTime: 90

# every player receives a golden apple before fighting
# no natural regeneration (only magic)
UHCMode: false
# --------------------------------------

# tournamentMode true will prevent "autostart happening" requires an op / admin to start the game.
tournamentMode: false
# --------------------------------------

# 0-ANYONE, 1-VIP, 2-PRO, 3-LEGENDARY, 4-STAFF
playerJoinRestriction: ANYONE

# disables the ability to select a team
allowPickTeams: true

# Either diamond or iron walls
diamondWalls: false
ironWalls: false
# --------------------------------------
# --------------------------------------

# clanBattle allows clan naming - which affects team names. restricts to only those with the clan names to join and play.
clanBattle: false
clan-1: clan 1
Expand Down

0 comments on commit 023dda1

Please sign in to comment.