Added way to set DisguiseBlocks and let it choose randomly.

This commit is contained in:
Steffion 2013-08-04 15:05:23 +02:00
parent ea8eed6010
commit f4986f28b2
4 changed files with 121 additions and 4 deletions

View File

@ -1,5 +1,7 @@
package nl.Steffion.BlockHunt; package nl.Steffion.BlockHunt;
import java.util.ArrayList;
import nl.Steffion.BlockHunt.Arena.ArenaType; import nl.Steffion.BlockHunt.Arena.ArenaType;
import nl.Steffion.BlockHunt.Managers.ConfigC; import nl.Steffion.BlockHunt.Managers.ConfigC;
import nl.Steffion.BlockHunt.Managers.MessageM; import nl.Steffion.BlockHunt.Managers.MessageM;
@ -30,7 +32,7 @@ public class InventoryHandler {
Inventory panel = Bukkit Inventory panel = Bukkit
.createInventory( .createInventory(
null, null,
27, 54,
MessageM.replaceAll("\u00A7r%N&lSettings of: %A" MessageM.replaceAll("\u00A7r%N&lSettings of: %A"
+ shorten)); + shorten));
@ -79,6 +81,13 @@ public class InventoryHandler {
arena.gameTime); arena.gameTime);
ItemStack gameTime_DOWN = new ItemStack(Material.GOLD_NUGGET, 1); ItemStack gameTime_DOWN = new ItemStack(Material.GOLD_NUGGET, 1);
ItemStack disguiseBlocks_NOTE = new ItemStack(Material.BOOK, 1);
ItemMeta disguiseBlocks_NOTE_IM = disguiseBlocks_NOTE.getItemMeta();
disguiseBlocks_NOTE_IM.setDisplayName(MessageM
.replaceAll("%NSet the %AdisguiseBlocks%N."));
disguiseBlocks_NOTE.setItemMeta(disguiseBlocks_NOTE_IM);
panel.setItem(37, disguiseBlocks_NOTE);
// //
updownButton(panel, arena, ArenaType.maxPlayers, "maxPlayers", "1", updownButton(panel, arena, ArenaType.maxPlayers, "maxPlayers", "1",
@ -158,4 +167,25 @@ public class InventoryHandler {
panel.setItem(button, BUTTON); panel.setItem(button, BUTTON);
panel.setItem(down, DOWN); panel.setItem(down, DOWN);
} }
public static void openDisguiseBlocks(Arena arena, Player player) {
String arenaname = arena.arenaName;
Inventory panel = Bukkit.createInventory(null, 36,
MessageM.replaceAll("\u00A7r%N&lDisguiseBlocks"));
ItemStack arenaNameNote = new ItemStack(Material.PAPER, 1);
ItemMeta arenaNameNote_IM = arenaNameNote.getItemMeta();
arenaNameNote_IM.setDisplayName(MessageM
.replaceAll("%NDisguiseBlocks of arena: %A" + arenaname));
ArrayList<String> lores = new ArrayList<String>();
lores.add(MessageM
.replaceAll("%NPlace the DisguiseBlocks inside this inventory."));
arenaNameNote_IM.setLore(lores);
arenaNameNote.setItemMeta(arenaNameNote_IM);
panel.setItem(0, arenaNameNote);
for (int i = arena.disguiseBlocks.size(); i > 0; i = i - 1) {
panel.setItem(i, arena.disguiseBlocks.get(i - 1));
}
player.openInventory(panel);
}
} }

View File

@ -27,6 +27,15 @@ public class OnInventoryClickEvent implements Listener {
Inventory inv = event.getInventory(); Inventory inv = event.getInventory();
if (inv.getType().equals(InventoryType.CHEST)) { if (inv.getType().equals(InventoryType.CHEST)) {
if (inv.getName().startsWith("\u00A7r")) { if (inv.getName().startsWith("\u00A7r")) {
if (inv.getName().contains("DisguiseBlocks")) {
if (!event.getCurrentItem().getType().isBlock()) {
event.setCancelled(true);
MessageM.sendFMessage(player,
ConfigC.error_setNotABlock, true);
}
return;
}
event.setCancelled(true); event.setCancelled(true);
ItemStack item = event.getCurrentItem(); ItemStack item = event.getCurrentItem();
String arenaname = inv String arenaname = inv
@ -85,6 +94,12 @@ public class OnInventoryClickEvent implements Listener {
save(arena); save(arena);
InventoryHandler.openPanel(player, arena.arenaName); InventoryHandler.openPanel(player, arena.arenaName);
} else if (item.getType().equals(Material.BOOK)) {
if (item.getItemMeta().getDisplayName()
.contains("disguiseBlocks")) {
InventoryHandler.openDisguiseBlocks(arena, player);
}
} }
} }
} }

