Check for relation when a player tries to create a destination portal in claimed land. Adds #204.
This commit is contained in:
parent
b666c6f630
commit
0a80b79321
@ -6,6 +6,7 @@ import com.massivecraft.factions.struct.Relation;
|
||||
import com.massivecraft.factions.util.MiscUtil;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.TravelAgent;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.*;
|
||||
import org.bukkit.entity.minecart.ExplosiveMinecart;
|
||||
@ -17,6 +18,7 @@ import org.bukkit.event.hanging.HangingBreakByEntityEvent;
|
||||
import org.bukkit.event.hanging.HangingBreakEvent;
|
||||
import org.bukkit.event.hanging.HangingBreakEvent.RemoveCause;
|
||||
import org.bukkit.event.hanging.HangingPlaceEvent;
|
||||
import org.bukkit.event.player.PlayerPortalEvent;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
import org.bukkit.projectiles.ProjectileSource;
|
||||
@ -522,6 +524,34 @@ public class FactionsEntityListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onTravel(PlayerPortalEvent event) {
|
||||
if (!P.p.getConfig().getBoolean("portals.limit", false)) {
|
||||
return; // Don't do anything if they don't want us to.
|
||||
}
|
||||
|
||||
TravelAgent agent = event.getPortalTravelAgent();
|
||||
|
||||
// If they aren't able to find a portal, it'll try to create one.
|
||||
if (event.useTravelAgent() && agent.getCanCreatePortal() && agent.findPortal(event.getTo()) == null) {
|
||||
FLocation loc = new FLocation(event.getTo());
|
||||
Faction faction = Board.getInstance().getFactionAt(loc);
|
||||
if (faction.isNone()) {
|
||||
return; // We don't care about wilderness.
|
||||
} else if (!faction.isNormal() && !event.getPlayer().isOp()) {
|
||||
// Don't let non ops make portals in safezone or warzone.
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
FPlayer fp = FPlayers.getInstance().getByPlayer(event.getPlayer());
|
||||
String mininumRelation = P.p.getConfig().getString("portals.minimum-relation", "MEMBER"); // Defaults to Neutral if typed wrong.
|
||||
if (!fp.getFaction().getRelationTo(faction).isAtLeast(Relation.fromString(mininumRelation))) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean stopEndermanBlockManipulation(Location loc) {
|
||||
if (loc == null) {
|
||||
return false;
|
||||
|
@ -30,6 +30,17 @@ findfactionsexploit:
|
||||
# This has always been neutral.
|
||||
default-relation: "neutral"
|
||||
|
||||
# Portal Creation
|
||||
# Do you want to limit portal creation?
|
||||
portals:
|
||||
limit: false # will disable the below check if set to false
|
||||
|
||||
# What should the minimum relation be to create a portal in territory?
|
||||
# Goes in the order of: ENEMY, NEUTRAL, ALLY, MEMBER.
|
||||
# Minimum relation allows that and all listed to the right to create portals.
|
||||
# Example: put ALLY to allow ALLY and MEMBER to be able to create portals.
|
||||
minimum-relation: MEMBER # If typed incorrectly, defaults to NEUTRAL.
|
||||
|
||||
### Hard Core Settings ###
|
||||
|
||||
# Warps
|
||||
|
Loading…
Reference in New Issue
Block a user