use of au.com.mineauz.minigames.minigame.modules.TreasureHuntModule in project Minigames by AddstarMC.
the class TreasureHuntMechanic method timerExpire.
@EventHandler
private void timerExpire(TimerExpireEvent event) {
if (event.getMinigame().getType() != MinigameType.GLOBAL && !event.getMinigame().getMechanicName().equals(getMechanic()))
return;
Minigame mgm = event.getMinigame();
TreasureHuntModule thm = TreasureHuntModule.getMinigameModule(mgm);
if (thm.hasTreasureLocation()) {
mgm.setMinigameTimer(new MinigameTimer(mgm, thm.getTreasureWaitTime()));
Location old = thm.getTreasureLocation();
removeTreasure(mgm);
if (!thm.isTreasureFound()) {
MinigameUtils.broadcast(MinigameUtils.formStr("minigame.treasurehunt.plyDespawn", mgm.getName(true)) + "\n" + ChatColor.GRAY + MinigameUtils.formStr("minigame.treasurehunt.plyDespawnCoords", old.getBlockX(), old.getBlockY(), old.getBlockZ()), mgm, "minigame.treasure.announce");
}
thm.setTreasureFound(false);
} else {
spawnTreasure(mgm);
}
}
use of au.com.mineauz.minigames.minigame.modules.TreasureHuntModule in project Minigames by AddstarMC.
the class TreasureHuntMechanic method interactEvent.
@EventHandler
private void interactEvent(PlayerInteractEvent event) {
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
Block cblock = event.getClickedBlock();
if (cblock.getState() instanceof Chest && !event.isCancelled()) {
for (Minigame minigame : mdata.getAllMinigames().values()) {
if (minigame.getType() == MinigameType.GLOBAL && minigame.getMechanicName().equalsIgnoreCase(getMechanic()) && minigame.getMinigameTimer() != null) {
TreasureHuntModule thm = TreasureHuntModule.getMinigameModule(minigame);
if (!thm.isTreasureFound() && thm.hasTreasureLocation()) {
int x1 = thm.getTreasureLocation().getBlockX();
int x2 = cblock.getLocation().getBlockX();
int y1 = thm.getTreasureLocation().getBlockY();
int y2 = cblock.getLocation().getBlockY();
int z1 = thm.getTreasureLocation().getBlockZ();
int z2 = cblock.getLocation().getBlockZ();
if (x2 == x1 && y2 == y1 && z2 == z1) {
MinigameUtils.broadcast(MinigameUtils.formStr("minigame.treasurehunt.plyFound", event.getPlayer().getDisplayName(), minigame.getName(true)), minigame, "minigame.treasure.announce");
event.setCancelled(true);
Chest chest = (Chest) cblock.getState();
event.getPlayer().openInventory(chest.getInventory());
thm.setTreasureFound(true);
minigame.getMinigameTimer().setTimeLeft(300);
}
}
}
}
}
}
}
use of au.com.mineauz.minigames.minigame.modules.TreasureHuntModule in project Minigames by AddstarMC.
the class TreasureHuntMechanic method timerTick.
@EventHandler
private void timerTick(MinigameTimerTickEvent event) {
if (event.getMinigame().getType() != MinigameType.GLOBAL && !event.getMinigame().getMechanicName().equals(getMechanic()))
return;
Minigame mgm = event.getMinigame();
TreasureHuntModule thm = TreasureHuntModule.getMinigameModule(mgm);
if (!thm.hasTreasureLocation() || thm.isTreasureFound())
return;
int time = event.getTimeLeft();
int hintTime1 = event.getMinigame().getTimer() - 1;
int hintTime2 = (int) (event.getMinigame().getTimer() * 0.75);
int hintTime3 = (int) (event.getMinigame().getTimer() * 0.50);
int hintTime4 = (int) (event.getMinigame().getTimer() * 0.25);
Location block = thm.getTreasureLocation();
if (time == hintTime1) {
double dfcx = 0.0;
double dfcz = 0.0;
String xdir = null;
String zdir = null;
if (mgm.getStartLocations().get(0).getX() > block.getX()) {
dfcx = mgm.getStartLocations().get(0).getX() - block.getX();
xdir = MinigameUtils.getLang("minigame.treasurehunt.hint1.west");
} else {
dfcx = block.getX() - mgm.getStartLocations().get(0).getX();
xdir = MinigameUtils.getLang("minigame.treasurehunt.hint1.east");
}
if (mgm.getStartLocations().get(0).getZ() > block.getZ()) {
dfcz = mgm.getStartLocations().get(0).getZ() - block.getZ();
zdir = MinigameUtils.getLang("minigame.treasurehunt.hint1.north");
} else {
dfcz = block.getZ() - mgm.getStartLocations().get(0).getZ();
zdir = MinigameUtils.getLang("minigame.treasurehunt.hint1.south");
}
String dir = null;
if (dfcz > dfcx) {
if (dfcx > dfcz / 2) {
dir = zdir + xdir.toLowerCase();
} else {
dir = zdir;
}
} else {
if (dfcz > dfcx / 2) {
dir = zdir + xdir.toLowerCase();
} else {
dir = xdir;
}
}
String hint = MinigameUtils.formStr("minigame.treasurehunt.hint1.hint", mgm.getName(true), dir, thm.getLocation());
MinigameUtils.broadcast(hint, mgm, "minigame.treasure.announce");
thm.addHint(ChatColor.GRAY + hint);
} else if (time == hintTime2) {
block.setY(block.getY() - 1);
String hint = MinigameUtils.formStr("minigame.treasurehunt.hint2", mgm.getName(true), block.getBlock().getType().toString().toLowerCase().replace("_", " "));
MinigameUtils.broadcast(hint, mgm, "minigame.treasure.announce");
thm.addHint(ChatColor.GRAY + hint);
block.setY(block.getY() + 1);
} else if (time == hintTime3) {
int height = block.getBlockY();
String dir;
int dist;
if (height > 62) {
dist = height - 62;
dir = MinigameUtils.getLang("minigame.treasurehunt.hint3.above");
} else {
dist = 62 - height;
dir = MinigameUtils.getLang("minigame.treasurehunt.hint3.below");
}
String hint = MinigameUtils.formStr("minigame.treasurehunt.hint3.hint", mgm.getName(true), dist, dir);
MinigameUtils.broadcast(hint, mgm, "minigame.treasure.announce");
thm.addHint(ChatColor.GRAY + hint);
} else if (time == hintTime4) {
String hint = MinigameUtils.formStr("minigame.treasurehunt.hint4", mgm.getName(true), block.getBlock().getBiome().toString().toLowerCase().replace("_", " "));
MinigameUtils.broadcast(hint, mgm, "minigame.treasure.announce");
thm.addHint(ChatColor.GRAY + hint);
}
}
use of au.com.mineauz.minigames.minigame.modules.TreasureHuntModule in project Minigames by AddstarMC.
the class TreasureHuntMechanic method removeTreasure.
public static void removeTreasure(Minigame minigame) {
TreasureHuntModule thm = TreasureHuntModule.getMinigameModule(minigame);
thm.clearHints();
if (thm.hasTreasureLocation()) {
Location old = thm.getTreasureLocation();
boolean loaded = false;
Chunk c = null;
if (!old.getWorld().isChunkInUse(old.getChunk().getX(), old.getChunk().getZ())) {
old.getChunk().load();
loaded = true;
c = old.getChunk();
}
if (old.getBlock().getState() instanceof Chest) {
Chest chest = (Chest) old.getBlock().getState();
chest.getInventory().clear();
}
old.getBlock().setType(Material.AIR);
if (loaded && !c.getWorld().isChunkInUse(c.getX(), c.getZ())) {
c.unload();
}
thm.setTreasureLocation(null);
}
}
use of au.com.mineauz.minigames.minigame.modules.TreasureHuntModule in project Minigames by AddstarMC.
the class SetLocationCommand method onCommand.
@Override
public boolean onCommand(CommandSender sender, Minigame minigame, String label, String[] args) {
if (args != null) {
String location = "";
for (int i = 0; i < args.length; i++) {
location += args[i];
if (i != args.length - 1) {
location += " ";
}
}
TreasureHuntModule thm = TreasureHuntModule.getMinigameModule(minigame);
thm.setLocation(location);
sender.sendMessage(ChatColor.GRAY + "The location name for " + minigame + " has been set to " + location);
return true;
}
return false;
}
Aggregations