mirror of
https://github.com/taoneill/war.git
synced 2025-02-08 07:21:20 +01:00
War v0.5 (Rommel)
This commit is contained in:
parent
41f7bc881b
commit
4d8179c8fd
@ -45,7 +45,6 @@ public class War extends JavaPlugin {
|
||||
public War(PluginLoader pluginLoader, Server instance,
|
||||
PluginDescriptionFile desc, File folder, File plugin, ClassLoader cLoader) {
|
||||
super(pluginLoader, instance, desc, folder, plugin, cLoader);
|
||||
// TODO: switch to bukkit config file
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
@ -72,10 +71,7 @@ public class War extends JavaPlugin {
|
||||
for(Warzone warzone : warzones) {
|
||||
for(Team team : warzone.getTeams()) {
|
||||
for(Player player : team.getPlayers()) {
|
||||
if(warzone.hasPlayerInventory(player.getName())) {
|
||||
warzone.restorePlayerInventory(player);
|
||||
player.sendMessage(str("War disabled. Your inventory has (hopefully) been restored."));
|
||||
}
|
||||
warzone.handlePlayerLeave(player, warzone.getTeleport());
|
||||
}
|
||||
}
|
||||
if(warzone.getLobby() != null) {
|
||||
@ -168,7 +164,13 @@ public class War extends JavaPlugin {
|
||||
boolean warped = false;
|
||||
for(Warzone warzone : this.getWarzones()) {
|
||||
if(warzone.getName().equals(arguments[0]) && warzone.getTeleport() != null){
|
||||
player.teleportTo(warzone.getTeleport());
|
||||
Team playerTeam = getPlayerTeam(player.getName());
|
||||
if(playerTeam != null) {
|
||||
Warzone playerWarzone = getPlayerTeamWarzone(player.getName());
|
||||
playerWarzone.handlePlayerLeave(player, warzone.getTeleport());
|
||||
} else {
|
||||
player.teleportTo(warzone.getTeleport());
|
||||
}
|
||||
warped = true;
|
||||
}
|
||||
}
|
||||
@ -227,6 +229,9 @@ public class War extends JavaPlugin {
|
||||
team.addPlayer(player);
|
||||
team.resetSign();
|
||||
warzone.respawnPlayer(team, player);
|
||||
if(warHub != null) {
|
||||
warHub.resetZoneSign(warzone);
|
||||
}
|
||||
foundTeam = true;
|
||||
} else {
|
||||
player.sendMessage(this.str("Team " + name + " is full."));
|
||||
@ -250,22 +255,8 @@ public class War extends JavaPlugin {
|
||||
player.sendMessage(this.str("Usage: /leave. " +
|
||||
"Must be in a team already."));
|
||||
} else {
|
||||
Team playerTeam = this.getPlayerTeam(player.getName());
|
||||
playerTeam.removePlayer(player.getName());
|
||||
playerTeam.resetSign();
|
||||
|
||||
Warzone zone = this.warzone(player.getLocation());
|
||||
if(zone.getLobby() != null) {
|
||||
zone.getLobby().resetTeamGateSign(playerTeam);
|
||||
}
|
||||
player.teleportTo(zone.getTeleport());
|
||||
if(zone.hasPlayerInventory(player.getName())) {
|
||||
zone.restorePlayerInventory(player);
|
||||
}
|
||||
player.sendMessage(this.str("Left the zone. Your inventory has (hopefully) been restored."));
|
||||
if(this.getWarHub() != null) {
|
||||
this.getWarHub().resetZoneSign(zone);
|
||||
}
|
||||
Warzone zone = getPlayerTeamWarzone(player.getName());
|
||||
zone.handlePlayerLeave(player, zone.getTeleport());
|
||||
}
|
||||
}
|
||||
|
||||
@ -301,11 +292,7 @@ public class War extends JavaPlugin {
|
||||
Team playerTeam = this.getPlayerTeam(player.getName());
|
||||
Warzone playerWarzone = getPlayerTeamWarzone(player.getName());
|
||||
if(playerTeam != null) { // was in zone
|
||||
playerTeam.removePlayer(player.getName());
|
||||
}
|
||||
if(playerWarzone != null) {
|
||||
playerWarzone.getLobby().resetTeamGateSign(playerTeam);
|
||||
this.getWarHub().resetZoneSign(playerWarzone); // gotta see i just left
|
||||
playerWarzone.handlePlayerLeave(player, this.getWarHub().getLocation());
|
||||
}
|
||||
player.teleportTo(this.getWarHub().getLocation());
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ public class WarBlockListener extends BlockListener {
|
||||
Player player = event.getPlayer();
|
||||
Block block = event.getBlock();
|
||||
boolean captured = false;
|
||||
if(player != null) {
|
||||
if(player != null && block != null) {
|
||||
Team team = war.getPlayerTeam(player.getName());
|
||||
Warzone zone = war.getPlayerTeamWarzone(player.getName());
|
||||
boolean isZoneMaker = war.isZoneMaker(player);
|
||||
@ -45,27 +45,35 @@ public class WarBlockListener extends BlockListener {
|
||||
t.teamcast(war.str("Monument " + monument.getName() + " has been captured by team " + team.getName() + "."));
|
||||
}
|
||||
|
||||
captured = true; // important otherwise cancelled down a few line by isImportantblock
|
||||
return; // important otherwise cancelled down a few line by isImportantblock
|
||||
} else {
|
||||
player.sendMessage(war.str("You can't capture a monument without a block of your team's material. Get one from your team spawn."));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(!captured) {
|
||||
if(zone != null && zone.isImportantBlock(block) && !isZoneMaker){
|
||||
player.sendMessage(war.str("Can't build here."));
|
||||
event.setCancelled(true);
|
||||
}
|
||||
// protect warzone lobbies
|
||||
if(block != null) {
|
||||
for(Warzone wz: war.getWarzones()) {
|
||||
if(wz.getLobby() != null && wz.getLobby().getVolume().contains(block) && !isZoneMaker) {
|
||||
player.sendMessage(war.str("Can't build here."));
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
if(zone != null && zone.isImportantBlock(block) && !isZoneMaker){
|
||||
player.sendMessage(war.str("Can't build here."));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
// protect warzone lobbies
|
||||
if(block != null) {
|
||||
for(Warzone wz: war.getWarzones()) {
|
||||
if(wz.getLobby() != null && wz.getLobby().getVolume().contains(block) && !isZoneMaker) {
|
||||
player.sendMessage(war.str("Can't build here."));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// protect the hub
|
||||
if(war.getWarHub() != null && war.getWarHub().getVolume().contains(block)) {
|
||||
player.sendMessage(war.str("Can't build here."));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -81,6 +89,7 @@ public class WarBlockListener extends BlockListener {
|
||||
// can't actually destroy blocks in a warzone if not part of a team
|
||||
player.sendMessage(war.str("Can't destroy part of a warzone if you're not in a team."));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
} else if(team != null && block != null && warzone != null
|
||||
&& warzone.isMonumentCenterBlock(block)){
|
||||
Monument monument = warzone.getMonumentFromCenterBlock(block);
|
||||
@ -92,16 +101,19 @@ public class WarBlockListener extends BlockListener {
|
||||
}
|
||||
monument.uncapture();
|
||||
}
|
||||
return;
|
||||
}else if(warzone != null && warzone.isImportantBlock(block) && !isZoneMaker) {
|
||||
if(team != null && team.getVolume().contains(block)) {
|
||||
if(player.getInventory().contains(team.getMaterial())) {
|
||||
player.sendMessage(war.str("You already have a " + team.getName() + " block."));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
// let team members loot one block the spawn for monument captures
|
||||
} else if (!warzone.isMonumentCenterBlock(block)){
|
||||
player.sendMessage(war.str("Can't destroy this."));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@ -111,9 +123,17 @@ public class WarBlockListener extends BlockListener {
|
||||
if(zone.getLobby().getVolume().contains(block)) {
|
||||
player.sendMessage(war.str("Can't destroy this."));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// protect the hub
|
||||
if(war.getWarHub() != null && war.getWarHub().getVolume().contains(block)) {
|
||||
player.sendMessage(war.str("Can't destroy this."));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,6 @@ import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByProjectileEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.EntityListener;
|
||||
|
||||
import com.tommytony.war.Team;
|
||||
|
@ -40,19 +40,9 @@ public class WarPlayerListener extends PlayerListener {
|
||||
Team team = war.getPlayerTeam(player.getName());
|
||||
if(team != null) {
|
||||
Warzone zone = war.getPlayerTeamWarzone(player.getName());
|
||||
if(zone != null && zone.hasPlayerInventory(player.getName())) {
|
||||
player.teleportTo(zone.getTeleport());
|
||||
zone.restorePlayerInventory(player);
|
||||
if(zone.getLobby() != null) {
|
||||
zone.getLobby().resetTeamGateSign(team);
|
||||
}
|
||||
if(zone != null) {
|
||||
zone.handlePlayerLeave(player, zone.getTeleport());
|
||||
}
|
||||
team.removePlayer(player.getName());
|
||||
team.resetSign();
|
||||
if(war.getWarHub() != null) {
|
||||
war.getWarHub().resetZoneSign(zone);
|
||||
}
|
||||
player.sendMessage(war.str("You have left the warzone. Your inventory has (hopefully) been restored."));
|
||||
}
|
||||
}
|
||||
|
||||
@ -235,19 +225,9 @@ public class WarPlayerListener extends PlayerListener {
|
||||
// same as leave, except using event.setFrom and cancelling even .. don't ask me, see NetServerHandler code
|
||||
Team playerTeam = war.getPlayerTeam(player.getName());
|
||||
if(playerTeam != null) {
|
||||
playerTeam.removePlayer(player.getName());
|
||||
playerTeam.resetSign();
|
||||
event.setFrom(playerWarzone.getTeleport());
|
||||
player.teleportTo(playerWarzone.getTeleport());
|
||||
playerWarzone.handlePlayerLeave(player, playerWarzone.getTeleport());
|
||||
event.setCancelled(true);
|
||||
playerWarzone.restorePlayerInventory(player);
|
||||
if(playerWarzone.getLobby() != null) {
|
||||
playerWarzone.getLobby().resetTeamGateSign(playerTeam);
|
||||
}
|
||||
player.sendMessage(war.str("Left the zone. Your inventory has (hopefully) been restored."));
|
||||
if(war.getWarHub() != null) {
|
||||
war.getWarHub().resetZoneSign(locZone);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -444,17 +444,22 @@ public class Warzone {
|
||||
public void keepPlayerInventory(Player player) {
|
||||
PlayerInventory inventory = player.getInventory();
|
||||
ItemStack[] contents = inventory.getContents();
|
||||
inventories.put(player.getName(), contents);
|
||||
inventories.put(player.getName(), contents);
|
||||
}
|
||||
|
||||
public void restorePlayerInventory(Player player) {
|
||||
ItemStack[] originalContents = inventories.remove(player.getName());
|
||||
PlayerInventory playerInv = player.getInventory();
|
||||
if(originalContents != null) {
|
||||
PlayerInventory playerInv = player.getInventory();
|
||||
playerInv.clear();
|
||||
playerInv.setHelmet(new ItemStack(0));
|
||||
playerInv.setContents(originalContents);
|
||||
for(ItemStack item : originalContents) {
|
||||
if(item.getTypeId() != 0) {
|
||||
playerInv.addItem(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
// BUKKIT
|
||||
// playerInv.setHelmet(new ItemStack(Material.AIR));
|
||||
}
|
||||
|
||||
public boolean hasMonument(String monumentName) {
|
||||
@ -773,5 +778,28 @@ public class Warzone {
|
||||
return drawZoneOutline;
|
||||
}
|
||||
|
||||
public void handlePlayerLeave(Player player, Location destination) {
|
||||
Team playerTeam = war.getPlayerTeam(player.getName());
|
||||
if(playerTeam !=null) {
|
||||
Warzone zone = war.getPlayerTeamWarzone(player.getName());
|
||||
playerTeam.removePlayer(player.getName());
|
||||
playerTeam.resetSign();
|
||||
if(zone != null) {
|
||||
if(zone.getLobby() != null) {
|
||||
zone.getLobby().resetTeamGateSign(playerTeam);
|
||||
}
|
||||
player.teleportTo(destination);
|
||||
if(zone.hasPlayerInventory(player.getName())) {
|
||||
zone.restorePlayerInventory(player);
|
||||
}
|
||||
player.sendMessage(war.str("Left the zone. Your inventory has (hopefully) been restored."));
|
||||
if(war.getWarHub() != null) {
|
||||
war.getWarHub().resetZoneSign(zone);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: War
|
||||
version: 0.4 (Montgomery)
|
||||
version: 0.5 (Rommel)
|
||||
description: Lets you create team deathmatch arenas (warzones) for a more structured PVP experience.
|
||||
author: tommytony
|
||||
website: war.tommytony.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: War
|
||||
version: 0.4 (Montgomery)
|
||||
version: 0.5 (Rommel)
|
||||
description: Lets you create team deathmatch arenas (warzones) for a more structured PVP experience.
|
||||
author: tommytony
|
||||
website: war.tommytony.com
|
||||
|
Loading…
Reference in New Issue
Block a user