Skip to content

Commit

Permalink
+ /bp start/stop command shortcut
Browse files Browse the repository at this point in the history
+ kick players if bungee server
~ fixed: got to INGAME state if start command is triggered without having the requirements
  • Loading branch information
lmk02 committed Oct 3, 2019
1 parent 7024e52 commit a32fbe9
Show file tree
Hide file tree
Showing 16 changed files with 156 additions and 32 deletions.
2 changes: 1 addition & 1 deletion api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>blockparty-parent</artifactId>
<groupId>de.leonkoth</groupId>
<version>2.0.3.4-ALPHA</version>
<version>2.0.3.4-RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
6 changes: 3 additions & 3 deletions core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>blockparty-parent</artifactId>
<groupId>de.leonkoth</groupId>
<version>2.0.3.4-ALPHA</version>
<version>2.0.3.4-RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down Expand Up @@ -127,8 +127,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<source>8</source>
<target>8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
Expand Down
29 changes: 29 additions & 0 deletions core/src/main/java/de/leonkoth/blockparty/BlockParty.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import de.leonkoth.blockparty.arena.Arena;
import de.leonkoth.blockparty.boost.Boost;
import de.leonkoth.blockparty.command.BlockPartyCommand;
import de.leonkoth.blockparty.command.BlockPartyStartCommand;
import de.leonkoth.blockparty.command.BlockPartyStopCommand;
import de.leonkoth.blockparty.command.BlockPartyUndoCommand;
import de.leonkoth.blockparty.data.Config;
import de.leonkoth.blockparty.data.Database;
Expand All @@ -22,15 +24,21 @@
import lombok.Getter;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandMap;
import org.bukkit.plugin.SimplePluginManager;
import org.bukkit.plugin.java.JavaPlugin;

import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.net.InetSocketAddress;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService;

import static org.bukkit.Bukkit.getServer;

