Made a join command and let the game work for a bit.
This commit is contained in:
parent
4409b147fa
commit
ea8eed6010
@ -1,10 +1,12 @@
|
|||||||
package nl.Steffion.BlockHunt;
|
package nl.Steffion.BlockHunt;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import nl.Steffion.BlockHunt.Serializables.LocationSerializable;
|
import nl.Steffion.BlockHunt.Serializables.LocationSerializable;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
public class Arena {
|
public class Arena {
|
||||||
public String arenaName;
|
public String arenaName;
|
||||||
@ -16,12 +18,18 @@ public class Arena {
|
|||||||
public int timeInLobbyUntilStart;
|
public int timeInLobbyUntilStart;
|
||||||
public int waitingTimeSeeker;
|
public int waitingTimeSeeker;
|
||||||
public int gameTime;
|
public int gameTime;
|
||||||
|
public ArrayList<ItemStack> disguiseBlocks;
|
||||||
public List<Player> playersInArena;
|
public List<Player> playersInArena;
|
||||||
|
public ArenaState gameState;
|
||||||
|
public int timer;
|
||||||
|
public List<Player> seekers;
|
||||||
|
|
||||||
public Arena (String arenaName, LocationSerializable pos1,
|
public Arena (String arenaName, LocationSerializable pos1,
|
||||||
LocationSerializable pos2, int maxPlayers, int minPlayers,
|
LocationSerializable pos2, int maxPlayers, int minPlayers,
|
||||||
int amountSeekersOnStart, int timeInLobbyUntilStart,
|
int amountSeekersOnStart, int timeInLobbyUntilStart,
|
||||||
int waitingTimeSeeker, int gameTime, List<Player> playersInArena) {
|
int waitingTimeSeeker, int gameTime,
|
||||||
|
ArrayList<ItemStack> disguiseBlocks, List<Player> playersInArena,
|
||||||
|
ArenaState gameState, int timer, List<Player> seekers) {
|
||||||
this.arenaName = arenaName;
|
this.arenaName = arenaName;
|
||||||
this.pos1 = pos1;
|
this.pos1 = pos1;
|
||||||
this.pos2 = pos2;
|
this.pos2 = pos2;
|
||||||
@ -31,7 +39,11 @@ public class Arena {
|
|||||||
this.timeInLobbyUntilStart = timeInLobbyUntilStart;
|
this.timeInLobbyUntilStart = timeInLobbyUntilStart;
|
||||||
this.waitingTimeSeeker = waitingTimeSeeker;
|
this.waitingTimeSeeker = waitingTimeSeeker;
|
||||||
this.gameTime = gameTime;
|
this.gameTime = gameTime;
|
||||||
|
this.disguiseBlocks = disguiseBlocks;
|
||||||
this.playersInArena = playersInArena;
|
this.playersInArena = playersInArena;
|
||||||
|
this.gameState = gameState;
|
||||||
|
this.timer = timer;
|
||||||
|
this.seekers = seekers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum ArenaType {
|
public enum ArenaType {
|
||||||
@ -42,4 +54,8 @@ public class Arena {
|
|||||||
waitingTimeSeeker,
|
waitingTimeSeeker,
|
||||||
gameTime;
|
gameTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum ArenaState {
|
||||||
|
WAITING, STARTING, INGAME, RESTARTING, DISABLED;
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,6 +1,10 @@
|
|||||||
package nl.Steffion.BlockHunt;
|
package nl.Steffion.BlockHunt;
|
||||||
|
|
||||||
|
import java.util.LinkedList;
|
||||||
|
|
||||||
|
import nl.Steffion.BlockHunt.Arena.ArenaState;
|
||||||
import nl.Steffion.BlockHunt.Listeners.OnInventoryClickEvent;
|
import nl.Steffion.BlockHunt.Listeners.OnInventoryClickEvent;
|
||||||
|
import nl.Steffion.BlockHunt.Listeners.OnInventoryCloseEvent;
|
||||||
import nl.Steffion.BlockHunt.Listeners.OnPlayerInteractEvent;
|
import nl.Steffion.BlockHunt.Listeners.OnPlayerInteractEvent;
|
||||||
import nl.Steffion.BlockHunt.Managers.CommandC;
|
import nl.Steffion.BlockHunt.Managers.CommandC;
|
||||||
import nl.Steffion.BlockHunt.Managers.ConfigC;
|
import nl.Steffion.BlockHunt.Managers.ConfigC;
|
||||||
@ -13,8 +17,13 @@ import org.bukkit.command.CommandSender;
|
|||||||
import org.bukkit.configuration.serialization.ConfigurationSerialization;
|
import org.bukkit.configuration.serialization.ConfigurationSerialization;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import pgDev.bukkit.DisguiseCraft.DisguiseCraft;
|
||||||
|
import pgDev.bukkit.DisguiseCraft.disguise.Disguise;
|
||||||
|
import pgDev.bukkit.DisguiseCraft.disguise.DisguiseType;
|
||||||
|
|
||||||
public class BlockHunt extends JavaPlugin implements Listener {
|
public class BlockHunt extends JavaPlugin implements Listener {
|
||||||
/*
|
/*
|
||||||
* Made by @author Steffion, © 2013.
|
* Made by @author Steffion, © 2013.
|
||||||
@ -26,6 +35,8 @@ public class BlockHunt extends JavaPlugin implements Listener {
|
|||||||
new OnPlayerInteractEvent(), this);
|
new OnPlayerInteractEvent(), this);
|
||||||
getServer().getPluginManager().registerEvents(
|
getServer().getPluginManager().registerEvents(
|
||||||
new OnInventoryClickEvent(), this);
|
new OnInventoryClickEvent(), this);
|
||||||
|
getServer().getPluginManager().registerEvents(
|
||||||
|
new OnInventoryCloseEvent(), this);
|
||||||
|
|
||||||
ConfigurationSerialization.registerClass(LocationSerializable.class,
|
ConfigurationSerialization.registerClass(LocationSerializable.class,
|
||||||
"Location");
|
"Location");
|
||||||
@ -36,9 +47,117 @@ public class BlockHunt extends JavaPlugin implements Listener {
|
|||||||
|
|
||||||
ArenaHandler.loadArenas();
|
ArenaHandler.loadArenas();
|
||||||
|
|
||||||
|
W.dcAPI = DisguiseCraft.getAPI();
|
||||||
|
|
||||||
MessageM.sendFMessage(null, ConfigC.log_Enabled, true, "name-"
|
MessageM.sendFMessage(null, ConfigC.log_Enabled, true, "name-"
|
||||||
+ W.pluginName, "version-" + W.pluginVersion, "autors-"
|
+ W.pluginName, "version-" + W.pluginVersion, "autors-"
|
||||||
+ W.pluginAutors);
|
+ W.pluginAutors);
|
||||||
|
|
||||||
|
getServer().getScheduler().runTaskTimer(this, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
for (Arena arena : W.arenaList) {
|
||||||
|
if (arena.gameState == ArenaState.WAITING) {
|
||||||
|
if (arena.playersInArena.size() >= arena.minPlayers) {
|
||||||
|
arena.gameState = ArenaState.STARTING;
|
||||||
|
arena.timer = arena.timeInLobbyUntilStart;
|
||||||
|
ArenaHandler.sendFMessage(arena,
|
||||||
|
ConfigC.normal_lobbyArenaIsStarting, true,
|
||||||
|
"1-" + arena.timeInLobbyUntilStart);
|
||||||
|
}
|
||||||
|
} else if (arena.gameState == ArenaState.STARTING) {
|
||||||
|
if (arena.timer > 0) {
|
||||||
|
arena.timer = arena.timer - 1;
|
||||||
|
if (arena.timer == 60) {
|
||||||
|
ArenaHandler.sendFMessage(arena,
|
||||||
|
ConfigC.normal_lobbyArenaIsStarting,
|
||||||
|
true, "1-60");
|
||||||
|
} else if (arena.timer == 30) {
|
||||||
|
ArenaHandler.sendFMessage(arena,
|
||||||
|
ConfigC.normal_lobbyArenaIsStarting,
|
||||||
|
true, "1-30");
|
||||||
|
} else if (arena.timer == 10) {
|
||||||
|
ArenaHandler.sendFMessage(arena,
|
||||||
|
ConfigC.normal_lobbyArenaIsStarting,
|
||||||
|
true, "1-10");
|
||||||
|
} else if (arena.timer == 5) {
|
||||||
|
ArenaHandler.sendFMessage(arena,
|
||||||
|
ConfigC.normal_lobbyArenaIsStarting,
|
||||||
|
true, "1-5");
|
||||||
|
} else if (arena.timer == 4) {
|
||||||
|
ArenaHandler.sendFMessage(arena,
|
||||||
|
ConfigC.normal_lobbyArenaIsStarting,
|
||||||
|
true, "1-4");
|
||||||
|
} else if (arena.timer == 3) {
|
||||||
|
ArenaHandler.sendFMessage(arena,
|
||||||
|
ConfigC.normal_lobbyArenaIsStarting,
|
||||||
|
true, "1-3");
|
||||||
|
} else if (arena.timer == 2) {
|
||||||
|
ArenaHandler.sendFMessage(arena,
|
||||||
|
ConfigC.normal_lobbyArenaIsStarting,
|
||||||
|
true, "1-2");
|
||||||
|
} else if (arena.timer == 1) {
|
||||||
|
ArenaHandler.sendFMessage(arena,
|
||||||
|
ConfigC.normal_lobbyArenaIsStarting,
|
||||||
|
true, "1-1");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
arena.gameState = ArenaState.INGAME;
|
||||||
|
arena.timer = arena.gameTime;
|
||||||
|
ArenaHandler.sendFMessage(arena,
|
||||||
|
ConfigC.normal_lobbyArenaStarted, true);
|
||||||
|
|
||||||
|
for (int i = arena.amountSeekersOnStart; i > 0; i = i - 1) {
|
||||||
|
Player seeker = arena.playersInArena
|
||||||
|
.get(W.random
|
||||||
|
.nextInt(arena.playersInArena
|
||||||
|
.size()));
|
||||||
|
ArenaHandler.sendFMessage(arena,
|
||||||
|
ConfigC.normal_ingameSeekerChoosen,
|
||||||
|
true, "seeker-" + seeker.getName());
|
||||||
|
arena.seekers.add(seeker);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Player arenaPlayer : arena.playersInArena) {
|
||||||
|
if (!arena.seekers.contains(arenaPlayer)) {
|
||||||
|
ItemStack block = arena.disguiseBlocks.get(W.random
|
||||||
|
.nextInt(arena.disguiseBlocks
|
||||||
|
.size()));
|
||||||
|
LinkedList<String> data = new LinkedList<String>();
|
||||||
|
data.add("blockID:" + block.getTypeId());
|
||||||
|
data.add("blockData:"
|
||||||
|
+ block.getDurability());
|
||||||
|
Disguise disguise = new Disguise(W.dcAPI
|
||||||
|
.newEntityID(), data,
|
||||||
|
DisguiseType.FallingBlock);
|
||||||
|
if (W.dcAPI.isDisguised(arenaPlayer)) {
|
||||||
|
W.dcAPI.changePlayerDisguise(
|
||||||
|
arenaPlayer, disguise);
|
||||||
|
} else {
|
||||||
|
W.dcAPI.disguisePlayer(arenaPlayer,
|
||||||
|
disguise);
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageM.sendFMessage(
|
||||||
|
arenaPlayer,
|
||||||
|
ConfigC.normal_ingameBlock,
|
||||||
|
true,
|
||||||
|
"block-"
|
||||||
|
+ block.getType()
|
||||||
|
.name()
|
||||||
|
.replaceAll("_", "")
|
||||||
|
.replaceAll(
|
||||||
|
"BLOCK", "")
|
||||||
|
.toLowerCase()
|
||||||
|
+ ":"
|
||||||
|
+ block.getDurability());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 0, 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
|
@ -31,8 +31,8 @@ public class CMDcreate extends DefaultCMD {
|
|||||||
|
|
||||||
ArenaSerializable arena = new ArenaSerializable(
|
ArenaSerializable arena = new ArenaSerializable(
|
||||||
args[1], W.pos1.get(player),
|
args[1], W.pos1.get(player),
|
||||||
W.pos2.get(player), 12, 3, 1, 90, 20, 200,
|
W.pos2.get(player), 12, 3, 1, 90, 20, 300,
|
||||||
null);
|
null, null, null, 0, null);
|
||||||
W.arenas.getFile().set(args[1], arena);
|
W.arenas.getFile().set(args[1], arena);
|
||||||
W.arenas.save();
|
W.arenas.save();
|
||||||
ArenaHandler.loadArenas();
|
ArenaHandler.loadArenas();
|
||||||
|
@ -38,12 +38,26 @@ public class CMDjoin extends DefaultCMD {
|
|||||||
for (Arena arena : W.arenaList) {
|
for (Arena arena : W.arenaList) {
|
||||||
if (arena.arenaName.equalsIgnoreCase(args[1])) {
|
if (arena.arenaName.equalsIgnoreCase(args[1])) {
|
||||||
found = true;
|
found = true;
|
||||||
|
if (arena.disguiseBlocks.isEmpty()) {
|
||||||
|
MessageM.sendFMessage(player,
|
||||||
|
ConfigC.error_joinNoBlocksSet, true);
|
||||||
|
} else {
|
||||||
arena.playersInArena.add(player);
|
arena.playersInArena.add(player);
|
||||||
ArenaHandler.sendFMessage(arena,
|
ArenaHandler.sendFMessage(arena,
|
||||||
ConfigC.normal_joinJoinedArena, true,
|
ConfigC.normal_joinJoinedArena,
|
||||||
"playername-" + player.getName(), "1-"
|
true,
|
||||||
+ arena.playersInArena.size(),
|
"playername-" + player.getName(),
|
||||||
|
"1-" + arena.playersInArena.size(),
|
||||||
"2-" + arena.maxPlayers);
|
"2-" + arena.maxPlayers);
|
||||||
|
if (arena.playersInArena.size() < arena.minPlayers) {
|
||||||
|
ArenaHandler
|
||||||
|
.sendFMessage(
|
||||||
|
arena,
|
||||||
|
ConfigC.warning_lobbyNeedAtleast,
|
||||||
|
true,
|
||||||
|
"1-" + arena.minPlayers);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -60,6 +60,17 @@ public enum ConfigC {
|
|||||||
W.messages),
|
W.messages),
|
||||||
normal_createCreatedArena ("%NCreated an arena with the name '%A%name%%N'.",
|
normal_createCreatedArena ("%NCreated an arena with the name '%A%name%%N'.",
|
||||||
W.messages),
|
W.messages),
|
||||||
|
normal_lobbyArenaIsStarting ("%NThe arena will start in %A%1%%N second(s)!",
|
||||||
|
W.messages),
|
||||||
|
normal_lobbyArenaStarted ("%NThe arena has been started! The seeker is comming to find you!",
|
||||||
|
W.messages),
|
||||||
|
normal_ingameSeekerChoosen ("%NPlayer %A%seeker%%N has been choosen as seeker!",
|
||||||
|
W.messages),
|
||||||
|
normal_ingameBlock ("%NYou're disguised as a(n) '%A%block%%N' block.",
|
||||||
|
W.messages),
|
||||||
|
|
||||||
|
warning_lobbyNeedAtleast ("%WYou need atleast %A%1%%W player(s) to start the game!",
|
||||||
|
W.messages),
|
||||||
|
|
||||||
error_noPermission ("%EYou don't have the permissions to do that!",
|
error_noPermission ("%EYou don't have the permissions to do that!",
|
||||||
W.messages),
|
W.messages),
|
||||||
@ -71,6 +82,8 @@ public enum ConfigC {
|
|||||||
error_noArena ("%ENo arena found with the name '%A%name%%E'.", W.messages),
|
error_noArena ("%ENo arena found with the name '%A%name%%E'.", W.messages),
|
||||||
error_onlyIngame ("%EThis is an only in-game command!", W.messages),
|
error_onlyIngame ("%EThis is an only in-game command!", W.messages),
|
||||||
error_joinAlreadyJoined ("%EYou've already joined an arena!", W.messages),
|
error_joinAlreadyJoined ("%EYou've already joined an arena!", W.messages),
|
||||||
|
error_joinNoBlocksSet ("%EThere are none blocks set for this arena. Notify the administrator.",
|
||||||
|
W.messages),
|
||||||
error_createSelectionFirst ("%EMake a selection first. Use the wand command: %A/"
|
error_createSelectionFirst ("%EMake a selection first. Use the wand command: %A/"
|
||||||
+ W.pluginName + " <wand|w>%E.",
|
+ W.pluginName + " <wand|w>%E.",
|
||||||
W.messages),
|
W.messages),
|
||||||
@ -79,7 +92,8 @@ public enum ConfigC {
|
|||||||
error_setTooHighNumber ("%EThat amount is too high! Max amount is: %A%max%%E.",
|
error_setTooHighNumber ("%EThat amount is too high! Max amount is: %A%max%%E.",
|
||||||
W.messages),
|
W.messages),
|
||||||
error_setTooLowNumber ("%EThat amount is too low! Minimal amount is: %A%min%%E.",
|
error_setTooLowNumber ("%EThat amount is too low! Minimal amount is: %A%min%%E.",
|
||||||
W.messages);
|
W.messages),
|
||||||
|
error_setNotABlock ("%EThat is not a block!", W.messages);
|
||||||
|
|
||||||
public Object value;
|
public Object value;
|
||||||
public ConfigM config;
|
public ConfigM config;
|
||||||
|
@ -2,9 +2,12 @@ package nl.Steffion.BlockHunt;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import pgDev.bukkit.DisguiseCraft.api.DisguiseCraftAPI;
|
||||||
|
|
||||||
import nl.Steffion.BlockHunt.Managers.ConfigM;
|
import nl.Steffion.BlockHunt.Managers.ConfigM;
|
||||||
import nl.Steffion.BlockHunt.Managers.MessageM;
|
import nl.Steffion.BlockHunt.Managers.MessageM;
|
||||||
import nl.Steffion.BlockHunt.Serializables.LocationSerializable;
|
import nl.Steffion.BlockHunt.Serializables.LocationSerializable;
|
||||||
@ -27,6 +30,8 @@ public class W {
|
|||||||
public static ConfigM messages = new ConfigM("messages", "");
|
public static ConfigM messages = new ConfigM("messages", "");
|
||||||
public static ConfigM arenas = new ConfigM("arenas", "");
|
public static ConfigM arenas = new ConfigM("arenas", "");
|
||||||
public static ArrayList<Arena> arenaList = new ArrayList<Arena>();
|
public static ArrayList<Arena> arenaList = new ArrayList<Arena>();
|
||||||
|
public static Random random = new Random();
|
||||||
|
public static DisguiseCraftAPI dcAPI;
|
||||||
|
|
||||||
public static void newFiles() {
|
public static void newFiles() {
|
||||||
ConfigM.setDefaults();
|
ConfigM.setDefaults();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user