mirror of
https://github.com/MassiveCraft/Factions.git
synced 2024-11-05 01:59:46 +01:00
commit
9ecb4f532a
@ -422,6 +422,20 @@ public class MConf extends Entity<MConf>
|
||||
EventFactionsChunkChangeType.PILLAGE, false
|
||||
);
|
||||
|
||||
public Map<Rel, Boolean> lwcAllowIn = MUtil.map(
|
||||
Rel.ALLY, false,
|
||||
Rel.ENEMY, false,
|
||||
Rel.NEUTRAL, false,
|
||||
Rel.TRUCE, false
|
||||
);
|
||||
|
||||
public Set<String> lwcDisallowIn = MUtil.set(
|
||||
MConf.get().factionIdWarzone,
|
||||
MConf.get().factionIdSafezone,
|
||||
MConf.get().factionIdNone
|
||||
);
|
||||
|
||||
|
||||
// -------------------------------------------- //
|
||||
// INTEGRATION: ECONOMY
|
||||
// -------------------------------------------- //
|
||||
|
@ -15,13 +15,17 @@ import org.bukkit.event.Listener;
|
||||
|
||||
import com.griefcraft.lwc.LWC;
|
||||
import com.griefcraft.model.Protection;
|
||||
import com.griefcraft.scripting.event.LWCProtectionRegisterEvent;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.entity.BoardColl;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.event.EventFactionsChunkChange;
|
||||
import com.massivecraft.factions.event.EventFactionsChunkChangeType;
|
||||
import com.massivecraft.massivecore.ps.PS;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
|
||||
|
||||
public class EngineLwc implements Listener
|
||||
@ -66,6 +70,43 @@ public class EngineLwc implements Listener
|
||||
removeAlienProtections(event.getChunk(), newFaction);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onCreateProtection(LWCProtectionRegisterEvent event)
|
||||
{
|
||||
Faction factionHere = BoardColl.get().getFactionAt(PS.valueOf(event.getBlock()));
|
||||
MPlayer mplayer = MPlayer.get(event.getPlayer());
|
||||
|
||||
Rel relation = factionHere.getRelationTo(mplayer.getFaction());
|
||||
|
||||
Boolean notAllowedHere = false;
|
||||
|
||||
// Are they allowed to have LWC protections in this faction land
|
||||
if(MConf.get().lwcDisallowIn.contains(factionHere.getId())) {
|
||||
notAllowedHere = true;
|
||||
}
|
||||
|
||||
// Should we ignore the relationship check?
|
||||
Boolean ignore =
|
||||
factionHere.getId().equals(MConf.get().factionIdNone) ||
|
||||
factionHere.getId().equals(MConf.get().factionIdSafezone) ||
|
||||
factionHere.getId().equals(MConf.get().factionIdWarzone);
|
||||
|
||||
if(!ignore) {
|
||||
if(!MConf.get().lwcAllowIn.containsKey(relation)) {
|
||||
notAllowedHere = true;
|
||||
} else {
|
||||
if(!MConf.get().lwcAllowIn.get(relation)) {
|
||||
notAllowedHere = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(notAllowedHere) {
|
||||
event.setCancelled(true);
|
||||
mplayer.msg(Txt.parse("<red>You cannot create this LWC protection in this faction."));
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// UTIL
|
||||
// -------------------------------------------- //
|
||||
@ -77,6 +118,22 @@ public class EngineLwc implements Listener
|
||||
{
|
||||
MPlayer owner = MPlayer.get(protection.getOwner());
|
||||
if (nonAliens.contains(owner)) continue;
|
||||
|
||||
// Compare the relationship to the faction
|
||||
Rel rel = owner.getRelationTo(faction);
|
||||
Boolean passRelationTest = true;
|
||||
|
||||
// If the relationship isn't in the MConf, consider it failed
|
||||
if(!MConf.get().lwcAllowIn.containsKey(rel)) {
|
||||
passRelationTest = false;
|
||||
} else {
|
||||
if(!MConf.get().lwcAllowIn.get(rel)) {
|
||||
passRelationTest = false;
|
||||
}
|
||||
}
|
||||
|
||||
if(!passRelationTest) continue;
|
||||
|
||||
protection.remove();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user