Updates in preparation for 1.1.7 release:
* /f map has been updated to fit inside the new Bukkit line-width limits (39 tiles wide instead of 49) * Players who aren't currently in a faction should no longer get "Person left your faction" messages when others join a faction * Attempt at simple workaround for error related to NPCs from Citizens plugin * Placement and removal of paintings is now prevented if you're in another faction's territory
This commit is contained in:
parent
8a4463b599
commit
a02fcca54d
@ -64,7 +64,7 @@ public class Conf {
|
|||||||
public static transient Set<CreatureType> safeZoneNerfedCreatureTypes = new HashSet<CreatureType>();
|
public static transient Set<CreatureType> safeZoneNerfedCreatureTypes = new HashSet<CreatureType>();
|
||||||
|
|
||||||
public static transient int mapHeight = 8;
|
public static transient int mapHeight = 8;
|
||||||
public static transient int mapWidth = 49;
|
public static transient int mapWidth = 39;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
territoryProtectedMaterials.add(Material.WOODEN_DOOR);
|
territoryProtectedMaterials.add(Material.WOODEN_DOOR);
|
||||||
|
@ -371,10 +371,13 @@ public class FPlayer {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (myFaction.isNormal()) {
|
||||||
myFaction.sendMessage(this.getNameAndRelevant(myFaction) + Conf.colorSystem + " left your faction.");
|
myFaction.sendMessage(this.getNameAndRelevant(myFaction) + Conf.colorSystem + " left your faction.");
|
||||||
|
}
|
||||||
|
|
||||||
this.resetFactionData();
|
this.resetFactionData();
|
||||||
|
|
||||||
if (myFaction.getFPlayers().size() == 0) {
|
if (myFaction.isNormal() && myFaction.getFPlayers().size() == 0) {
|
||||||
// Remove this faction
|
// Remove this faction
|
||||||
for (FPlayer fplayer : FPlayer.getAllOnline()) {
|
for (FPlayer fplayer : FPlayer.getAllOnline()) {
|
||||||
fplayer.sendMessage("The faction "+myFaction.getTag(fplayer)+Conf.colorSystem+" was disbanded.");
|
fplayer.sendMessage("The faction "+myFaction.getTag(fplayer)+Conf.colorSystem+" was disbanded.");
|
||||||
|
@ -151,6 +151,8 @@ public class Factions extends JavaPlugin {
|
|||||||
pm.registerEvent(Event.Type.ENTITY_EXPLODE, this.entityListener, Event.Priority.Normal, this);
|
pm.registerEvent(Event.Type.ENTITY_EXPLODE, this.entityListener, Event.Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.CREATURE_SPAWN, this.entityListener, Event.Priority.Normal, this);
|
pm.registerEvent(Event.Type.CREATURE_SPAWN, this.entityListener, Event.Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.ENTITY_TARGET, this.entityListener, Event.Priority.Normal, this);
|
pm.registerEvent(Event.Type.ENTITY_TARGET, this.entityListener, Event.Priority.Normal, this);
|
||||||
|
pm.registerEvent(Event.Type.PAINTING_BREAK, this.entityListener, Event.Priority.Normal, this);
|
||||||
|
pm.registerEvent(Event.Type.PAINTING_PLACE, this.entityListener, Event.Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.BLOCK_BREAK, this.blockListener, Event.Priority.Normal, this);
|
pm.registerEvent(Event.Type.BLOCK_BREAK, this.blockListener, Event.Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.BLOCK_DAMAGE, this.blockListener, Event.Priority.Normal, this);
|
pm.registerEvent(Event.Type.BLOCK_DAMAGE, this.blockListener, Event.Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.BLOCK_PLACE, this.blockListener, Event.Priority.Normal, this);
|
pm.registerEvent(Event.Type.BLOCK_PLACE, this.blockListener, Event.Priority.Normal, this);
|
||||||
|
@ -15,8 +15,12 @@ import org.bukkit.event.entity.EntityDeathEvent;
|
|||||||
import org.bukkit.event.entity.EntityExplodeEvent;
|
import org.bukkit.event.entity.EntityExplodeEvent;
|
||||||
import org.bukkit.event.entity.EntityListener;
|
import org.bukkit.event.entity.EntityListener;
|
||||||
import org.bukkit.event.entity.EntityTargetEvent;
|
import org.bukkit.event.entity.EntityTargetEvent;
|
||||||
|
import org.bukkit.event.painting.PaintingBreakByEntityEvent;
|
||||||
|
import org.bukkit.event.painting.PaintingBreakEvent;
|
||||||
|
import org.bukkit.event.painting.PaintingPlaceEvent;
|
||||||
import org.mcteam.factions.Board;
|
import org.mcteam.factions.Board;
|
||||||
import org.mcteam.factions.Conf;
|
import org.mcteam.factions.Conf;
|
||||||
|
import org.mcteam.factions.Factions;
|
||||||
import org.mcteam.factions.FLocation;
|
import org.mcteam.factions.FLocation;
|
||||||
import org.mcteam.factions.FPlayer;
|
import org.mcteam.factions.FPlayer;
|
||||||
import org.mcteam.factions.Faction;
|
import org.mcteam.factions.Faction;
|
||||||
@ -96,7 +100,7 @@ public class FactionsEntityListener extends EntityListener {
|
|||||||
Entity damagee = sub.getEntity();
|
Entity damagee = sub.getEntity();
|
||||||
int damage = sub.getDamage();
|
int damage = sub.getDamage();
|
||||||
|
|
||||||
if ( ! (damagee instanceof Player)) {
|
if ( ! (damagee instanceof Player) || damagee.getLocation() == null) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -182,4 +186,71 @@ public class FactionsEntityListener extends EntityListener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPaintingBreak(PaintingBreakEvent event)
|
||||||
|
{
|
||||||
|
if (event.isCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (! (event instanceof PaintingBreakByEntityEvent)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Entity breaker = ((PaintingBreakByEntityEvent)event).getRemover();
|
||||||
|
if (! (breaker instanceof Player)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FLocation loc = new FLocation(event.getPainting().getLocation());
|
||||||
|
|
||||||
|
if ( ! this.playerCanDoPaintings((Player)breaker, loc, "remove")) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPaintingPlace(PaintingPlaceEvent event)
|
||||||
|
{
|
||||||
|
if (event.isCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! this.playerCanDoPaintings(event.getPlayer(), new FLocation(event.getBlock()), "place")) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean playerCanDoPaintings(Player player, FLocation loc, String action) {
|
||||||
|
|
||||||
|
if (Conf.adminBypassPlayers.contains(player.getName())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Faction otherFaction = Board.getFactionAt(loc);
|
||||||
|
|
||||||
|
if (otherFaction.isNone()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
FPlayer me = FPlayer.get(player);
|
||||||
|
|
||||||
|
if (otherFaction.isSafeZone()) {
|
||||||
|
if (Factions.hasPermManageSafeZone(player) || !Conf.safeZoneDenyBuild) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
me.sendMessage("You can't "+action+" paintings in a safe zone.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Faction myFaction = me.getFaction();
|
||||||
|
|
||||||
|
// Cancel if we are not in our own territory
|
||||||
|
if (myFaction != otherFaction) {
|
||||||
|
me.sendMessage("You can't "+action+" paintings in the territory of "+otherFaction.getTag(myFaction));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user