mirror of
https://github.com/taoneill/war.git
synced 2024-11-23 18:55:28 +01:00
Fixing merge conflicts with pull request from @Superyoshi. Mostly untested. Isolated Spout code behind checks for spout so War doesn't completely fall over if Spout isn't available on the server.
This commit is contained in:
commit
bd872be244
@ -9,5 +9,6 @@
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
|
||||
<classpathentry kind="lib" path="C:/dev/war/war/lib/mockito-all-1.8.5.jar"/>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/Permissions"/>
|
||||
<classpathentry kind="lib" path="C:/dev/war/war/lib/SpoutPluginAPI.jar"/>
|
||||
<classpathentry kind="output" path="target/classes"/>
|
||||
</classpath>
|
||||
|
@ -22,6 +22,7 @@ import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.PluginDescriptionFile;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.getspout.spoutapi.player.SpoutPlayer;
|
||||
|
||||
import com.nijiko.permissions.PermissionHandler;
|
||||
import com.nijikokun.bukkit.Permissions.Permissions;
|
||||
@ -71,6 +72,7 @@ public class War extends JavaPlugin {
|
||||
private boolean pvpInZonesOnly = false;
|
||||
private boolean disablePvpMessage = false;
|
||||
private boolean buildInZonesOnly = false;
|
||||
private boolean disableBuildMessage = false;
|
||||
private boolean tntInZonesOnly = false;
|
||||
private int maxZones = 12;
|
||||
private final List<String> deadlyAdjectives = new ArrayList<String>();
|
||||
@ -87,6 +89,7 @@ public class War extends JavaPlugin {
|
||||
private boolean defaultFriendlyFire = false;
|
||||
private boolean defaultAutoAssignOnly = false;
|
||||
private boolean defaultFlagPointsOnly = false;
|
||||
private boolean defaultFlagMustBeHome = true;
|
||||
private boolean defaultUnbreakableZoneBlocks = false;
|
||||
private boolean defaultNoCreatures = false;
|
||||
private boolean defaultGlassWalls = true;
|
||||
@ -94,6 +97,7 @@ public class War extends JavaPlugin {
|
||||
private boolean defaultInstaBreak = false;
|
||||
private boolean defaultNoDrops = false;
|
||||
private boolean defaultNoHunger = false;
|
||||
private int defaultRespawnTimer = 10;
|
||||
private int defaultSaturation = 10;
|
||||
private int defaultMinPlayers = 1; // By default, 1 player on 1 team is enough for unlocking the cant-exit-spawn guard
|
||||
private int defaultMinTeams = 1;
|
||||
@ -159,6 +163,12 @@ public class War extends JavaPlugin {
|
||||
pm.registerEvent(Event.Type.BLOCK_PLACE, this.blockListener, Priority.Normal, this);
|
||||
pm.registerEvent(Event.Type.BLOCK_DAMAGE, this.blockListener, Priority.Normal, this);
|
||||
pm.registerEvent(Event.Type.BLOCK_BREAK, this.blockListener, Priority.Normal, this);
|
||||
pm.registerEvent(Event.Type.BLOCK_PISTON_EXTEND, this.blockListener, Priority.Normal, this);
|
||||
pm.registerEvent(Event.Type.BLOCK_PISTON_RETRACT, this.blockListener, Priority.Normal, this);
|
||||
|
||||
if (this.isSpoutServer()) {
|
||||
pm.registerEvent(Event.Type.CUSTOM_EVENT, new WarSpoutListener(this), Priority.Low, this);
|
||||
}
|
||||
}
|
||||
|
||||
// Load files from disk or create them (using these defaults)
|
||||
@ -201,6 +211,14 @@ public class War extends JavaPlugin {
|
||||
* Cleans up war
|
||||
*/
|
||||
public void unloadWar() {
|
||||
if (this.isSpoutServer()) {
|
||||
for (Player player : getServer().getOnlinePlayers()) {
|
||||
SpoutPlayer sp = (SpoutPlayer) player;
|
||||
if (sp.isSpoutCraftEnabled())
|
||||
sp.getMainScreen().removeWidgets(this);
|
||||
}
|
||||
}
|
||||
|
||||
for (Warzone warzone : this.warzones) {
|
||||
warzone.unload();
|
||||
}
|
||||
@ -331,6 +349,10 @@ public class War extends JavaPlugin {
|
||||
warzone.setScoreCap(Integer.parseInt(namedParams.get("maxscore")));
|
||||
returnMessage.append(" maxscore set to " + warzone.getScoreCap() + ".");
|
||||
}
|
||||
if (namedParams.containsKey("respawntimer")) {
|
||||
warzone.setRespawnTimer(Integer.parseInt(namedParams.get("respawntimer")));
|
||||
returnMessage.append(" respawntimer set to " + warzone.getRespawnTimer() + ".");
|
||||
}
|
||||
if (namedParams.containsKey("ff")) {
|
||||
String onOff = namedParams.get("ff");
|
||||
warzone.setFriendlyFire(onOff.equals("on") || onOff.equals("true"));
|
||||
@ -346,6 +368,11 @@ public class War extends JavaPlugin {
|
||||
warzone.setFlagPointsOnly(onOff.equals("on") || onOff.equals("true"));
|
||||
returnMessage.append(" flagpointsonly set to " + String.valueOf(warzone.isFlagPointsOnly()) + ".");
|
||||
}
|
||||
if (namedParams.containsKey("flagmustbehome")) {
|
||||
String onOff = namedParams.get("flagmustbehome");
|
||||
warzone.setFlagMustBeHome(onOff.equals("on") || onOff.equals("true"));
|
||||
returnMessage.append(" flagmustbehome set to " + String.valueOf(warzone.isFlagMustBeHome()) + ".");
|
||||
}
|
||||
if (namedParams.containsKey("blockheads")) {
|
||||
String onOff = namedParams.get("blockheads");
|
||||
warzone.setBlockHeads(onOff.equals("on") || onOff.equals("true"));
|
||||
@ -472,7 +499,6 @@ public class War extends JavaPlugin {
|
||||
if (loadoutName.equals("default")) {
|
||||
returnMessage.append(" Can't remove default loadout.");
|
||||
} else {
|
||||
HashMap<Integer, ItemStack> extraLoadout = warzone.getExtraLoadouts().get(loadoutName);
|
||||
if (warzone.getExtraLoadouts().keySet().contains(loadoutName)) {
|
||||
warzone.getExtraLoadouts().remove(loadoutName);
|
||||
returnMessage.append(" " + loadoutName + " loadout removed.");
|
||||
@ -507,13 +533,18 @@ public class War extends JavaPlugin {
|
||||
if (namedParams.containsKey("pvpinzonesonly")) {
|
||||
String onOff = namedParams.get("pvpinzonesonly");
|
||||
this.setPvpInZonesOnly(onOff.equals("on") || onOff.equals("true"));
|
||||
returnMessage.append(" flagpointsonly set to " + String.valueOf(war.isDefaultFlagPointsOnly()) + ".");
|
||||
returnMessage.append(" pvpinzonesonly set to " + String.valueOf(war.isPvpInZonesOnly()) + ".");
|
||||
}
|
||||
if (namedParams.containsKey("disablepvpmessage")) {
|
||||
String onOff = namedParams.get("disablepvpmessage");
|
||||
this.setDisablePvpMessage(onOff.equals("on") || onOff.equals("true"));
|
||||
returnMessage.append(" disablepvpmessage set to " + String.valueOf(war.isDisablePvpMessage()) + ".");
|
||||
}
|
||||
if (namedParams.containsKey("disablebuildmessage")) {
|
||||
String onOff = namedParams.get("disablebuildmessage");
|
||||
this.setDisableBuildMessage(onOff.equals("on") || onOff.equals("true"));
|
||||
returnMessage.append(" disablebuildmessage set to " + String.valueOf(war.isDisableBuildMessage()) + ".");
|
||||
}
|
||||
if (namedParams.containsKey("buildinzonesonly")) {
|
||||
String onOff = namedParams.get("buildinzonesonly");
|
||||
this.setBuildInZonesOnly(onOff.equals("on") || onOff.equals("true"));
|
||||
@ -545,6 +576,10 @@ public class War extends JavaPlugin {
|
||||
this.setDefaultScoreCap(Integer.parseInt(namedParams.get("maxscore")));
|
||||
returnMessage.append(" maxscore set to " + war.getDefaultScoreCap() + ".");
|
||||
}
|
||||
if (namedParams.containsKey("respawntimer")) {
|
||||
this.setDefaultRespawnTimer(Integer.parseInt(namedParams.get("respawntimer")));
|
||||
returnMessage.append(" respawntimer set to " + war.getDefaultRespawnTimer() + ".");
|
||||
}
|
||||
if (namedParams.containsKey("ff")) {
|
||||
String onOff = namedParams.get("ff");
|
||||
this.setDefaultFriendlyFire(onOff.equals("on") || onOff.equals("true"));
|
||||
@ -560,6 +595,11 @@ public class War extends JavaPlugin {
|
||||
this.setDefaultFlagPointsOnly(onOff.equals("on") || onOff.equals("true"));
|
||||
returnMessage.append(" flagpointsonly set to " + String.valueOf(war.isDefaultFlagPointsOnly()) + ".");
|
||||
}
|
||||
if (namedParams.containsKey("flagmustbehome")) {
|
||||
String onOff = namedParams.get("flagmustbehome");
|
||||
this.setDefaultFlagMustBeHome(onOff.equals("on") || onOff.equals("true"));
|
||||
returnMessage.append(" flagmustbehome set to " + String.valueOf(war.isDefaultFlagMustBeHome()) + ".");
|
||||
}
|
||||
if (namedParams.containsKey("blockheads")) {
|
||||
String onOff = namedParams.get("blockheads");
|
||||
this.setDefaultBlockHeads(onOff.equals("on") || onOff.equals("true"));
|
||||
@ -677,7 +717,6 @@ public class War extends JavaPlugin {
|
||||
if (loadoutName.equals("default")) {
|
||||
returnMessage.append(" Can't remove default loadout.");
|
||||
} else {
|
||||
HashMap<Integer, ItemStack> extraLoadout = this.getDefaultExtraLoadouts().get(loadoutName);
|
||||
if (this.getDefaultExtraLoadouts().keySet().contains(loadoutName)) {
|
||||
this.getDefaultExtraLoadouts().remove(loadoutName);
|
||||
returnMessage.append(" " + loadoutName + " loadout removed.");
|
||||
@ -715,6 +754,7 @@ public class War extends JavaPlugin {
|
||||
+ " ff:" + color + String.valueOf(zone.getFriendlyFire()) + normal
|
||||
+ " autoassign:" + color + String.valueOf(zone.isAutoAssignOnly()) + normal
|
||||
+ " flagpointsonly:" + color + String.valueOf(zone.isFlagPointsOnly()) + normal
|
||||
+ " flagmustbehome:" + color + String.valueOf(zone.isFlagMustBeHome()) + normal
|
||||
+ " blockheads:" + color + String.valueOf(zone.isBlockHeads()) + normal
|
||||
+ " spawnstyle:" + color + zone.getSpawnStyle() + normal
|
||||
+ " flagreturn:" + color + zone.getFlagReturn() + normal
|
||||
@ -749,6 +789,7 @@ public class War extends JavaPlugin {
|
||||
return "War config -"
|
||||
+ " pvpinzonesonly:" + global + String.valueOf(this.isPvpInZonesOnly()) + normal
|
||||
+ " disablepvpmessage:" + global + String.valueOf(this.isDisablePvpMessage()) + normal
|
||||
+ " disablebuildmessage:" + global + String.valueOf(this.isDisableBuildMessage()) + normal
|
||||
+ " buildinzonesonly:" + global + String.valueOf(this.isBuildInZonesOnly()) + normal
|
||||
+ " tntinzonesonly:" + global + String.valueOf(this.isTntInZonesOnly()) + normal
|
||||
+ " maxzones:" + global + this.getMaxZones() + normal
|
||||
@ -759,6 +800,7 @@ public class War extends JavaPlugin {
|
||||
+ " ff:" + color + String.valueOf(this.isDefaultFriendlyFire()) + normal
|
||||
+ " autoassign:" + color + String.valueOf(this.isDefaultAutoAssignOnly()) + normal
|
||||
+ " flagpointsonly:" + color + String.valueOf(this.isDefaultFlagPointsOnly()) + normal
|
||||
+ " flagmustbehome:" + color + String.valueOf(this.isDefaultFlagMustBeHome()) + normal
|
||||
+ " blockheads:" + color + String.valueOf(this.isDefaultBlockHeads()) + normal
|
||||
+ " spawnstyle:" + color + this.getDefaultSpawnStyle() + normal
|
||||
+ " flagreturn:" + color + this.getDefaultFlagReturn() + normal
|
||||
@ -1052,6 +1094,15 @@ public class War extends JavaPlugin {
|
||||
return this.logger;
|
||||
}
|
||||
|
||||
public boolean isSpoutServer() {
|
||||
try {
|
||||
Class.forName("org.getspout.spoutapi.player.SpoutPlayer");
|
||||
return true;
|
||||
} catch (ClassNotFoundException e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public Warzone zoneOfZoneWallAtProximity(Location location) {
|
||||
for (Warzone zone : this.warzones) {
|
||||
if (zone.getWorld() == location.getWorld() && zone.isNearWall(location)) {
|
||||
@ -1120,6 +1171,14 @@ public class War extends JavaPlugin {
|
||||
this.disablePvpMessage = disablePvpMessage;
|
||||
}
|
||||
|
||||
public boolean isDisableBuildMessage() {
|
||||
return this.disableBuildMessage;
|
||||
}
|
||||
|
||||
public void setDisableBuildMessage(boolean disableBuildMessage) {
|
||||
this.disableBuildMessage = disableBuildMessage;
|
||||
}
|
||||
|
||||
public boolean isBuildInZonesOnly() {
|
||||
return this.buildInZonesOnly;
|
||||
}
|
||||
@ -1264,6 +1323,14 @@ public class War extends JavaPlugin {
|
||||
return this.defaultFlagPointsOnly;
|
||||
}
|
||||
|
||||
public void setDefaultFlagMustBeHome(boolean defaultFlagMustBeHome) {
|
||||
this.defaultFlagMustBeHome = defaultFlagMustBeHome;
|
||||
}
|
||||
|
||||
public boolean isDefaultFlagMustBeHome() {
|
||||
return this.defaultFlagMustBeHome;
|
||||
}
|
||||
|
||||
public void setDefaultMinPlayers(int defaultMinPlayers) {
|
||||
this.defaultMinPlayers = defaultMinPlayers;
|
||||
}
|
||||
@ -1348,4 +1415,12 @@ public class War extends JavaPlugin {
|
||||
return maxZones;
|
||||
}
|
||||
|
||||
public void setDefaultRespawnTimer(int defaultRespawnTimer) {
|
||||
this.defaultRespawnTimer = defaultRespawnTimer;
|
||||
}
|
||||
|
||||
public int getDefaultRespawnTimer() {
|
||||
return defaultRespawnTimer;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -11,8 +11,11 @@ import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockDamageEvent;
|
||||
import org.bukkit.event.block.BlockListener;
|
||||
import org.bukkit.event.block.BlockPistonExtendEvent;
|
||||
import org.bukkit.event.block.BlockPistonRetractEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.getspout.spoutapi.player.SpoutPlayer;
|
||||
|
||||
import com.tommytony.war.FlagReturn;
|
||||
import com.tommytony.war.Monument;
|
||||
@ -86,7 +89,7 @@ public class WarBlockListener extends BlockListener {
|
||||
}
|
||||
|
||||
// buildInZonesOnly
|
||||
if (zone == null && War.war.isBuildInZonesOnly() && !War.war.canBuildOutsideZone(player)) {
|
||||
if (zone == null && War.war.isBuildInZonesOnly() && !War.war.canBuildOutsideZone(player) && !War.war.isDisableBuildMessage()) {
|
||||
War.war.badMsg(player, "You can only build inside warzones. Ask for the 'war.build' permission to build outside.");
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
@ -115,6 +118,33 @@ public class WarBlockListener extends BlockListener {
|
||||
}
|
||||
}
|
||||
|
||||
// Do not allow moving of block into or from important zones
|
||||
public void onBlockPistonExtend(BlockPistonExtendEvent event) {
|
||||
Warzone zone = Warzone.getZoneByLocation(event.getBlock().getLocation());
|
||||
if (zone!=null) {
|
||||
for (Block b : event.getBlocks()) {
|
||||
if (zone.isImportantBlock(b)) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (zone.isImportantBlock(event.getBlock().getRelative(event.getDirection(), event.getLength()+1))) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
public void onBlockPistonRetract(BlockPistonRetractEvent event) {
|
||||
Warzone zone = Warzone.getZoneByLocation(event.getBlock().getLocation());
|
||||
if (zone!=null) {
|
||||
Block b = event.getBlock().getRelative(event.getDirection(), 2);
|
||||
if (zone.isImportantBlock(b)) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see BlockListener.onBlockBreak()
|
||||
*/
|
||||
@ -207,6 +237,15 @@ public class WarBlockListener extends BlockListener {
|
||||
for (Team t : warzone.getTeams()) {
|
||||
t.teamcast(team.getKind().getColor() + player.getName() + ChatColor.WHITE + " stole team " + lostFlagTeam.getName() + "'s flag.");
|
||||
if (t.getName().equals(lostFlagTeam.getName())) {
|
||||
if (War.war.isSpoutServer()) {
|
||||
for (Player p : t.getPlayers()) {
|
||||
SpoutPlayer sp = (SpoutPlayer) p;
|
||||
if (sp.isSpoutCraftEnabled()) {
|
||||
String tn = team.getName();
|
||||
sp.sendNotification(tn.substring(0,1).toUpperCase()+tn.substring(1).toLowerCase()+" stole your Flag!","Stolen by "+player.getName(),lostFlagTeam.getKind().getMaterial(),lostFlagTeam.getKind().getData(),3000);
|
||||
}
|
||||
}
|
||||
}
|
||||
t.teamcast("Prevent " + team.getKind().getColor() + player.getName() + ChatColor.WHITE
|
||||
+ " from reaching team " + team.getName() + "'s " + spawnOrFlag + ".");
|
||||
}
|
||||
|
@ -22,14 +22,13 @@ import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||
import org.bukkit.event.entity.EntityCombustEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.EntityDeathEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
import org.bukkit.event.entity.EntityDeathEvent;
|
||||
import org.bukkit.event.entity.EntityExplodeEvent;
|
||||
import org.bukkit.event.entity.EntityListener;
|
||||
import org.bukkit.event.entity.EntityRegainHealthEvent;
|
||||
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
|
||||
import org.bukkit.event.entity.FoodLevelChangeEvent;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import com.tommytony.war.Team;
|
||||
@ -89,6 +88,15 @@ public class WarEntityListener extends EntityListener {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
// Make sure none of them are respawning
|
||||
} else if (defenderWarzone.isRespawning(d)) {
|
||||
War.war.badMsg(a, "The target is currently respawning!");
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
} else if (attackerWarzone.isRespawning(a)) {
|
||||
War.war.badMsg(a, "You can't attack while respawning!");
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!attackerWarzone.isPvpInZone()) {
|
||||
|
@ -25,6 +25,7 @@ import org.bukkit.event.player.PlayerToggleSneakEvent;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.PlayerInventory;
|
||||
import org.getspout.spoutapi.player.SpoutPlayer;
|
||||
|
||||
import com.tommytony.war.FlagReturn;
|
||||
import com.tommytony.war.LoadoutSelection;
|
||||
@ -430,11 +431,21 @@ public class WarPlayerListener extends PlayerListener {
|
||||
}
|
||||
}
|
||||
|
||||
if (!playerWarzone.isEnoughPlayers() && !playerTeam.getSpawnVolume().contains(playerLoc)) {
|
||||
if (!playerTeam.getSpawnVolume().contains(playerLoc)) {
|
||||
if (!playerWarzone.isEnoughPlayers()) {
|
||||
War.war.badMsg(player, "Can't leave spawn until there's a minimum of " + playerWarzone.getMinPlayers() +" player(s) on at least " + playerWarzone.getMinTeams() + " team(s).");
|
||||
event.setTo(playerTeam.getTeamSpawn());
|
||||
return;
|
||||
}
|
||||
if (playerWarzone.isRespawning(player)) {
|
||||
int rt = playerWarzone.getRespawnTimer();
|
||||
String isS = "s";
|
||||
if (rt==1) isS = "";
|
||||
War.war.badMsg(player, "Can't leave spawn for "+rt+" second"+isS+" after spawning!");
|
||||
event.setTo(playerTeam.getTeamSpawn());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Monuments
|
||||
if (playerTeam != null && playerWarzone.nearAnyOwnedMonument(playerLoc, playerTeam) && player.getHealth() < 20 && player.getHealth() > 0 // don't heal the dead
|
||||
@ -482,7 +493,7 @@ public class WarPlayerListener extends PlayerListener {
|
||||
}
|
||||
}
|
||||
|
||||
if (playerWarzone.isTeamFlagStolen(playerTeam)) {
|
||||
if (playerWarzone.isTeamFlagStolen(playerTeam) && playerWarzone.isFlagMustBeHome()) {
|
||||
War.war.badMsg(player, "You can't capture the enemy flag until your team's flag is returned.");
|
||||
} else {
|
||||
synchronized (playerWarzone) {
|
||||
@ -500,6 +511,15 @@ public class WarPlayerListener extends PlayerListener {
|
||||
victim.getFlagVolume().resetBlocks(); // bring back flag to team that lost it
|
||||
victim.initializeTeamFlag();
|
||||
for (Team t : playerWarzone.getTeams()) {
|
||||
if (War.war.isSpoutServer()) {
|
||||
for (Player p : t.getPlayers()) {
|
||||
SpoutPlayer sp = (SpoutPlayer) p;
|
||||
if (sp.isSpoutCraftEnabled()) {
|
||||
String tn = playerTeam.getName();
|
||||
sp.sendNotification(tn.substring(0,1).toUpperCase()+tn.substring(1).toLowerCase()+" captures Flag!","Capped by "+player.getName(),victim.getKind().getMaterial(),victim.getKind().getData(),3000);
|
||||
}
|
||||
}
|
||||
}
|
||||
t.teamcast(playerTeam.getKind().getColor() + player.getName() + ChatColor.WHITE
|
||||
+ " captured team " + victim.getName() + "'s flag. Team " + playerTeam.getName() + " scores one point.");
|
||||
}
|
||||
@ -545,7 +565,6 @@ public class WarPlayerListener extends PlayerListener {
|
||||
} else {
|
||||
War.war.badMsg(event.getPlayer(), "Can't change loadout after exiting the spawn.");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
130
war/src/main/java/bukkit/tommytony/war/WarSpoutListener.java
Normal file
130
war/src/main/java/bukkit/tommytony/war/WarSpoutListener.java
Normal file
@ -0,0 +1,130 @@
|
||||
package bukkit.tommytony.war;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.getspout.spoutapi.event.spout.SpoutCraftEnableEvent;
|
||||
import org.getspout.spoutapi.event.spout.SpoutListener;
|
||||
import org.getspout.spoutapi.gui.Color;
|
||||
import org.getspout.spoutapi.gui.GenericLabel;
|
||||
import org.getspout.spoutapi.gui.WidgetAnchor;
|
||||
import org.getspout.spoutapi.player.SpoutPlayer;
|
||||
|
||||
import com.tommytony.war.Team;
|
||||
import com.tommytony.war.Warzone;
|
||||
|
||||
public class WarSpoutListener extends SpoutListener {
|
||||
static Plugin plugin;
|
||||
|
||||
public WarSpoutListener(Plugin plugin) {
|
||||
WarSpoutListener.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSpoutCraftEnable(SpoutCraftEnableEvent event) {
|
||||
if(!event.getPlayer().isSpoutCraftEnabled()) {
|
||||
//event.getPlayer().sendMessage("PROTIP: Get Spout at getspout.org for real-time scores display!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public static void updateStats(Warzone zone) {
|
||||
List<GenericLabel> teamlines = new ArrayList<GenericLabel>();
|
||||
List<GenericLabel> playerlines = new ArrayList<GenericLabel>();
|
||||
List<GenericLabel> scorelines = new ArrayList<GenericLabel>();
|
||||
List<GenericLabel> lifelines = new ArrayList<GenericLabel>();
|
||||
int teammax = -15, playmax = -15, scoremax = -15;
|
||||
GenericLabel line;
|
||||
|
||||
// First, we collect all the team names
|
||||
int linecounter = 0;
|
||||
for (Team t : zone.getTeams()) {
|
||||
// team name
|
||||
line = new GenericLabel(t.getName());
|
||||
if (t.getPlayers().size()==0) line.setTextColor(new Color(100,100,100));
|
||||
else line.setTextColor(t.getKind().getSpoutColor());
|
||||
line.setTooltip("Warzone: "+zone.getName()).setAnchor(WidgetAnchor.TOP_LEFT);
|
||||
line.setAlign(WidgetAnchor.TOP_LEFT).setX(3).setY(3+linecounter*(GenericLabel.getStringHeight("O")+3)).setWidth(GenericLabel.getStringWidth(line.getText())).setHeight(GenericLabel.getStringHeight(line.getText()));
|
||||
teamlines.add(line);
|
||||
linecounter++;
|
||||
}
|
||||
// We need to find the longest name
|
||||
for (GenericLabel l : teamlines) {
|
||||
if (GenericLabel.getStringWidth(l.getText()) > teammax) teammax=GenericLabel.getStringWidth(l.getText());
|
||||
}
|
||||
|
||||
// Now for the players
|
||||
linecounter = 0;
|
||||
for (Team t : zone.getTeams()) {
|
||||
// player number
|
||||
line = new GenericLabel("Players: "+t.getPlayers().size());
|
||||
if (t.getPlayers().size()==0) line.setTextColor(new Color(100,100,100));
|
||||
line.setTooltip("Warzone: "+zone.getName()).setAnchor(WidgetAnchor.TOP_LEFT);
|
||||
line.setAlign(WidgetAnchor.TOP_LEFT).setX(3+teammax+15).setY(3+linecounter*(GenericLabel.getStringHeight("O")+3)).setWidth(GenericLabel.getStringWidth(line.getText())).setHeight(GenericLabel.getStringHeight(line.getText()));
|
||||
playerlines.add(line);
|
||||
linecounter++;
|
||||
}
|
||||
// Again, we need the longest entry
|
||||
for (GenericLabel l : playerlines) {
|
||||
if (GenericLabel.getStringWidth(l.getText()) > playmax) playmax=GenericLabel.getStringWidth(l.getText());
|
||||
}
|
||||
|
||||
// is there even a score cap (or is it just 1 point)?
|
||||
if (zone.getScoreCap()>1) {
|
||||
linecounter = 0;
|
||||
for (Team t : zone.getTeams()) {
|
||||
// scores
|
||||
line = new GenericLabel(t.getPoints()+"/"+zone.getScoreCap()+" points");
|
||||
if (t.getPlayers().size()==0) line.setTextColor(new Color(100,100,100));
|
||||
line.setTooltip("Warzone: "+zone.getName()).setAnchor(WidgetAnchor.TOP_LEFT);
|
||||
line.setAlign(WidgetAnchor.TOP_LEFT).setX(3+teammax+15+playmax+15).setY(3+linecounter*(GenericLabel.getStringHeight("O")+3)).setWidth(GenericLabel.getStringWidth(line.getText())).setHeight(GenericLabel.getStringHeight(line.getText()));
|
||||
scorelines.add(line);
|
||||
linecounter++;
|
||||
}
|
||||
// I bet you know what is done here!
|
||||
for (GenericLabel l : scorelines) {
|
||||
if (GenericLabel.getStringWidth(l.getText()) > scoremax) scoremax=GenericLabel.getStringWidth(l.getText());
|
||||
}
|
||||
}
|
||||
|
||||
// and finally, lives.
|
||||
if (zone.getLifePool()>1) {
|
||||
linecounter = 0;
|
||||
for (Team t : zone.getTeams()) {
|
||||
line = new GenericLabel(t.getRemainingLifes()+"/"+zone.getLifePool()+" lives");
|
||||
if (t.getPlayers().size()==0) line.setTextColor(new Color(100,100,100));
|
||||
line.setTooltip("Warzone: "+zone.getName()).setAnchor(WidgetAnchor.TOP_LEFT);
|
||||
line.setAlign(WidgetAnchor.TOP_LEFT).setX(3+teammax+15+playmax+15+scoremax+15).setY(3+linecounter*(GenericLabel.getStringHeight("O")+3)).setWidth(GenericLabel.getStringWidth(line.getText())).setHeight(GenericLabel.getStringHeight(line.getText()));
|
||||
scorelines.add(line);
|
||||
linecounter++;
|
||||
}
|
||||
}
|
||||
|
||||
// Now to print it to the Spout players!
|
||||
List<GenericLabel> lines = new ArrayList<GenericLabel>();
|
||||
for (GenericLabel l : teamlines) lines.add(l);
|
||||
for (GenericLabel l : playerlines) lines.add(l);
|
||||
for (GenericLabel l : scorelines) lines.add(l);
|
||||
for (GenericLabel l : lifelines) lines.add(l);
|
||||
for (Team team : zone.getTeams()) {
|
||||
for (Player player : team.getPlayers()) {
|
||||
SpoutPlayer sp = (SpoutPlayer) player;
|
||||
if (sp.isSpoutCraftEnabled()) {
|
||||
drawStats(sp, lines);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void drawStats(SpoutPlayer sp, List<GenericLabel> lines) {
|
||||
// remove old stats first
|
||||
removeStats(sp);
|
||||
for (GenericLabel l : lines) sp.getMainScreen().attachWidget(plugin,l.copy());
|
||||
}
|
||||
|
||||
public static void removeStats(SpoutPlayer sp) {
|
||||
sp.getMainScreen().removeWidgets(plugin);
|
||||
}
|
||||
}
|
@ -140,8 +140,8 @@ public class Monument {
|
||||
|
||||
public void setLocation(Location location) {
|
||||
Block locationBlock = this.warzone.getWorld().getBlockAt(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
||||
this.volume.setCornerOne(locationBlock.getFace(BlockFace.DOWN).getFace(BlockFace.EAST, 2).getFace(BlockFace.SOUTH, 2));
|
||||
this.volume.setCornerTwo(locationBlock.getFace(BlockFace.UP, 2).getFace(BlockFace.WEST, 2).getFace(BlockFace.NORTH, 2));
|
||||
this.volume.setCornerOne(locationBlock.getRelative(BlockFace.DOWN).getRelative(BlockFace.EAST, 2).getRelative(BlockFace.SOUTH, 2));
|
||||
this.volume.setCornerTwo(locationBlock.getRelative(BlockFace.UP, 2).getRelative(BlockFace.WEST, 2).getRelative(BlockFace.NORTH, 2));
|
||||
this.volume.saveBlocks();
|
||||
this.location = location;
|
||||
this.addMonumentBlocks();
|
||||
|
@ -2,7 +2,6 @@ package com.tommytony.war;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import net.minecraft.server.MobEffect;
|
||||
import net.minecraft.server.MobEffectList;
|
||||
@ -10,8 +9,6 @@ import net.minecraft.server.MobEffectList;
|
||||
import org.bukkit.craftbukkit.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import bukkit.tommytony.war.War;
|
||||
|
||||
public class PotionEffect {
|
||||
|
||||
private int id;
|
||||
|
@ -10,8 +10,8 @@ import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import bukkit.tommytony.war.War;
|
||||
import bukkit.tommytony.war.WarSpoutListener;
|
||||
|
||||
import com.tommytony.war.utils.SignHelper;
|
||||
import com.tommytony.war.volumes.Volume;
|
||||
@ -129,16 +129,16 @@ public class Team {
|
||||
// SMALL style
|
||||
if (yaw >= 0 && yaw < 90) {
|
||||
signData = 10;
|
||||
signBlock = this.warzone.getWorld().getBlockAt(x, y, z).getFace(BlockFace.NORTH).getFace(BlockFace.WEST);
|
||||
signBlock = this.warzone.getWorld().getBlockAt(x, y, z).getRelative(BlockFace.NORTH).getRelative(BlockFace.WEST);
|
||||
} else if (yaw >= 90 && yaw <= 180) {
|
||||
signData = 14;
|
||||
signBlock = this.warzone.getWorld().getBlockAt(x, y, z).getFace(BlockFace.NORTH).getFace(BlockFace.EAST);
|
||||
signBlock = this.warzone.getWorld().getBlockAt(x, y, z).getRelative(BlockFace.NORTH).getRelative(BlockFace.EAST);
|
||||
} else if (yaw >= 180 && yaw < 270) {
|
||||
signData = 2;
|
||||
signBlock = this.warzone.getWorld().getBlockAt(x, y, z).getFace(BlockFace.SOUTH).getFace(BlockFace.EAST);
|
||||
signBlock = this.warzone.getWorld().getBlockAt(x, y, z).getRelative(BlockFace.SOUTH).getRelative(BlockFace.EAST);
|
||||
} else if (yaw >= 270 && yaw <= 360) {
|
||||
signData = 6;
|
||||
signBlock = this.warzone.getWorld().getBlockAt(x, y, z).getFace(BlockFace.SOUTH).getFace(BlockFace.WEST);
|
||||
signBlock = this.warzone.getWorld().getBlockAt(x, y, z).getRelative(BlockFace.SOUTH).getRelative(BlockFace.WEST);
|
||||
}
|
||||
} else {
|
||||
// outer ring (FLAT or BIG)
|
||||
@ -169,7 +169,7 @@ public class Team {
|
||||
facing = BlockFace.NORTH_WEST;
|
||||
opposite = BlockFace.SOUTH_EAST;
|
||||
signData = 10;
|
||||
signBlock = this.warzone.getWorld().getBlockAt(x, y, z).getFace(BlockFace.NORTH, 2).getFace(BlockFace.WEST, 2);
|
||||
signBlock = this.warzone.getWorld().getBlockAt(x, y, z).getRelative(BlockFace.NORTH, 2).getRelative(BlockFace.WEST, 2);
|
||||
|
||||
if (this.warzone.getSpawnStyle().equals(TeamSpawnStyle.BIG)) {
|
||||
// rim
|
||||
@ -202,7 +202,7 @@ public class Team {
|
||||
facing = BlockFace.NORTH_EAST;
|
||||
opposite = BlockFace.SOUTH_WEST;
|
||||
signData = 14;
|
||||
signBlock = this.warzone.getWorld().getBlockAt(x, y, z).getFace(BlockFace.NORTH, 2).getFace(BlockFace.EAST, 2);
|
||||
signBlock = this.warzone.getWorld().getBlockAt(x, y, z).getRelative(BlockFace.NORTH, 2).getRelative(BlockFace.EAST, 2);
|
||||
if (this.warzone.getSpawnStyle().equals(TeamSpawnStyle.BIG)) {
|
||||
// rim
|
||||
this.setBlock(x + 1, y, z - 2, this.kind);
|
||||
@ -234,7 +234,7 @@ public class Team {
|
||||
facing = BlockFace.SOUTH_EAST;
|
||||
opposite = BlockFace.NORTH_WEST;
|
||||
signData = 2;
|
||||
signBlock = this.warzone.getWorld().getBlockAt(x, y, z).getFace(BlockFace.SOUTH, 2).getFace(BlockFace.EAST, 2);
|
||||
signBlock = this.warzone.getWorld().getBlockAt(x, y, z).getRelative(BlockFace.SOUTH, 2).getRelative(BlockFace.EAST, 2);
|
||||
if (this.warzone.getSpawnStyle().equals(TeamSpawnStyle.BIG)) {
|
||||
// rim
|
||||
this.setBlock(x + 2, y, z + 1, this.kind);
|
||||
@ -266,7 +266,7 @@ public class Team {
|
||||
facing = BlockFace.SOUTH_WEST;
|
||||
opposite = BlockFace.NORTH_EAST;
|
||||
signData = 6;
|
||||
signBlock = this.warzone.getWorld().getBlockAt(x, y, z).getFace(BlockFace.SOUTH, 2).getFace(BlockFace.WEST, 2);
|
||||
signBlock = this.warzone.getWorld().getBlockAt(x, y, z).getRelative(BlockFace.SOUTH, 2).getRelative(BlockFace.WEST, 2);
|
||||
if (this.warzone.getSpawnStyle().equals(TeamSpawnStyle.BIG)) {
|
||||
// rim
|
||||
this.setBlock(x - 1, y, z + 2, this.kind);
|
||||
@ -310,6 +310,10 @@ public class Team {
|
||||
|
||||
SignHelper.setToSign(War.war, signBlock, (byte) signData, lines);
|
||||
}
|
||||
|
||||
if (War.war.isSpoutServer()) {
|
||||
WarSpoutListener.updateStats(warzone);
|
||||
}
|
||||
}
|
||||
|
||||
private void setBlock(int x, int y, int z, TeamKind kind) {
|
||||
|
@ -2,6 +2,7 @@ package com.tommytony.war;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.getspout.spoutapi.gui.Color;
|
||||
|
||||
public enum TeamKind {
|
||||
WHITE ((byte) 0, Material.WOOL, ChatColor.WHITE),
|
||||
@ -48,6 +49,50 @@ public enum TeamKind {
|
||||
return this.color;
|
||||
}
|
||||
|
||||
/**
|
||||
* Don't call unless War.war.isSpoutServer() is true
|
||||
* @return
|
||||
*/
|
||||
public Color getSpoutColor() {
|
||||
int colorCode = (int)this.data;
|
||||
switch (colorCode) {
|
||||
case 0:
|
||||
return new Color(255,255,255);
|
||||
case 1:
|
||||
return new Color(255,128,0);
|
||||
case 2:
|
||||
return new Color(255,128,255);
|
||||
case 3:
|
||||
return new Color(0,0,255);
|
||||
case 4:
|
||||
return new Color(0,255,255);
|
||||
case 5:
|
||||
return new Color(0,255,0);
|
||||
case 6:
|
||||
return new Color(255,255,255);
|
||||
case 7:
|
||||
return new Color(100,100,100);
|
||||
case 8:
|
||||
return new Color(200,200,200);
|
||||
case 9:
|
||||
return new Color(128,255,255);
|
||||
case 10:
|
||||
return new Color(128,0,255);
|
||||
case 11:
|
||||
return new Color(0,0,128);
|
||||
case 12:
|
||||
return new Color(128,0,0);
|
||||
case 13:
|
||||
return new Color(0,128,0);
|
||||
case 14:
|
||||
return new Color(255,0,0);
|
||||
case 15:
|
||||
return new Color(0,0,0);
|
||||
default:
|
||||
return new Color(255,255,255);
|
||||
}
|
||||
}
|
||||
|
||||
public Material getMaterial() {
|
||||
return this.material;
|
||||
}
|
||||
|
@ -144,9 +144,10 @@ public class WarHub {
|
||||
}
|
||||
|
||||
Block locationBlock = this.location.getWorld().getBlockAt(this.location.getBlockX(), this.location.getBlockY(), this.location.getBlockZ());
|
||||
|
||||
this.volume.setWorld(this.location.getWorld());
|
||||
this.volume.setCornerOne(locationBlock.getFace(back).getFace(left, halfHubWidth).getFace(BlockFace.DOWN));
|
||||
this.volume.setCornerTwo(locationBlock.getFace(right, halfHubWidth).getFace(front, hubDepth).getFace(BlockFace.UP, hubHeigth));
|
||||
this.volume.setCornerOne(locationBlock.getRelative(back).getRelative(left, halfHubWidth).getRelative(BlockFace.DOWN));
|
||||
this.volume.setCornerTwo(locationBlock.getRelative(right, halfHubWidth).getRelative(front, hubDepth).getRelative(BlockFace.UP, hubHeigth));
|
||||
this.volume.saveBlocks();
|
||||
|
||||
// glass floor
|
||||
@ -155,26 +156,26 @@ public class WarHub {
|
||||
this.volume.setFaceMaterial(BlockFace.DOWN, Material.GLASS);
|
||||
|
||||
// draw gates
|
||||
Block currentGateBlock = BlockInfo.getBlock(this.location.getWorld(), this.volume.getCornerOne()).getFace(BlockFace.UP).getFace(front, hubDepth).getFace(right, 2);
|
||||
Block currentGateBlock = BlockInfo.getBlock(this.location.getWorld(), this.volume.getCornerOne()).getRelative(BlockFace.UP).getRelative(front, hubDepth).getRelative(right, 2);
|
||||
|
||||
for (Warzone zone : War.war.getWarzones()) { // gonna use the index to find it again
|
||||
if (!zone.isDisabled()) {
|
||||
this.zoneGateBlocks.put(zone.getName(), currentGateBlock);
|
||||
currentGateBlock.getFace(BlockFace.DOWN).setType(Material.GLOWSTONE);
|
||||
currentGateBlock.getFace(left).setType(Material.OBSIDIAN);
|
||||
currentGateBlock.getFace(right).getFace(BlockFace.UP).setType(Material.OBSIDIAN);
|
||||
currentGateBlock.getFace(left).getFace(BlockFace.UP).getFace(BlockFace.UP).setType(Material.OBSIDIAN);
|
||||
currentGateBlock.getFace(right).setType(Material.OBSIDIAN);
|
||||
currentGateBlock.getFace(left).getFace(BlockFace.UP).setType(Material.OBSIDIAN);
|
||||
currentGateBlock.getFace(right).getFace(BlockFace.UP).getFace(BlockFace.UP).setType(Material.OBSIDIAN);
|
||||
currentGateBlock.getFace(BlockFace.UP).getFace(BlockFace.UP).setType(Material.OBSIDIAN);
|
||||
currentGateBlock = currentGateBlock.getFace(right, 4);
|
||||
currentGateBlock.getRelative(BlockFace.DOWN).setType(Material.GLOWSTONE);
|
||||
currentGateBlock.getRelative(left).setType(Material.OBSIDIAN);
|
||||
currentGateBlock.getRelative(right).getRelative(BlockFace.UP).setType(Material.OBSIDIAN);
|
||||
currentGateBlock.getRelative(left).getRelative(BlockFace.UP).getRelative(BlockFace.UP).setType(Material.OBSIDIAN);
|
||||
currentGateBlock.getRelative(right).setType(Material.OBSIDIAN);
|
||||
currentGateBlock.getRelative(left).getRelative(BlockFace.UP).setType(Material.OBSIDIAN);
|
||||
currentGateBlock.getRelative(right).getRelative(BlockFace.UP).getRelative(BlockFace.UP).setType(Material.OBSIDIAN);
|
||||
currentGateBlock.getRelative(BlockFace.UP).getRelative(BlockFace.UP).setType(Material.OBSIDIAN);
|
||||
currentGateBlock = currentGateBlock.getRelative(right, 4);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// War hub sign
|
||||
Block signBlock = locationBlock.getFace(front);
|
||||
Block signBlock = locationBlock.getRelative(front);
|
||||
|
||||
String[] lines = new String[4];
|
||||
lines[0] = "War hub";
|
||||
@ -222,7 +223,7 @@ public class WarHub {
|
||||
|
||||
Block zoneGate = this.zoneGateBlocks.get(zone.getName());
|
||||
if (zoneGate != null) {
|
||||
Block block = zoneGate.getFace(left).getFace(back, 1);
|
||||
Block block = zoneGate.getRelative(left).getRelative(back, 1);
|
||||
if (block.getType() != Material.SIGN_POST) {
|
||||
block.setType(Material.SIGN_POST);
|
||||
}
|
||||
|
@ -7,9 +7,6 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import net.minecraft.server.MobEffect;
|
||||
import net.minecraft.server.MobEffectList;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
@ -18,14 +15,16 @@ import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.craftbukkit.entity.CraftItem;
|
||||
import org.bukkit.craftbukkit.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.PlayerInventory;
|
||||
import org.getspout.spoutapi.player.SpoutPlayer;
|
||||
|
||||
import bukkit.tommytony.war.War;
|
||||
import bukkit.tommytony.war.WarSpoutListener;
|
||||
|
||||
import com.tommytony.war.jobs.InitZoneJob;
|
||||
import com.tommytony.war.jobs.LoadoutResetJob;
|
||||
@ -45,6 +44,7 @@ public class Warzone {
|
||||
private final List<Monument> monuments = new ArrayList<Monument>();
|
||||
|
||||
private final List<String> authors = new ArrayList<String>();
|
||||
private final List<Player> respawn = new ArrayList<Player>();
|
||||
|
||||
private Location teleport;
|
||||
private boolean friendlyFire = false;
|
||||
@ -67,6 +67,7 @@ public class Warzone {
|
||||
private ZoneLobby lobby;
|
||||
private boolean autoAssignOnly = false;
|
||||
private boolean flagPointsOnly = false;
|
||||
private boolean flagMustBeHome = true;
|
||||
private boolean blockHeads = true;
|
||||
private boolean unbreakableZoneBlocks = false;
|
||||
private boolean disabled = false;
|
||||
@ -76,6 +77,7 @@ public class Warzone {
|
||||
private boolean instaBreak = false;
|
||||
private boolean noDrops = false;
|
||||
private boolean noHunger = false;
|
||||
private int respawnTimer = 10;
|
||||
private int saturation = 10;
|
||||
private int minPlayers = 1;
|
||||
private int minTeams = 1;
|
||||
@ -98,6 +100,7 @@ public class Warzone {
|
||||
this.reward = (HashMap<Integer, ItemStack>)War.war.getDefaultReward().clone();
|
||||
this.autoAssignOnly = War.war.isDefaultAutoAssignOnly();
|
||||
this.setFlagPointsOnly(War.war.isDefaultFlagPointsOnly());
|
||||
this.setFlagMustBeHome(War.war.isDefaultFlagMustBeHome());
|
||||
this.teamCap = War.war.getDefaultTeamCap();
|
||||
this.scoreCap = War.war.getDefaultScoreCap();
|
||||
this.monumentHeal = War.war.getDefaultMonumentHeal();
|
||||
@ -111,6 +114,7 @@ public class Warzone {
|
||||
this.setInstaBreak(War.war.isDefaultInstaBreak());
|
||||
this.setNoDrops(War.war.isDefaultNoDrops());
|
||||
this.setNoHunger(War.war.isDefaultNoHunger());
|
||||
this.setRespawnTimer(War.war.getDefaultRespawnTimer());
|
||||
this.setSaturation(War.war.getDefaultSaturation());
|
||||
this.setMinPlayers(War.war.getDefaultMinPlayers());
|
||||
this.setMinTeams(War.war.getDefaultMinTeams());
|
||||
@ -127,7 +131,7 @@ public class Warzone {
|
||||
// perfect match, return right away
|
||||
return warzone;
|
||||
} else if (warzone.getName().toLowerCase().startsWith(name.toLowerCase())) {
|
||||
// prehaps there's a perfect match in the remaining zones, let's take this one aside
|
||||
// perhaps there's a perfect match in the remaining zones, let's take this one aside
|
||||
bestGuess = warzone;
|
||||
}
|
||||
}
|
||||
@ -330,13 +334,21 @@ public class Warzone {
|
||||
event.setTo(team.getTeamSpawn());
|
||||
}
|
||||
|
||||
private void handleRespawn(Team team, Player player) {
|
||||
public boolean isRespawning(Player p) {
|
||||
return respawn.contains(p);
|
||||
}
|
||||
|
||||
private void handleRespawn(final Team team, final Player player) {
|
||||
// Fill hp
|
||||
player.setRemainingAir(300);
|
||||
player.setHealth(20);
|
||||
player.setFoodLevel(20);
|
||||
player.setSaturation(this.getSaturation());
|
||||
player.setExhaustion(0);
|
||||
player.setFireTicks(0); //this works fine here, why put it in LoudoutResetJob...? I'll keep it over there though
|
||||
|
||||
player.getInventory().clear();
|
||||
|
||||
if (player.getGameMode() == GameMode.CREATIVE) {
|
||||
player.setGameMode(GameMode.SURVIVAL);
|
||||
}
|
||||
@ -349,8 +361,27 @@ public class Warzone {
|
||||
this.getLoadoutSelections().get(player.getName()).setStillInSpawn(true);
|
||||
}
|
||||
|
||||
LoadoutResetJob job = new LoadoutResetJob(this, team, player);
|
||||
// Spout
|
||||
if (War.war.isSpoutServer()) {
|
||||
((SpoutPlayer) player).setTitle(team.getKind().getColor() + player.getName());
|
||||
}
|
||||
|
||||
// "Respawn" Timer - player will not be able to leave spawn for a few seconds
|
||||
final Warzone w = this;
|
||||
if (respawnTimer == 0) {
|
||||
LoadoutResetJob job = new LoadoutResetJob(w, team, player);
|
||||
War.war.getServer().getScheduler().scheduleSyncDelayedTask(War.war, job);
|
||||
} else {
|
||||
respawn.add(player);
|
||||
War.war.getServer().getScheduler().scheduleSyncDelayedTask(War.war, new Runnable() {
|
||||
public void run() {
|
||||
respawn.remove(player);
|
||||
// Getting the Loadout as visual cue
|
||||
LoadoutResetJob job = new LoadoutResetJob(w, team, player);
|
||||
War.war.getServer().getScheduler().scheduleSyncDelayedTask(War.war, job);
|
||||
}
|
||||
}, respawnTimer * 20L); // 20 ticks = 1 second
|
||||
}
|
||||
}
|
||||
|
||||
public void resetInventory(Team team, Player player, HashMap<Integer, ItemStack> loadout) {
|
||||
@ -923,6 +954,15 @@ public class Warzone {
|
||||
player.setFireTicks(0);
|
||||
player.setRemainingAir(300);
|
||||
|
||||
if (War.war.isSpoutServer()) {
|
||||
SpoutPlayer sp = (SpoutPlayer) player;
|
||||
if (sp.isSpoutCraftEnabled()) {
|
||||
WarSpoutListener.removeStats(sp);
|
||||
}
|
||||
sp.resetTitle();
|
||||
}
|
||||
|
||||
|
||||
War.war.msg(player, "Left the zone. Your inventory is being restored.");
|
||||
if (War.war.getWarHub() != null) {
|
||||
War.war.getWarHub().resetZoneSign(this);
|
||||
@ -957,6 +997,15 @@ public class Warzone {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isFlagBlock(Block block) {
|
||||
for (Team team : this.teams) {
|
||||
if (team.isTeamFlagBlock(block)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public Team getTeamForFlagBlock(Block block) {
|
||||
for (Team team : this.teams) {
|
||||
if (team.isTeamFlagBlock(block)) {
|
||||
@ -1166,6 +1215,14 @@ public class Warzone {
|
||||
return this.flagPointsOnly;
|
||||
}
|
||||
|
||||
public void setFlagMustBeHome(boolean flagMustBeHome) {
|
||||
this.flagMustBeHome = flagMustBeHome;
|
||||
}
|
||||
|
||||
public boolean isFlagMustBeHome() {
|
||||
return this.flagMustBeHome;
|
||||
}
|
||||
|
||||
public void setMinPlayers(int minPlayers) {
|
||||
this.minPlayers = minPlayers;
|
||||
}
|
||||
@ -1253,7 +1310,7 @@ public class Warzone {
|
||||
|
||||
public void equipPlayerLoadoutSelection(Player player, Team playerTeam) {
|
||||
LoadoutSelection selection = this.getLoadoutSelections().get(player.getName());
|
||||
if (selection != null) {
|
||||
if (selection != null && this.isRespawning(player)) {
|
||||
int currentIndex = selection.getSelectedIndex();
|
||||
if (currentIndex == 0) {
|
||||
this.resetInventory(playerTeam, player, this.getLoadout());
|
||||
@ -1272,4 +1329,12 @@ public class Warzone {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setRespawnTimer(int respawnTimer) {
|
||||
this.respawnTimer = respawnTimer;
|
||||
}
|
||||
|
||||
public int getRespawnTimer() {
|
||||
return this.respawnTimer;
|
||||
}
|
||||
}
|
||||
|
@ -91,13 +91,13 @@ public class ZoneLobby {
|
||||
|
||||
// we're setting the zoneVolume directly, so we need to figure out the lobbyMiddleWallBlock on our own
|
||||
if (wall == BlockFace.NORTH) {
|
||||
this.lobbyMiddleWallBlock = new BlockInfo(BlockInfo.getBlock(warzone.getWorld(), volume.getCornerOne()).getFace(BlockFace.UP).getFace(BlockFace.EAST, this.lobbyHalfSide));
|
||||
this.lobbyMiddleWallBlock = new BlockInfo(BlockInfo.getBlock(warzone.getWorld(), volume.getCornerOne()).getRelative(BlockFace.UP).getRelative(BlockFace.EAST, this.lobbyHalfSide));
|
||||
} else if (wall == BlockFace.EAST) {
|
||||
this.lobbyMiddleWallBlock = new BlockInfo(BlockInfo.getBlock(warzone.getWorld(), volume.getCornerOne()).getFace(BlockFace.UP).getFace(BlockFace.SOUTH, this.lobbyHalfSide));
|
||||
this.lobbyMiddleWallBlock = new BlockInfo(BlockInfo.getBlock(warzone.getWorld(), volume.getCornerOne()).getRelative(BlockFace.UP).getRelative(BlockFace.SOUTH, this.lobbyHalfSide));
|
||||
} else if (wall == BlockFace.SOUTH) {
|
||||
this.lobbyMiddleWallBlock = new BlockInfo(BlockInfo.getBlock(warzone.getWorld(), volume.getCornerOne()).getFace(BlockFace.UP).getFace(BlockFace.WEST, this.lobbyHalfSide));
|
||||
this.lobbyMiddleWallBlock = new BlockInfo(BlockInfo.getBlock(warzone.getWorld(), volume.getCornerOne()).getRelative(BlockFace.UP).getRelative(BlockFace.WEST, this.lobbyHalfSide));
|
||||
} else if (wall == BlockFace.WEST) {
|
||||
this.lobbyMiddleWallBlock = new BlockInfo(BlockInfo.getBlock(warzone.getWorld(), volume.getCornerOne()).getFace(BlockFace.UP).getFace(BlockFace.NORTH, this.lobbyHalfSide));
|
||||
this.lobbyMiddleWallBlock = new BlockInfo(BlockInfo.getBlock(warzone.getWorld(), volume.getCornerOne()).getRelative(BlockFace.UP).getRelative(BlockFace.NORTH, this.lobbyHalfSide));
|
||||
}
|
||||
}
|
||||
|
||||
@ -149,7 +149,7 @@ public class ZoneLobby {
|
||||
this.wall = opposite; // a player facing south places a lobby that looks just like a lobby stuck to the north wall
|
||||
|
||||
this.calculateLobbyWidth();
|
||||
this.lobbyMiddleWallBlock = new BlockInfo(lobbyWorld.getBlockAt(playerLocation.getBlockX(), playerLocation.getBlockY(), playerLocation.getBlockZ()).getFace(facing, 6));
|
||||
this.lobbyMiddleWallBlock = new BlockInfo(lobbyWorld.getBlockAt(playerLocation.getBlockX(), playerLocation.getBlockY(), playerLocation.getBlockZ()).getRelative(facing, 6));
|
||||
|
||||
Block corner1 = null;
|
||||
Block corner2 = null;
|
||||
@ -298,7 +298,7 @@ public class ZoneLobby {
|
||||
}
|
||||
|
||||
// set zone tp
|
||||
this.zoneTeleportBlock = new BlockInfo(BlockInfo.getBlock(this.volume.getWorld(), this.lobbyMiddleWallBlock).getFace(this.wall, 6));
|
||||
this.zoneTeleportBlock = new BlockInfo(BlockInfo.getBlock(this.volume.getWorld(), this.lobbyMiddleWallBlock).getRelative(this.wall, 6));
|
||||
int yaw = 0;
|
||||
if (this.wall == BlockFace.WEST) {
|
||||
yaw = 180;
|
||||
@ -312,7 +312,7 @@ public class ZoneLobby {
|
||||
this.warzone.setTeleport(new Location(this.volume.getWorld(), this.zoneTeleportBlock.getX(), this.zoneTeleportBlock.getY(), this.zoneTeleportBlock.getZ(), yaw, 0));
|
||||
|
||||
// set zone sign
|
||||
Block zoneSignBlock = BlockInfo.getBlock(this.volume.getWorld(), this.lobbyMiddleWallBlock).getFace(this.wall, 4);
|
||||
Block zoneSignBlock = BlockInfo.getBlock(this.volume.getWorld(), this.lobbyMiddleWallBlock).getRelative(this.wall, 4);
|
||||
byte data = 0;
|
||||
if (this.wall == BlockFace.NORTH) {
|
||||
data = (byte) 4;
|
||||
@ -337,11 +337,11 @@ public class ZoneLobby {
|
||||
|
||||
// lets get some light in here
|
||||
if (this.wall == BlockFace.NORTH || this.wall == BlockFace.SOUTH) {
|
||||
BlockInfo.getBlock(this.volume.getWorld(), this.lobbyMiddleWallBlock).getFace(BlockFace.DOWN).getFace(BlockFace.WEST, this.lobbyHalfSide - 1).getFace(this.wall, 9).setType(Material.GLOWSTONE);
|
||||
BlockInfo.getBlock(this.volume.getWorld(), this.lobbyMiddleWallBlock).getFace(BlockFace.DOWN).getFace(BlockFace.EAST, this.lobbyHalfSide - 1).getFace(this.wall, 9).setType(Material.GLOWSTONE);
|
||||
BlockInfo.getBlock(this.volume.getWorld(), this.lobbyMiddleWallBlock).getRelative(BlockFace.DOWN).getRelative(BlockFace.WEST, this.lobbyHalfSide - 1).getRelative(this.wall, 9).setType(Material.GLOWSTONE);
|
||||
BlockInfo.getBlock(this.volume.getWorld(), this.lobbyMiddleWallBlock).getRelative(BlockFace.DOWN).getRelative(BlockFace.EAST, this.lobbyHalfSide - 1).getRelative(this.wall, 9).setType(Material.GLOWSTONE);
|
||||
} else {
|
||||
BlockInfo.getBlock(this.volume.getWorld(), this.lobbyMiddleWallBlock).getFace(BlockFace.DOWN).getFace(BlockFace.NORTH, this.lobbyHalfSide - 1).getFace(this.wall, 9).setType(Material.GLOWSTONE);
|
||||
BlockInfo.getBlock(this.volume.getWorld(), this.lobbyMiddleWallBlock).getFace(BlockFace.DOWN).getFace(BlockFace.SOUTH, this.lobbyHalfSide - 1).getFace(this.wall, 9).setType(Material.GLOWSTONE);
|
||||
BlockInfo.getBlock(this.volume.getWorld(), this.lobbyMiddleWallBlock).getRelative(BlockFace.DOWN).getRelative(BlockFace.NORTH, this.lobbyHalfSide - 1).getRelative(this.wall, 9).setType(Material.GLOWSTONE);
|
||||
BlockInfo.getBlock(this.volume.getWorld(), this.lobbyMiddleWallBlock).getRelative(BlockFace.DOWN).getRelative(BlockFace.SOUTH, this.lobbyHalfSide - 1).getRelative(this.wall, 9).setType(Material.GLOWSTONE);
|
||||
}
|
||||
} else {
|
||||
War.war.log("Failed to initalize zone lobby for zone " + this.warzone.getName(), java.util.logging.Level.WARNING);
|
||||
@ -375,23 +375,23 @@ public class ZoneLobby {
|
||||
if (this.warzone.getTeams().size() % 2 == 0) {
|
||||
// even number of teams
|
||||
if (doorIndex % 2 == 0) {
|
||||
this.teamGateBlocks.put(team.getName(), new BlockInfo(lobbyMiddleWallBlock.getFace(rightSide, doorIndex * 2 + 2)));
|
||||
this.teamGateBlocks.put(team.getName(), new BlockInfo(lobbyMiddleWallBlock.getRelative(rightSide, doorIndex * 2 + 2)));
|
||||
} else {
|
||||
this.teamGateBlocks.put(team.getName(), new BlockInfo(lobbyMiddleWallBlock.getFace(leftSide, doorIndex * 2)));
|
||||
this.teamGateBlocks.put(team.getName(), new BlockInfo(lobbyMiddleWallBlock.getRelative(leftSide, doorIndex * 2)));
|
||||
}
|
||||
|
||||
} else {
|
||||
if (doorIndex == 0) {
|
||||
this.teamGateBlocks.put(team.getName(), new BlockInfo(lobbyMiddleWallBlock));
|
||||
} else if (doorIndex % 2 == 0) {
|
||||
this.teamGateBlocks.put(team.getName(), new BlockInfo(lobbyMiddleWallBlock.getFace(rightSide, doorIndex * 2)));
|
||||
this.teamGateBlocks.put(team.getName(), new BlockInfo(lobbyMiddleWallBlock.getRelative(rightSide, doorIndex * 2)));
|
||||
} else {
|
||||
this.teamGateBlocks.put(team.getName(), new BlockInfo(lobbyMiddleWallBlock.getFace(leftSide, doorIndex * 2 + 2)));
|
||||
this.teamGateBlocks.put(team.getName(), new BlockInfo(lobbyMiddleWallBlock.getRelative(leftSide, doorIndex * 2 + 2)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
this.warHubLinkGate = new BlockInfo(lobbyMiddleWallBlock.getFace(this.wall, 9));
|
||||
this.warHubLinkGate = new BlockInfo(lobbyMiddleWallBlock.getRelative(this.wall, 9));
|
||||
}
|
||||
|
||||
private void placeGate(Block block, TeamKind teamKind) {
|
||||
@ -411,14 +411,14 @@ public class ZoneLobby {
|
||||
leftSide = BlockFace.NORTH;
|
||||
rightSide = BlockFace.SOUTH;
|
||||
}
|
||||
block.getFace(BlockFace.DOWN).setType(Material.GLOWSTONE);
|
||||
this.setBlock(block.getFace(leftSide), teamKind);
|
||||
this.setBlock(block.getFace(rightSide).getFace(BlockFace.UP), teamKind);
|
||||
this.setBlock(block.getFace(leftSide).getFace(BlockFace.UP).getFace(BlockFace.UP), teamKind);
|
||||
this.setBlock(block.getFace(rightSide), teamKind);
|
||||
this.setBlock(block.getFace(leftSide).getFace(BlockFace.UP), teamKind);
|
||||
this.setBlock(block.getFace(rightSide).getFace(BlockFace.UP).getFace(BlockFace.UP), teamKind);
|
||||
this.setBlock(block.getFace(BlockFace.UP).getFace(BlockFace.UP), teamKind);
|
||||
block.getRelative(BlockFace.DOWN).setType(Material.GLOWSTONE);
|
||||
this.setBlock(block.getRelative(leftSide), teamKind);
|
||||
this.setBlock(block.getRelative(rightSide).getRelative(BlockFace.UP), teamKind);
|
||||
this.setBlock(block.getRelative(leftSide).getRelative(BlockFace.UP).getRelative(BlockFace.UP), teamKind);
|
||||
this.setBlock(block.getRelative(rightSide), teamKind);
|
||||
this.setBlock(block.getRelative(leftSide).getRelative(BlockFace.UP), teamKind);
|
||||
this.setBlock(block.getRelative(rightSide).getRelative(BlockFace.UP).getRelative(BlockFace.UP), teamKind);
|
||||
this.setBlock(block.getRelative(BlockFace.UP).getRelative(BlockFace.UP), teamKind);
|
||||
}
|
||||
}
|
||||
|
||||
@ -439,14 +439,14 @@ public class ZoneLobby {
|
||||
leftSide = BlockFace.NORTH;
|
||||
rightSide = BlockFace.SOUTH;
|
||||
}
|
||||
block.getFace(BlockFace.DOWN).setType(Material.GLOWSTONE);
|
||||
this.setBlock(block.getFace(leftSide), material);
|
||||
this.setBlock(block.getFace(rightSide).getFace(BlockFace.UP), material);
|
||||
this.setBlock(block.getFace(leftSide).getFace(BlockFace.UP).getFace(BlockFace.UP), material);
|
||||
this.setBlock(block.getFace(rightSide), material);
|
||||
this.setBlock(block.getFace(leftSide).getFace(BlockFace.UP), material);
|
||||
this.setBlock(block.getFace(rightSide).getFace(BlockFace.UP).getFace(BlockFace.UP), material);
|
||||
this.setBlock(block.getFace(BlockFace.UP).getFace(BlockFace.UP), material);
|
||||
block.getRelative(BlockFace.DOWN).setType(Material.GLOWSTONE);
|
||||
this.setBlock(block.getRelative(leftSide), material);
|
||||
this.setBlock(block.getRelative(rightSide).getRelative(BlockFace.UP), material);
|
||||
this.setBlock(block.getRelative(leftSide).getRelative(BlockFace.UP).getRelative(BlockFace.UP), material);
|
||||
this.setBlock(block.getRelative(rightSide), material);
|
||||
this.setBlock(block.getRelative(leftSide).getRelative(BlockFace.UP), material);
|
||||
this.setBlock(block.getRelative(rightSide).getRelative(BlockFace.UP).getRelative(BlockFace.UP), material);
|
||||
this.setBlock(block.getRelative(BlockFace.UP).getRelative(BlockFace.UP), material);
|
||||
}
|
||||
}
|
||||
|
||||
@ -477,21 +477,22 @@ public class ZoneLobby {
|
||||
rightSide = BlockFace.SOUTH;
|
||||
}
|
||||
List<Team> teams = this.warzone.getTeams();
|
||||
|
||||
Block autoAssignGateBlock = BlockInfo.getBlock(this.volume.getWorld(), this.autoAssignGate);
|
||||
this.setBlock(autoAssignGateBlock.getFace(BlockFace.DOWN), (Material.GLOWSTONE));
|
||||
this.setBlock(autoAssignGateBlock.getRelative(BlockFace.DOWN), (Material.GLOWSTONE));
|
||||
int size = teams.size();
|
||||
if (size > 0) {
|
||||
TeamKind[] doorBlockKinds = new TeamKind[7];
|
||||
for (int i = 0; i < 7; i++) {
|
||||
doorBlockKinds[i] = teams.get(i % size).getKind();
|
||||
}
|
||||
this.setBlock(autoAssignGateBlock.getFace(leftSide), doorBlockKinds[0]);
|
||||
this.setBlock(autoAssignGateBlock.getFace(leftSide).getFace(BlockFace.UP), doorBlockKinds[1]);
|
||||
this.setBlock(autoAssignGateBlock.getFace(leftSide).getFace(BlockFace.UP).getFace(BlockFace.UP), doorBlockKinds[2]);
|
||||
this.setBlock(autoAssignGateBlock.getFace(BlockFace.UP).getFace(BlockFace.UP), doorBlockKinds[3]);
|
||||
this.setBlock(autoAssignGateBlock.getFace(rightSide).getFace(BlockFace.UP).getFace(BlockFace.UP), doorBlockKinds[4]);
|
||||
this.setBlock(autoAssignGateBlock.getFace(rightSide).getFace(BlockFace.UP), doorBlockKinds[5]);
|
||||
this.setBlock(autoAssignGateBlock.getFace(rightSide), doorBlockKinds[6]);
|
||||
this.setBlock(autoAssignGateBlock.getRelative(leftSide), doorBlockKinds[0]);
|
||||
this.setBlock(autoAssignGateBlock.getRelative(leftSide).getRelative(BlockFace.UP), doorBlockKinds[1]);
|
||||
this.setBlock(autoAssignGateBlock.getRelative(leftSide).getRelative(BlockFace.UP).getRelative(BlockFace.UP), doorBlockKinds[2]);
|
||||
this.setBlock(autoAssignGateBlock.getRelative(BlockFace.UP).getRelative(BlockFace.UP), doorBlockKinds[3]);
|
||||
this.setBlock(autoAssignGateBlock.getRelative(rightSide).getRelative(BlockFace.UP).getRelative(BlockFace.UP), doorBlockKinds[4]);
|
||||
this.setBlock(autoAssignGateBlock.getRelative(rightSide).getRelative(BlockFace.UP), doorBlockKinds[5]);
|
||||
this.setBlock(autoAssignGateBlock.getRelative(rightSide), doorBlockKinds[6]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -565,7 +566,7 @@ public class ZoneLobby {
|
||||
leftSide = BlockFace.NORTH;
|
||||
rightSide = BlockFace.SOUTH;
|
||||
}
|
||||
return (block.getX() == gateBlock.getX() && block.getY() == gateBlock.getY() && block.getZ() == gateBlock.getZ()) || (block.getX() == gateBlock.getFace(BlockFace.UP).getX() && block.getY() == gateBlock.getFace(BlockFace.UP).getY() && block.getZ() == gateBlock.getFace(BlockFace.UP).getZ()) || (block.getX() == gateBlock.getFace(leftSide).getX() && block.getY() == gateBlock.getFace(leftSide).getY() && block.getZ() == gateBlock.getFace(leftSide).getZ()) || (block.getX() == gateBlock.getFace(leftSide).getFace(BlockFace.UP).getX() && block.getY() == gateBlock.getFace(leftSide).getFace(BlockFace.UP).getY() && block.getZ() == gateBlock.getFace(leftSide).getFace(BlockFace.UP).getZ()) || (block.getX() == gateBlock.getFace(leftSide).getFace(BlockFace.UP).getFace(BlockFace.UP).getX() && block.getY() == gateBlock.getFace(leftSide).getFace(BlockFace.UP).getFace(BlockFace.UP).getY() && block.getZ() == gateBlock.getFace(leftSide).getFace(BlockFace.UP).getFace(BlockFace.UP).getZ()) || (block.getX() == gateBlock.getFace(BlockFace.UP).getFace(BlockFace.UP).getX() && block.getY() == gateBlock.getFace(BlockFace.UP).getFace(BlockFace.UP).getY() && block.getZ() == gateBlock.getFace(BlockFace.UP).getFace(BlockFace.UP).getZ()) || (block.getX() == gateBlock.getFace(rightSide).getFace(BlockFace.UP).getX() && block.getY() == gateBlock.getFace(rightSide).getFace(BlockFace.UP).getY() && block.getZ() == gateBlock.getFace(rightSide).getFace(BlockFace.UP).getZ()) || (block.getX() == gateBlock.getFace(rightSide).getFace(BlockFace.UP).getFace(BlockFace.UP).getX() && block.getY() == gateBlock.getFace(rightSide).getFace(BlockFace.UP).getFace(BlockFace.UP).getY() && block.getZ() == gateBlock.getFace(rightSide).getFace(BlockFace.UP).getFace(BlockFace.UP).getZ()) || (block.getX() == gateBlock.getFace(rightSide).getX() && block.getY() == gateBlock.getFace(rightSide).getY() && block.getZ() == gateBlock.getFace(rightSide).getZ()) || (block.getX() == gateBlock.getX() && block.getY() == gateBlock.getY() - 1 && block.getZ() == gateBlock.getZ());
|
||||
return (block.getX() == gateBlock.getX() && block.getY() == gateBlock.getY() && block.getZ() == gateBlock.getZ()) || (block.getX() == gateBlock.getRelative(BlockFace.UP).getX() && block.getY() == gateBlock.getRelative(BlockFace.UP).getY() && block.getZ() == gateBlock.getRelative(BlockFace.UP).getZ()) || (block.getX() == gateBlock.getRelative(leftSide).getX() && block.getY() == gateBlock.getRelative(leftSide).getY() && block.getZ() == gateBlock.getRelative(leftSide).getZ()) || (block.getX() == gateBlock.getRelative(leftSide).getRelative(BlockFace.UP).getX() && block.getY() == gateBlock.getRelative(leftSide).getRelative(BlockFace.UP).getY() && block.getZ() == gateBlock.getRelative(leftSide).getRelative(BlockFace.UP).getZ()) || (block.getX() == gateBlock.getRelative(leftSide).getRelative(BlockFace.UP).getRelative(BlockFace.UP).getX() && block.getY() == gateBlock.getRelative(leftSide).getRelative(BlockFace.UP).getRelative(BlockFace.UP).getY() && block.getZ() == gateBlock.getRelative(leftSide).getRelative(BlockFace.UP).getRelative(BlockFace.UP).getZ()) || (block.getX() == gateBlock.getRelative(BlockFace.UP).getRelative(BlockFace.UP).getX() && block.getY() == gateBlock.getRelative(BlockFace.UP).getRelative(BlockFace.UP).getY() && block.getZ() == gateBlock.getRelative(BlockFace.UP).getRelative(BlockFace.UP).getZ()) || (block.getX() == gateBlock.getRelative(rightSide).getRelative(BlockFace.UP).getX() && block.getY() == gateBlock.getRelative(rightSide).getRelative(BlockFace.UP).getY() && block.getZ() == gateBlock.getRelative(rightSide).getRelative(BlockFace.UP).getZ()) || (block.getX() == gateBlock.getRelative(rightSide).getRelative(BlockFace.UP).getRelative(BlockFace.UP).getX() && block.getY() == gateBlock.getRelative(rightSide).getRelative(BlockFace.UP).getRelative(BlockFace.UP).getY() && block.getZ() == gateBlock.getRelative(rightSide).getRelative(BlockFace.UP).getRelative(BlockFace.UP).getZ()) || (block.getX() == gateBlock.getRelative(rightSide).getX() && block.getY() == gateBlock.getRelative(rightSide).getY() && block.getZ() == gateBlock.getRelative(rightSide).getZ()) || (block.getX() == gateBlock.getX() && block.getY() == gateBlock.getY() - 1 && block.getZ() == gateBlock.getZ());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -612,28 +613,28 @@ public class ZoneLobby {
|
||||
}
|
||||
byte data = 0;
|
||||
if (this.wall == BlockFace.NORTH) {
|
||||
block = gate.getFace(direction).getFace(BlockFace.EAST);
|
||||
block = gate.getRelative(direction).getRelative(BlockFace.EAST);
|
||||
if (awayFromWall) {
|
||||
data = (byte) 4;
|
||||
} else {
|
||||
data = (byte) 12;
|
||||
}
|
||||
} else if (this.wall == BlockFace.EAST) {
|
||||
block = gate.getFace(direction).getFace(BlockFace.SOUTH);
|
||||
block = gate.getRelative(direction).getRelative(BlockFace.SOUTH);
|
||||
if (awayFromWall) {
|
||||
data = (byte) 8;
|
||||
} else {
|
||||
data = (byte) 0;
|
||||
}
|
||||
} else if (this.wall == BlockFace.SOUTH) {
|
||||
block = gate.getFace(direction).getFace(BlockFace.WEST);
|
||||
block = gate.getRelative(direction).getRelative(BlockFace.WEST);
|
||||
if (awayFromWall) {
|
||||
data = (byte) 12;
|
||||
} else {
|
||||
data = (byte) 4;
|
||||
}
|
||||
} else if (this.wall == BlockFace.WEST) {
|
||||
block = gate.getFace(direction).getFace(BlockFace.NORTH);
|
||||
block = gate.getRelative(direction).getRelative(BlockFace.NORTH);
|
||||
if (awayFromWall) {
|
||||
data = (byte) 0;
|
||||
} else {
|
||||
@ -683,9 +684,9 @@ public class ZoneLobby {
|
||||
private boolean leaving(Location location, Block gate, BlockFace inside, BlockFace left, BlockFace right) {
|
||||
// 3x4x1 deep
|
||||
Volume gateExitVolume = new Volume("tempGateExit", location.getWorld());
|
||||
Block out = gate.getFace(inside);
|
||||
gateExitVolume.setCornerOne(out.getFace(left).getFace(BlockFace.DOWN));
|
||||
gateExitVolume.setCornerTwo(gate.getFace(right, 1).getFace(BlockFace.UP, 3));
|
||||
Block out = gate.getRelative(inside);
|
||||
gateExitVolume.setCornerOne(out.getRelative(left).getRelative(BlockFace.DOWN));
|
||||
gateExitVolume.setCornerTwo(gate.getRelative(right, 1).getRelative(BlockFace.UP, 2));
|
||||
|
||||
if (gateExitVolume.contains(location)) {
|
||||
return true;
|
||||
|
@ -40,121 +40,121 @@ public class ZoneWallGuard {
|
||||
for (Block block : nearestWallBlocks) {
|
||||
this.glassify(block, this.wall);
|
||||
if (this.wall != BlockFace.UP && this.wall != BlockFace.DOWN) {
|
||||
this.glassify(block.getFace(BlockFace.UP), this.wall);
|
||||
this.glassify(block.getFace(BlockFace.UP, 2), this.wall);
|
||||
this.glassify(block.getFace(BlockFace.DOWN), this.wall);
|
||||
this.glassify(block.getFace(BlockFace.DOWN, 2), this.wall);
|
||||
this.glassify(block.getRelative(BlockFace.UP), this.wall);
|
||||
this.glassify(block.getRelative(BlockFace.UP, 2), this.wall);
|
||||
this.glassify(block.getRelative(BlockFace.DOWN), this.wall);
|
||||
this.glassify(block.getRelative(BlockFace.DOWN, 2), this.wall);
|
||||
}
|
||||
if (this.wall == BlockFace.NORTH && this.warzone.getVolume().isNorthWallBlock(block)) {
|
||||
this.glassify(block.getFace(BlockFace.EAST), BlockFace.NORTH);
|
||||
this.glassify(block.getFace(BlockFace.EAST).getFace(BlockFace.UP), BlockFace.NORTH);
|
||||
this.glassify(block.getFace(BlockFace.EAST).getFace(BlockFace.DOWN), BlockFace.NORTH);
|
||||
this.glassify(block.getFace(BlockFace.EAST, 2), BlockFace.NORTH);
|
||||
this.glassify(block.getFace(BlockFace.EAST, 2).getFace(BlockFace.UP), BlockFace.NORTH);
|
||||
this.glassify(block.getFace(BlockFace.EAST, 2).getFace(BlockFace.DOWN), BlockFace.NORTH);
|
||||
this.glassify(block.getFace(BlockFace.EAST).getFace(BlockFace.UP, 2), BlockFace.NORTH);
|
||||
this.glassify(block.getFace(BlockFace.EAST).getFace(BlockFace.DOWN, 2), BlockFace.NORTH);
|
||||
this.glassify(block.getFace(BlockFace.WEST), BlockFace.NORTH);
|
||||
this.glassify(block.getFace(BlockFace.WEST).getFace(BlockFace.UP), BlockFace.NORTH);
|
||||
this.glassify(block.getFace(BlockFace.WEST).getFace(BlockFace.DOWN), BlockFace.NORTH);
|
||||
this.glassify(block.getFace(BlockFace.WEST, 2), BlockFace.NORTH);
|
||||
this.glassify(block.getFace(BlockFace.WEST, 2).getFace(BlockFace.UP), BlockFace.NORTH);
|
||||
this.glassify(block.getFace(BlockFace.WEST, 2).getFace(BlockFace.DOWN), BlockFace.NORTH);
|
||||
this.glassify(block.getFace(BlockFace.WEST).getFace(BlockFace.UP, 2), BlockFace.NORTH);
|
||||
this.glassify(block.getFace(BlockFace.WEST).getFace(BlockFace.DOWN, 2), BlockFace.NORTH);
|
||||
this.glassify(block.getRelative(BlockFace.EAST), BlockFace.NORTH);
|
||||
this.glassify(block.getRelative(BlockFace.EAST).getRelative(BlockFace.UP), BlockFace.NORTH);
|
||||
this.glassify(block.getRelative(BlockFace.EAST).getRelative(BlockFace.DOWN), BlockFace.NORTH);
|
||||
this.glassify(block.getRelative(BlockFace.EAST, 2), BlockFace.NORTH);
|
||||
this.glassify(block.getRelative(BlockFace.EAST, 2).getRelative(BlockFace.UP), BlockFace.NORTH);
|
||||
this.glassify(block.getRelative(BlockFace.EAST, 2).getRelative(BlockFace.DOWN), BlockFace.NORTH);
|
||||
this.glassify(block.getRelative(BlockFace.EAST).getRelative(BlockFace.UP, 2), BlockFace.NORTH);
|
||||
this.glassify(block.getRelative(BlockFace.EAST).getRelative(BlockFace.DOWN, 2), BlockFace.NORTH);
|
||||
this.glassify(block.getRelative(BlockFace.WEST), BlockFace.NORTH);
|
||||
this.glassify(block.getRelative(BlockFace.WEST).getRelative(BlockFace.UP), BlockFace.NORTH);
|
||||
this.glassify(block.getRelative(BlockFace.WEST).getRelative(BlockFace.DOWN), BlockFace.NORTH);
|
||||
this.glassify(block.getRelative(BlockFace.WEST, 2), BlockFace.NORTH);
|
||||
this.glassify(block.getRelative(BlockFace.WEST, 2).getRelative(BlockFace.UP), BlockFace.NORTH);
|
||||
this.glassify(block.getRelative(BlockFace.WEST, 2).getRelative(BlockFace.DOWN), BlockFace.NORTH);
|
||||
this.glassify(block.getRelative(BlockFace.WEST).getRelative(BlockFace.UP, 2), BlockFace.NORTH);
|
||||
this.glassify(block.getRelative(BlockFace.WEST).getRelative(BlockFace.DOWN, 2), BlockFace.NORTH);
|
||||
} else if (this.wall == BlockFace.SOUTH && this.warzone.getVolume().isSouthWallBlock(block)) {
|
||||
this.glassify(block.getFace(BlockFace.EAST), BlockFace.SOUTH);
|
||||
this.glassify(block.getFace(BlockFace.EAST).getFace(BlockFace.UP), BlockFace.SOUTH);
|
||||
this.glassify(block.getFace(BlockFace.EAST).getFace(BlockFace.DOWN), BlockFace.SOUTH);
|
||||
this.glassify(block.getFace(BlockFace.EAST, 2), BlockFace.SOUTH);
|
||||
this.glassify(block.getFace(BlockFace.EAST, 2).getFace(BlockFace.UP), BlockFace.SOUTH);
|
||||
this.glassify(block.getFace(BlockFace.EAST, 2).getFace(BlockFace.DOWN), BlockFace.SOUTH);
|
||||
this.glassify(block.getFace(BlockFace.EAST).getFace(BlockFace.UP, 2), BlockFace.SOUTH);
|
||||
this.glassify(block.getFace(BlockFace.EAST).getFace(BlockFace.DOWN, 2), BlockFace.SOUTH);
|
||||
this.glassify(block.getFace(BlockFace.WEST), BlockFace.SOUTH);
|
||||
this.glassify(block.getFace(BlockFace.WEST).getFace(BlockFace.UP), BlockFace.SOUTH);
|
||||
this.glassify(block.getFace(BlockFace.WEST).getFace(BlockFace.DOWN), BlockFace.SOUTH);
|
||||
this.glassify(block.getFace(BlockFace.WEST, 2), BlockFace.SOUTH);
|
||||
this.glassify(block.getFace(BlockFace.WEST, 2).getFace(BlockFace.UP), BlockFace.SOUTH);
|
||||
this.glassify(block.getFace(BlockFace.WEST, 2).getFace(BlockFace.DOWN), BlockFace.SOUTH);
|
||||
this.glassify(block.getFace(BlockFace.WEST).getFace(BlockFace.UP, 2), BlockFace.SOUTH);
|
||||
this.glassify(block.getFace(BlockFace.WEST).getFace(BlockFace.DOWN, 2), BlockFace.SOUTH);
|
||||
this.glassify(block.getRelative(BlockFace.EAST), BlockFace.SOUTH);
|
||||
this.glassify(block.getRelative(BlockFace.EAST).getRelative(BlockFace.UP), BlockFace.SOUTH);
|
||||
this.glassify(block.getRelative(BlockFace.EAST).getRelative(BlockFace.DOWN), BlockFace.SOUTH);
|
||||
this.glassify(block.getRelative(BlockFace.EAST, 2), BlockFace.SOUTH);
|
||||
this.glassify(block.getRelative(BlockFace.EAST, 2).getRelative(BlockFace.UP), BlockFace.SOUTH);
|
||||
this.glassify(block.getRelative(BlockFace.EAST, 2).getRelative(BlockFace.DOWN), BlockFace.SOUTH);
|
||||
this.glassify(block.getRelative(BlockFace.EAST).getRelative(BlockFace.UP, 2), BlockFace.SOUTH);
|
||||
this.glassify(block.getRelative(BlockFace.EAST).getRelative(BlockFace.DOWN, 2), BlockFace.SOUTH);
|
||||
this.glassify(block.getRelative(BlockFace.WEST), BlockFace.SOUTH);
|
||||
this.glassify(block.getRelative(BlockFace.WEST).getRelative(BlockFace.UP), BlockFace.SOUTH);
|
||||
this.glassify(block.getRelative(BlockFace.WEST).getRelative(BlockFace.DOWN), BlockFace.SOUTH);
|
||||
this.glassify(block.getRelative(BlockFace.WEST, 2), BlockFace.SOUTH);
|
||||
this.glassify(block.getRelative(BlockFace.WEST, 2).getRelative(BlockFace.UP), BlockFace.SOUTH);
|
||||
this.glassify(block.getRelative(BlockFace.WEST, 2).getRelative(BlockFace.DOWN), BlockFace.SOUTH);
|
||||
this.glassify(block.getRelative(BlockFace.WEST).getRelative(BlockFace.UP, 2), BlockFace.SOUTH);
|
||||
this.glassify(block.getRelative(BlockFace.WEST).getRelative(BlockFace.DOWN, 2), BlockFace.SOUTH);
|
||||
} else if (this.wall == BlockFace.EAST && this.warzone.getVolume().isEastWallBlock(block)) {
|
||||
this.glassify(block.getFace(BlockFace.NORTH), BlockFace.EAST);
|
||||
this.glassify(block.getFace(BlockFace.NORTH).getFace(BlockFace.UP), BlockFace.EAST);
|
||||
this.glassify(block.getFace(BlockFace.NORTH).getFace(BlockFace.DOWN), BlockFace.EAST);
|
||||
this.glassify(block.getFace(BlockFace.NORTH, 2), BlockFace.EAST);
|
||||
this.glassify(block.getFace(BlockFace.NORTH, 2).getFace(BlockFace.UP), BlockFace.EAST);
|
||||
this.glassify(block.getFace(BlockFace.NORTH, 2).getFace(BlockFace.DOWN), BlockFace.EAST);
|
||||
this.glassify(block.getFace(BlockFace.NORTH).getFace(BlockFace.UP, 2), BlockFace.EAST);
|
||||
this.glassify(block.getFace(BlockFace.NORTH).getFace(BlockFace.DOWN, 2), BlockFace.EAST);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH), BlockFace.EAST);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH).getFace(BlockFace.UP), BlockFace.EAST);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH).getFace(BlockFace.DOWN), BlockFace.EAST);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH, 2), BlockFace.EAST);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH, 2).getFace(BlockFace.UP), BlockFace.EAST);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH, 2).getFace(BlockFace.DOWN), BlockFace.EAST);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH).getFace(BlockFace.UP, 2), BlockFace.EAST);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH).getFace(BlockFace.DOWN, 2), BlockFace.EAST);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH), BlockFace.EAST);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH).getRelative(BlockFace.UP), BlockFace.EAST);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH).getRelative(BlockFace.DOWN), BlockFace.EAST);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH, 2), BlockFace.EAST);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH, 2).getRelative(BlockFace.UP), BlockFace.EAST);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH, 2).getRelative(BlockFace.DOWN), BlockFace.EAST);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH).getRelative(BlockFace.UP, 2), BlockFace.EAST);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH).getRelative(BlockFace.DOWN, 2), BlockFace.EAST);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH), BlockFace.EAST);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH).getRelative(BlockFace.UP), BlockFace.EAST);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH).getRelative(BlockFace.DOWN), BlockFace.EAST);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH, 2), BlockFace.EAST);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH, 2).getRelative(BlockFace.UP), BlockFace.EAST);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH, 2).getRelative(BlockFace.DOWN), BlockFace.EAST);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH).getRelative(BlockFace.UP, 2), BlockFace.EAST);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH).getRelative(BlockFace.DOWN, 2), BlockFace.EAST);
|
||||
} else if (this.wall == BlockFace.WEST && this.warzone.getVolume().isWestWallBlock(block)) {
|
||||
this.glassify(block.getFace(BlockFace.NORTH), BlockFace.WEST);
|
||||
this.glassify(block.getFace(BlockFace.NORTH).getFace(BlockFace.UP), BlockFace.WEST);
|
||||
this.glassify(block.getFace(BlockFace.NORTH).getFace(BlockFace.DOWN), BlockFace.WEST);
|
||||
this.glassify(block.getFace(BlockFace.NORTH, 2), BlockFace.WEST);
|
||||
this.glassify(block.getFace(BlockFace.NORTH, 2).getFace(BlockFace.UP), BlockFace.WEST);
|
||||
this.glassify(block.getFace(BlockFace.NORTH, 2).getFace(BlockFace.DOWN), BlockFace.WEST);
|
||||
this.glassify(block.getFace(BlockFace.NORTH).getFace(BlockFace.UP, 2), BlockFace.WEST);
|
||||
this.glassify(block.getFace(BlockFace.NORTH).getFace(BlockFace.DOWN, 2), BlockFace.WEST);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH), BlockFace.WEST);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH).getFace(BlockFace.UP), BlockFace.WEST);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH).getFace(BlockFace.DOWN), BlockFace.WEST);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH, 2), BlockFace.WEST);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH, 2).getFace(BlockFace.UP), BlockFace.WEST);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH, 2).getFace(BlockFace.DOWN), BlockFace.WEST);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH).getFace(BlockFace.UP, 2), BlockFace.WEST);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH).getFace(BlockFace.DOWN, 2), BlockFace.WEST);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH), BlockFace.WEST);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH).getRelative(BlockFace.UP), BlockFace.WEST);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH).getRelative(BlockFace.DOWN), BlockFace.WEST);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH, 2), BlockFace.WEST);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH, 2).getRelative(BlockFace.UP), BlockFace.WEST);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH, 2).getRelative(BlockFace.DOWN), BlockFace.WEST);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH).getRelative(BlockFace.UP, 2), BlockFace.WEST);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH).getRelative(BlockFace.DOWN, 2), BlockFace.WEST);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH), BlockFace.WEST);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH).getRelative(BlockFace.UP), BlockFace.WEST);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH).getRelative(BlockFace.DOWN), BlockFace.WEST);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH, 2), BlockFace.WEST);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH, 2).getRelative(BlockFace.UP), BlockFace.WEST);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH, 2).getRelative(BlockFace.DOWN), BlockFace.WEST);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH).getRelative(BlockFace.UP, 2), BlockFace.WEST);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH).getRelative(BlockFace.DOWN, 2), BlockFace.WEST);
|
||||
} else if (this.wall == BlockFace.UP && this.warzone.getVolume().isUpWallBlock(block)) {
|
||||
this.glassify(block.getFace(BlockFace.EAST), BlockFace.UP);
|
||||
this.glassify(block.getFace(BlockFace.EAST, 2), BlockFace.UP);
|
||||
this.glassify(block.getFace(BlockFace.WEST), BlockFace.UP);
|
||||
this.glassify(block.getFace(BlockFace.WEST, 2), BlockFace.UP);
|
||||
this.glassify(block.getFace(BlockFace.NORTH), BlockFace.UP);
|
||||
this.glassify(block.getFace(BlockFace.NORTH).getFace(BlockFace.EAST), BlockFace.UP);
|
||||
this.glassify(block.getFace(BlockFace.NORTH).getFace(BlockFace.WEST), BlockFace.UP);
|
||||
this.glassify(block.getFace(BlockFace.NORTH, 2), BlockFace.UP);
|
||||
this.glassify(block.getFace(BlockFace.NORTH, 2).getFace(BlockFace.EAST), BlockFace.UP);
|
||||
this.glassify(block.getFace(BlockFace.NORTH, 2).getFace(BlockFace.WEST), BlockFace.UP);
|
||||
this.glassify(block.getFace(BlockFace.NORTH).getFace(BlockFace.EAST, 2), BlockFace.UP);
|
||||
this.glassify(block.getFace(BlockFace.NORTH).getFace(BlockFace.WEST, 2), BlockFace.UP);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH), BlockFace.UP);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH).getFace(BlockFace.EAST), BlockFace.UP);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH).getFace(BlockFace.WEST), BlockFace.UP);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH, 2), BlockFace.UP);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH, 2).getFace(BlockFace.EAST), BlockFace.UP);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH, 2).getFace(BlockFace.WEST), BlockFace.UP);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH).getFace(BlockFace.UP, 2), BlockFace.UP);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH).getFace(BlockFace.DOWN, 2), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.EAST), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.EAST, 2), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.WEST), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.WEST, 2), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH).getRelative(BlockFace.EAST), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH).getRelative(BlockFace.WEST), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH, 2), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH, 2).getRelative(BlockFace.EAST), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH, 2).getRelative(BlockFace.WEST), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH).getRelative(BlockFace.EAST, 2), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH).getRelative(BlockFace.WEST, 2), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH).getRelative(BlockFace.EAST), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH).getRelative(BlockFace.WEST), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH, 2), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH, 2).getRelative(BlockFace.EAST), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH, 2).getRelative(BlockFace.WEST), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH).getRelative(BlockFace.UP, 2), BlockFace.UP);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH).getRelative(BlockFace.DOWN, 2), BlockFace.UP);
|
||||
} else if (this.wall == BlockFace.DOWN && this.warzone.getVolume().isDownWallBlock(block)) {
|
||||
this.glassify(block.getFace(BlockFace.EAST), BlockFace.DOWN);
|
||||
this.glassify(block.getFace(BlockFace.EAST, 2), BlockFace.DOWN);
|
||||
this.glassify(block.getFace(BlockFace.WEST), BlockFace.DOWN);
|
||||
this.glassify(block.getFace(BlockFace.WEST, 2), BlockFace.DOWN);
|
||||
this.glassify(block.getFace(BlockFace.NORTH), BlockFace.DOWN);
|
||||
this.glassify(block.getFace(BlockFace.NORTH).getFace(BlockFace.EAST), BlockFace.DOWN);
|
||||
this.glassify(block.getFace(BlockFace.NORTH).getFace(BlockFace.WEST), BlockFace.DOWN);
|
||||
this.glassify(block.getFace(BlockFace.NORTH, 2), BlockFace.DOWN);
|
||||
this.glassify(block.getFace(BlockFace.NORTH, 2).getFace(BlockFace.EAST), BlockFace.DOWN);
|
||||
this.glassify(block.getFace(BlockFace.NORTH, 2).getFace(BlockFace.WEST), BlockFace.DOWN);
|
||||
this.glassify(block.getFace(BlockFace.NORTH).getFace(BlockFace.EAST, 2), BlockFace.DOWN);
|
||||
this.glassify(block.getFace(BlockFace.NORTH).getFace(BlockFace.WEST, 2), BlockFace.DOWN);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH), BlockFace.DOWN);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH).getFace(BlockFace.EAST), BlockFace.DOWN);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH).getFace(BlockFace.WEST), BlockFace.DOWN);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH, 2), BlockFace.DOWN);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH, 2).getFace(BlockFace.EAST), BlockFace.DOWN);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH, 2).getFace(BlockFace.WEST), BlockFace.DOWN);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH).getFace(BlockFace.DOWN, 2), BlockFace.DOWN);
|
||||
this.glassify(block.getFace(BlockFace.SOUTH).getFace(BlockFace.DOWN, 2), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.EAST), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.EAST, 2), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.WEST), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.WEST, 2), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH).getRelative(BlockFace.EAST), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH).getRelative(BlockFace.WEST), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH, 2), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH, 2).getRelative(BlockFace.EAST), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH, 2).getRelative(BlockFace.WEST), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH).getRelative(BlockFace.EAST, 2), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.NORTH).getRelative(BlockFace.WEST, 2), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH).getRelative(BlockFace.EAST), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH).getRelative(BlockFace.WEST), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH, 2), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH, 2).getRelative(BlockFace.EAST), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH, 2).getRelative(BlockFace.WEST), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH).getRelative(BlockFace.DOWN, 2), BlockFace.DOWN);
|
||||
this.glassify(block.getRelative(BlockFace.SOUTH).getRelative(BlockFace.DOWN, 2), BlockFace.DOWN);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -80,7 +80,7 @@ public class HelmetProtectionTask implements Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
private ItemStack createBlockHead(Team team) {
|
||||
public ItemStack createBlockHead(Team team) {
|
||||
return new ItemStack(team.getKind().getMaterial(), 1, (short) 1, new Byte(team.getKind().getData()));
|
||||
}
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ public class LoadoutResetJob implements Runnable {
|
||||
|
||||
public void run() {
|
||||
this.zone.equipPlayerLoadoutSelection(player, team);
|
||||
|
||||
// Stop fire here, since doing it in the same tick as death doesn't extinguish it
|
||||
this.player.setFireTicks(0);
|
||||
}
|
||||
|
@ -21,17 +21,17 @@ public class ResetCursorJob implements Runnable {
|
||||
if (this.isSoutheast) {
|
||||
this.cornerBlock.setType(this.originalCursorBlocks[0].getType());
|
||||
this.cornerBlock.setData(this.originalCursorBlocks[0].getData());
|
||||
this.cornerBlock.getFace(BlockFace.WEST).setType(this.originalCursorBlocks[1].getType());
|
||||
this.cornerBlock.getFace(BlockFace.WEST).setData(this.originalCursorBlocks[1].getData());
|
||||
this.cornerBlock.getFace(BlockFace.NORTH).setType(this.originalCursorBlocks[2].getType());
|
||||
this.cornerBlock.getFace(BlockFace.NORTH).setData(this.originalCursorBlocks[2].getData());
|
||||
this.cornerBlock.getRelative(BlockFace.WEST).setType(this.originalCursorBlocks[1].getType());
|
||||
this.cornerBlock.getRelative(BlockFace.WEST).setData(this.originalCursorBlocks[1].getData());
|
||||
this.cornerBlock.getRelative(BlockFace.NORTH).setType(this.originalCursorBlocks[2].getType());
|
||||
this.cornerBlock.getRelative(BlockFace.NORTH).setData(this.originalCursorBlocks[2].getData());
|
||||
} else {
|
||||
this.cornerBlock.setType(this.originalCursorBlocks[0].getType());
|
||||
this.cornerBlock.setData(this.originalCursorBlocks[0].getData());
|
||||
this.cornerBlock.getFace(BlockFace.EAST).setType(this.originalCursorBlocks[1].getType());
|
||||
this.cornerBlock.getFace(BlockFace.EAST).setData(this.originalCursorBlocks[1].getData());
|
||||
this.cornerBlock.getFace(BlockFace.SOUTH).setType(this.originalCursorBlocks[2].getType());
|
||||
this.cornerBlock.getFace(BlockFace.SOUTH).setData(this.originalCursorBlocks[2].getData());
|
||||
this.cornerBlock.getRelative(BlockFace.EAST).setType(this.originalCursorBlocks[1].getType());
|
||||
this.cornerBlock.getRelative(BlockFace.EAST).setData(this.originalCursorBlocks[1].getData());
|
||||
this.cornerBlock.getRelative(BlockFace.SOUTH).setType(this.originalCursorBlocks[2].getType());
|
||||
this.cornerBlock.getRelative(BlockFace.SOUTH).setData(this.originalCursorBlocks[2].getData());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,10 @@ package com.tommytony.war.jobs;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.getspout.spoutapi.player.SpoutPlayer;
|
||||
|
||||
import bukkit.tommytony.war.War;
|
||||
import bukkit.tommytony.war.WarSpoutListener;
|
||||
|
||||
import com.tommytony.war.Team;
|
||||
import com.tommytony.war.Warzone;
|
||||
@ -19,7 +23,14 @@ public class ScoreCapReachedJob implements Runnable {
|
||||
public void run() {
|
||||
for (Team t : this.zone.getTeams()) {
|
||||
t.teamcast(this.winnersStr);
|
||||
boolean isSpoutServer = War.war.isSpoutServer();
|
||||
for (Player tp : t.getPlayers()) {
|
||||
if (isSpoutServer) {
|
||||
SpoutPlayer sp = (SpoutPlayer) tp;
|
||||
if (sp.isSpoutCraftEnabled()) {
|
||||
WarSpoutListener.removeStats(sp);
|
||||
}
|
||||
}
|
||||
// Send everyone to rally point (or zone lobby if not rally point)
|
||||
if (this.zone.getRallyPoint() != null) {
|
||||
tp.teleport(this.zone.getRallyPoint());
|
||||
|
@ -139,6 +139,11 @@ public class WarMapper {
|
||||
War.war.setDefaultFlagPointsOnly(warConfig.getBoolean("defaultFlagPointsOnly"));
|
||||
}
|
||||
|
||||
// defaultFlagMustBeHome
|
||||
if (warConfig.keyExists("defaultFlagMustBeHome")) {
|
||||
War.war.setDefaultFlagMustBeHome(warConfig.getBoolean("defaultFlagMustBeHome"));
|
||||
}
|
||||
|
||||
// defaultTeamCap
|
||||
if (warConfig.keyExists("defaultTeamCap")) {
|
||||
War.war.setDefaultTeamCap(warConfig.getInt("defaultTeamCap"));
|
||||
@ -149,6 +154,11 @@ public class WarMapper {
|
||||
War.war.setDefaultScoreCap(warConfig.getInt("defaultScoreCap"));
|
||||
}
|
||||
|
||||
// defaultRespawnTimer
|
||||
if (warConfig.keyExists("defaultRespawnTimer")) {
|
||||
War.war.setDefaultRespawnTimer(warConfig.getInt("defaultRespawnTimer"));
|
||||
}
|
||||
|
||||
// pvpInZonesOnly
|
||||
if (warConfig.keyExists("pvpInZonesOnly")) {
|
||||
War.war.setPvpInZonesOnly(warConfig.getBoolean("pvpInZonesOnly"));
|
||||
@ -347,12 +357,18 @@ public class WarMapper {
|
||||
// defaultFlagPointsOnly
|
||||
warConfig.setBoolean("defaultFlagPointsOnly", War.war.isDefaultFlagPointsOnly());
|
||||
|
||||
// defaultFlagMustBeHome
|
||||
warConfig.setBoolean("defaultFlagMustBeHome", War.war.isDefaultFlagMustBeHome());
|
||||
|
||||
// defaultTeamCap
|
||||
warConfig.setInt("defaultTeamCap", War.war.getDefaultTeamCap());
|
||||
|
||||
// defaultScoreCap
|
||||
warConfig.setInt("defaultScoreCap", War.war.getDefaultScoreCap());
|
||||
|
||||
// defaultRespawnTimer
|
||||
warConfig.setInt("defaultRespawnTimer", War.war.getDefaultRespawnTimer());
|
||||
|
||||
// pvpInZonesOnly
|
||||
warConfig.setBoolean("pvpInZonesOnly", War.war.isPvpInZonesOnly());
|
||||
|
||||
@ -365,13 +381,16 @@ public class WarMapper {
|
||||
// disablePVPMessage
|
||||
warConfig.setBoolean("disablePvpMessage", War.war.isDisablePvpMessage());
|
||||
|
||||
// disableBuildMessage
|
||||
warConfig.setBoolean("disableBuildMessage", War.war.isDisableBuildMessage());
|
||||
|
||||
// tntInZonesOnly
|
||||
warConfig.setBoolean("tntInZonesOnly", War.war.isTntInZonesOnly());
|
||||
|
||||
// spawnStyle
|
||||
warConfig.setString("spawnStyle", War.war.getDefaultSpawnStyle().toString());
|
||||
|
||||
// spawnStyle
|
||||
// flagReturn
|
||||
warConfig.setString("flagReturn", War.war.getDefaultFlagReturn().toString());
|
||||
|
||||
// defaultReward
|
||||
|
@ -181,6 +181,11 @@ public class WarzoneMapper {
|
||||
warzone.setFlagPointsOnly(warzoneConfig.getBoolean("flagPointsOnly"));
|
||||
}
|
||||
|
||||
// flagMustBeHome
|
||||
if (warzoneConfig.containsKey("flagMustBeHome")) {
|
||||
warzone.setFlagMustBeHome(warzoneConfig.getBoolean("flagMustBeHome"));
|
||||
}
|
||||
|
||||
// team cap
|
||||
if (warzoneConfig.containsKey("teamCap")) {
|
||||
warzone.setTeamCap(warzoneConfig.getInt("teamCap"));
|
||||
@ -191,6 +196,11 @@ public class WarzoneMapper {
|
||||
warzone.setScoreCap(warzoneConfig.getInt("scoreCap"));
|
||||
}
|
||||
|
||||
// respawn timer
|
||||
if (warzoneConfig.containsKey("respawnTimer")) {
|
||||
warzone.setRespawnTimer(warzoneConfig.getInt("respawnTimer"));
|
||||
}
|
||||
|
||||
// blockHeads
|
||||
if (warzoneConfig.containsKey("blockHeads")) {
|
||||
warzone.setBlockHeads(warzoneConfig.getBoolean("blockHeads"));
|
||||
@ -459,15 +469,21 @@ public class WarzoneMapper {
|
||||
// autoAssignOnly
|
||||
warzoneConfig.setBoolean("autoAssignOnly", warzone.isAutoAssignOnly());
|
||||
|
||||
// flagPointsOnly-+
|
||||
// flagPointsOnly
|
||||
warzoneConfig.setBoolean("flagPointsOnly", warzone.isFlagPointsOnly());
|
||||
|
||||
// flagMustBeHome
|
||||
warzoneConfig.setBoolean("flagMustBeHome", warzone.isFlagMustBeHome());
|
||||
|
||||
// team cap
|
||||
warzoneConfig.setInt("teamCap", warzone.getTeamCap());
|
||||
|
||||
// score cap
|
||||
warzoneConfig.setInt("scoreCap", warzone.getScoreCap());
|
||||
|
||||
// respawn timer
|
||||
warzoneConfig.setInt("respawnTimer", warzone.getRespawnTimer());
|
||||
|
||||
// blockHeads
|
||||
warzoneConfig.setBoolean("blockHeads", warzone.isBlockHeads());
|
||||
|
||||
|
@ -169,7 +169,7 @@ public class Volume {
|
||||
if (oldBlockType == Material.WALL_SIGN.getId() || oldBlockType == Material.SIGN_POST.getId()) {
|
||||
// Signs
|
||||
if (oldBlockType == Material.SIGN_POST.getId() && ((oldBlockData & 0x04) == 0x04) && i + 1 != this.getSizeX()) {
|
||||
Block southBlock = currentBlock.getFace(BlockFace.SOUTH);
|
||||
Block southBlock = currentBlock.getRelative(BlockFace.SOUTH);
|
||||
int oldSouthBlockType = this.getBlockTypes()[i + 1][j][k];
|
||||
byte oldSouthBlockData = this.getBlockDatas()[i + 1][j][k];
|
||||
if (southBlock.getTypeId() != oldSouthBlockType) {
|
||||
@ -255,7 +255,7 @@ public class Volume {
|
||||
}
|
||||
} else if (((oldBlockType == Material.TORCH.getId() && ((oldBlockData & 0x02) == 0x02)) || (oldBlockType == Material.REDSTONE_TORCH_OFF.getId() && ((oldBlockData & 0x02) == 0x02)) || (oldBlockType == Material.REDSTONE_TORCH_ON.getId() && ((oldBlockData & 0x02) == 0x02)) || (oldBlockType == Material.LEVER.getId() && ((oldBlockData & 0x02) == 0x02)) || (oldBlockType == Material.STONE_BUTTON.getId() && ((oldBlockData & 0x02) == 0x02)) || (oldBlockType == Material.LADDER.getId() && ((oldBlockData & 0x04) == 0x04)) || (oldBlockType == Material.RAILS.getId() && ((oldBlockData & 0x02) == 0x02))) && i + 1 != this.getSizeX()) {
|
||||
// Blocks that hang on a block south of themselves need to make sure that block is there before placing themselves... lol
|
||||
Block southBlock = currentBlock.getFace(BlockFace.SOUTH);
|
||||
Block southBlock = currentBlock.getRelative(BlockFace.SOUTH);
|
||||
int oldSouthBlockType = this.getBlockTypes()[i + 1][j][k];
|
||||
byte oldSouthBlockData = this.getBlockDatas()[i + 1][j][k];
|
||||
if (southBlock.getTypeId() != oldSouthBlockType) {
|
||||
|
@ -4,6 +4,7 @@ description: Lets you create TDM and CTF arenas (warzones) for a fast-paced and
|
||||
author: tommytony
|
||||
website: war.tommytony.com
|
||||
main: bukkit.tommytony.war.War
|
||||
softdepend: [Spout]
|
||||
permissions:
|
||||
war.*:
|
||||
description: Full War permissions. Create and destroy warzones. Change War configuration.
|
||||
|
@ -4,6 +4,7 @@ description: Lets you create TDM and CTF arenas (warzones) for a fast-paced and
|
||||
author: tommytony
|
||||
website: war.tommytony.com
|
||||
main: bukkit.tommytony.war.War
|
||||
softdepend: [Spout]
|
||||
permissions:
|
||||
war.*:
|
||||
description: Full War permissions. Create and destroy warzones. Change War configuration.
|
||||
|
Loading…
Reference in New Issue
Block a user