/**
* Created by Leon on 14.03.2018.
* Project Blockparty2
Expand Down Expand Up @@ -172,6 +180,27 @@ public void start() {

// Init commands
new BlockPartyCommand(this);
if(config.getConfig().getBoolean("EnableCommandShortcuts"))
{
CommandMap commandMap = null;
try{
Field field = SimplePluginManager.class.getDeclaredField("commandMap");
field.setAccessible(true);
commandMap = (CommandMap)(field.get(getServer().getPluginManager()));
}catch(NoSuchFieldException e){
e.printStackTrace();
}
catch(IllegalAccessException e){
e.printStackTrace();
}

Command start = new BlockPartyStartCommand(this).getStartShortcut();
Command stop = new BlockPartyStopCommand(this).getStopShortcut();

commandMap.register("_", start);
commandMap.register("_", stop);

}
}

public void stop() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,65 @@
import de.leonkoth.blockparty.player.PlayerInfo;
import de.pauhull.utils.locale.storage.LocaleString;
import lombok.Getter;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import static de.leonkoth.blockparty.locale.BlockPartyLocale.*;

public class BlockPartyStartCommand extends SubCommand {
public class BlockPartyStartCommand extends SubCommand implements CommandExecutor {

public static String SYNTAX = "/bp start [Arena]";

@Getter
private LocaleString description = COMMAND_START;

@Getter
private StartShortcut startShortcut;

public BlockPartyStartCommand(BlockParty blockParty) {
super(false, 1, "start", "blockparty.admin.start", blockParty);
List<String> aliases = new ArrayList<>();
aliases.add("bpstart");
startShortcut = new StartShortcut(aliases);
}

@Override
public boolean onCommand(CommandSender sender, String[] args) {
String[] sArgs = Arrays.copyOfRange(args, 1, args.length);
return onCommand(sender, null, "start", args);
}

@Override
public String getSyntax() {
return SYNTAX;
}

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {

if (!label.equalsIgnoreCase(name)) {
return true;
}

if (!sender.hasPermission(permission))
{
ERROR_NO_PERMISSIONS.message(PREFIX, sender);
return true;
}

Arena arena;

if (args.length > 1) {
arena = Arena.getByName(args[1]);
if (args.length > 0) {
arena = Arena.getByName(args[0]);

if (arena == null) {
ERROR_ARENA_NOT_EXIST.message(PREFIX, sender);
ERROR_ARENA_NOT_EXIST.message(PREFIX, sender, "%ARENA%", args[0]);
return false;
}
} else {
Expand Down Expand Up @@ -63,9 +96,15 @@ public boolean onCommand(CommandSender sender, String[] args) {
return true;
}

@Override
public String getSyntax() {
return SYNTAX;
}
public class StartShortcut extends Command {

protected StartShortcut(List<String> aliases) {
super("start", "Start a game", "/start <arenaName> - <arenaName> is optional", aliases);
}

@Override
public boolean execute(CommandSender sender, String label, String[] args) {
return onCommand(sender, this, label, args);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,32 +6,71 @@
import de.leonkoth.blockparty.player.PlayerInfo;
import de.pauhull.utils.locale.storage.LocaleString;
import lombok.Getter;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import java.util.ArrayList;
import java.util.List;

import static de.leonkoth.blockparty.locale.BlockPartyLocale.*;

public class BlockPartyStopCommand extends SubCommand {
public class BlockPartyStopCommand extends SubCommand implements CommandExecutor {

public static String SYNTAX = "/bp stop";

@Getter
private LocaleString description = COMMAND_STOP;

@Getter
private StopShortcut stopShortcut;

public BlockPartyStopCommand(BlockParty blockParty) {
super(true, 1, "stop", "blockparty.admin.stop", blockParty);
List<String> aliases = new ArrayList<>();
aliases.add("bpstart");
stopShortcut = new StopShortcut(aliases);
}

@Override
public boolean onCommand(CommandSender sender, String[] args) {
return onCommand(sender, null, "stop", args);
}

Player player = (Player) sender;
PlayerInfo playerInfo = PlayerInfo.getFromPlayer(player);
@Override
public String getSyntax() {
return SYNTAX;
}

if (playerInfo == null)
return false;
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {

Arena arena = playerInfo.getCurrentArena();
if (!label.equalsIgnoreCase(name)) {
return true;
}

if (!sender.hasPermission(permission))
{
ERROR_NO_PERMISSIONS.message(PREFIX, sender);
return true;
}

Arena arena = null;
if(blockParty.isBungee())
{
arena = Arena.getByName(blockParty.getDefaultArena());
} else {
if (sender instanceof Player) {
Player player = (Player) sender;
PlayerInfo playerInfo = PlayerInfo.getFromPlayer(player);

if (playerInfo == null)
return false;

arena = playerInfo.getCurrentArena();
}
}

if (arena == null) {
ERROR_NOT_IN_ARENA.message(PREFIX, sender);
Expand All @@ -53,9 +92,15 @@ public boolean onCommand(CommandSender sender, String[] args) {
return true;
}

@Override
public String getSyntax() {
return SYNTAX;
}
public class StopShortcut extends Command {

protected StopShortcut(List<String> aliases) {
super("stop", "Stop a game", "/stop - while in a game",aliases);
}

@Override
public boolean execute(CommandSender sender, String label, String[] args) {
return onCommand(sender, this, label, args);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;

import static de.leonkoth.blockparty.locale.BlockPartyLocale.LEFT_GAME;

public class GameEndListener implements Listener {

private BlockParty blockParty;
Expand Down Expand Up @@ -40,6 +42,11 @@ public void onGameEnd(GameEndEvent event) {
}

if (arena.isAutoRestart()) {
if (blockParty.isBungee()) {
for (Player player : Bukkit.getOnlinePlayers()) {
player.kickPlayer(LEFT_GAME.toString("%ARENA%", arena.getName()));
}
}
Bukkit.getServer().spigot().restart();
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ public PhaseHandler(BlockParty blockParty, Arena arena) {
}

public boolean startLobbyPhase() {
arena.setArenaState(ArenaState.LOBBY);
if (this.arena.getPlayersInArena().size() >= arena.getMinPlayers() && !scheduler.isCurrentlyRunning(lobbyPhaseScheduler) && !scheduler.isQueued(lobbyPhaseScheduler)) {
arena.setArenaState(ArenaState.LOBBY);
this.lobbyPhase = new LobbyPhase(blockParty, arena.getName());
this.lobbyPhase.initialize();
this.lobbyPhaseScheduler = scheduler.scheduleSyncRepeatingTask(blockParty.getPlugin(), lobbyPhase, 0L, 20L);
Expand All @@ -53,8 +53,8 @@ public boolean startLobbyPhase() {
}

public boolean startGamePhase() {
arena.setArenaState(ArenaState.INGAME);
if (this.arena.getPlayersInArena().size() >= arena.getMinPlayers() && !scheduler.isCurrentlyRunning(gamePhaseScheduler) && !scheduler.isQueued(gamePhaseScheduler)) {
arena.setArenaState(ArenaState.INGAME);
this.gamePhase = new GamePhase(blockParty, arena.getName());
this.gamePhase.initialize();
this.gamePhaseScheduler = scheduler.scheduleSyncRepeatingTask(blockParty.getPlugin(), gamePhase, 0L, 2L);
Expand Down
4 changes: 4 additions & 0 deletions core/src/main/resources/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ SaveOnDisable: false
# DisabledSubCommands: ["help", "reload", "join"]
DisabledSubCommands: []

# Enables command shortcuts
# Command shortcuts: /start <arenaName> - /stop
EnableCommandShortcuts: false

Chat:
# Chat format when in arena
# Placeholders:
Expand Down
2 changes: 1 addition & 1 deletion core/src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ commands:
blockparty:
aliases: [bp, bparty]
description: Get information on how to use this Plugin
usage: /blockparty to get more information
usage: /blockparty - to get more information

api-version: 1.13
2 changes: 1 addition & 1 deletion dist/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>blockparty-parent</artifactId>
<groupId>de.leonkoth</groupId>
<version>2.0.3.4-ALPHA</version>
<version>2.0.3.4-RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion expansion/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>blockparty-parent</artifactId>
<groupId>de.leonkoth</groupId>
<version>2.0.3.4-ALPHA</version>
<version>2.0.3.4-RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>de.leonkoth</groupId>
<artifactId>blockparty-parent</artifactId>
<version>2.0.3.4-ALPHA</version>
<version>2.0.3.4-RELEASE</version>
<modules>
<module>core</module>
<module>dist</module>
Expand Down
2 changes: 1 addition & 1 deletion spigot_v1_13_R1/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>blockparty-parent</artifactId>
<groupId>de.leonkoth</groupId>
<version>2.0.3.4-ALPHA</version>
<version>2.0.3.4-RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion spigot_v1_14_R1/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>blockparty-parent</artifactId>
<groupId>de.leonkoth</groupId>
<version>2.0.3.4-ALPHA</version>
<version>2.0.3.4-RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion spigot_v1_8_R3/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>blockparty-parent</artifactId>
<groupId>de.leonkoth</groupId>
<version>2.0.3.4-ALPHA</version>
<version>2.0.3.4-RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion utils/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>blockparty-parent</artifactId>
<groupId>de.leonkoth</groupId>
<version>2.0.3.4-ALPHA</version>
<version>2.0.3.4-RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down

0 comments on commit a32fbe9

Please sign in to comment.