View File

@ -0,0 +1,63 @@
package nl.Steffion.BlockHunt.Listeners;
import java.util.ArrayList;
import nl.Steffion.BlockHunt.Arena;
import nl.Steffion.BlockHunt.ArenaHandler;
import nl.Steffion.BlockHunt.W;
import nl.Steffion.BlockHunt.Managers.MessageM;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
public class OnInventoryCloseEvent implements Listener {
@EventHandler(priority = EventPriority.NORMAL)
public void onInventoryCloseEvent(InventoryCloseEvent event) {
Inventory inv = event.getInventory();
if (inv.getType().equals(InventoryType.CHEST)) {
if (inv.getName().startsWith("\u00A7r")) {
if (inv.getName().contains("DisguiseBlocks")) {
String arenaname = inv
.getItem(0)
.getItemMeta()
.getDisplayName()
.replaceAll(
MessageM.replaceAll("%NDisguiseBlocks of arena: %A"),
"");
Arena arena = null;
for (Arena arena2 : W.arenaList) {
if (arena2.arenaName.equalsIgnoreCase(arenaname)) {
arena = arena2;
}
}
ArrayList<ItemStack> blocks = new ArrayList<ItemStack>();
for (ItemStack item : inv.getContents()) {
if (item != null) {
if (!item.getType().equals(Material.PAPER)) {
blocks.add(item);
}
}
}
arena.disguiseBlocks = blocks;
save(arena);
}
}
}
}
public void save(Arena arena) {
W.arenas.getFile().set(arena.arenaName, arena);
W.arenas.save();
ArenaHandler.loadArenas();
}
}

View File

@ -11,6 +11,7 @@ import org.bukkit.Bukkit;
import org.bukkit.configuration.serialization.ConfigurationSerializable; import org.bukkit.configuration.serialization.ConfigurationSerializable;
import org.bukkit.configuration.serialization.SerializableAs; import org.bukkit.configuration.serialization.SerializableAs;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
@SerializableAs("Arena") @SerializableAs("Arena")
public class ArenaSerializable extends Arena implements public class ArenaSerializable extends Arena implements
@ -18,10 +19,13 @@ public class ArenaSerializable extends Arena implements
public ArenaSerializable (String arenaName, LocationSerializable pos1, public ArenaSerializable (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) {
super(arenaName, pos1, pos2, maxPlayers, minPlayers, super(arenaName, pos1, pos2, maxPlayers, minPlayers,
amountSeekersOnStart, timeInLobbyUntilStart, waitingTimeSeeker, amountSeekersOnStart, timeInLobbyUntilStart, waitingTimeSeeker,
gameTime, playersInArena); gameTime, disguiseBlocks, playersInArena, gameState, timer,
seekers);
} }
@Override @Override
@ -36,9 +40,11 @@ public class ArenaSerializable extends Arena implements
map.put("timeInLobbyUntilStart", timeInLobbyUntilStart); map.put("timeInLobbyUntilStart", timeInLobbyUntilStart);
map.put("waitingTimeSeeker", waitingTimeSeeker); map.put("waitingTimeSeeker", waitingTimeSeeker);
map.put("gameTime", gameTime); map.put("gameTime", gameTime);
map.put("disguiseBlocks", disguiseBlocks);
return map; return map;
} }
@SuppressWarnings("unchecked")
public static ArenaSerializable deserialize(Map<String, Object> map) { public static ArenaSerializable deserialize(Map<String, Object> map) {
LocationSerializable loc = new LocationSerializable( LocationSerializable loc = new LocationSerializable(
Bukkit.getWorld("world"), 0, 0, 0, 0, 0); Bukkit.getWorld("world"), 0, 0, 0, 0, 0);
@ -50,6 +56,9 @@ public class ArenaSerializable extends Arena implements
"amountSeekersOnStart", 1), (Integer) M.g(map, "amountSeekersOnStart", 1), (Integer) M.g(map,
"timeInLobbyUntilStart", 90), (Integer) M.g(map, "timeInLobbyUntilStart", 90), (Integer) M.g(map,
"waitingTimeSeeker", 20), (Integer) M.g(map, "waitingTimeSeeker", 20), (Integer) M.g(map,
"gameTime", 200), new ArrayList<Player>()); "gameTime", 200), (ArrayList<ItemStack>) M.g(map,
"disguiseBlocks", new ArrayList<ItemStack>()),
new ArrayList<Player>(), ArenaState.WAITING, 0,
new ArrayList<Player>());
} }
} }