1
0
mirror of https://e.coding.net/circlecloud/Residence.git synced 2025-11-24 21:46:16 +00:00

移除多余的Flag 以子插件的形式使用...

Signed-off-by: j502647092 <jtb1@163.com>
This commit is contained in:
j502647092
2015-11-01 02:29:07 +08:00
parent 0110c01726
commit 4609b8ba1f
5 changed files with 2 additions and 166 deletions

View File

@@ -1,112 +0,0 @@
package cn.citycraft.Residence.listeners.flag;
import java.util.HashMap;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import com.bekvon.bukkit.residence.event.ResidenceChangedEvent;
import com.bekvon.bukkit.residence.event.ResidenceDeleteEvent;
import com.bekvon.bukkit.residence.event.ResidenceFlagChangeEvent;
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
import com.bekvon.bukkit.residence.protection.FlagPermissions;
import com.bekvon.bukkit.residence.protection.ResidencePermissions;
import cn.citycraft.Residence.ResidenceMain;
public class ResidenceFlyListener implements Listener {
HashMap<Player, Player> fall = new HashMap<Player, Player>();
ResidenceMain plugin;
public ResidenceFlyListener(final ResidenceMain plugin) {
this.plugin = plugin;
FlagPermissions.addFlag("fly");
FlagPermissions.addResidenceOnlyFlag("fly");
}
@EventHandler(ignoreCancelled = true)
public void FlagChange(final ResidenceFlagChangeEvent e) {
final ClaimedResidence res = e.getResidence();
for (final Player p : res.getPlayersInResidence()) {
if (!permCheck(p)) {
if (!resPermCheck(res, p)) {
ChangePlayerFly(p, false);
} else {
ChangePlayerFly(p, true);
}
}
}
}
// ResidenceDeleteEvent.class
// ResidenceFlagChangeEvent.class
public void onFallDamage(final EntityDamageEvent e) {
if (e.getEntity() instanceof Player) {
final Player p = (Player) e.getEntity();
if (e.getCause() == DamageCause.FALL) {
if (p == fall.get(p)) {
fall.remove(p);
e.setCancelled(true);
}
}
}
}
@EventHandler(ignoreCancelled = true)
public void resChange(final ResidenceChangedEvent event) {
final Player player = event.getPlayer();
final ClaimedResidence resto = event.getTo();
if (!permCheck(player)) {
if (!resPermCheck(resto, player)) {
ChangePlayerFly(player, false);
} else {
ChangePlayerFly(player, true);
}
}
}
@EventHandler(ignoreCancelled = true)
public void ResDelete(final ResidenceDeleteEvent e) {
final ClaimedResidence res = e.getResidence();
for (final Player p : res.getPlayersInResidence()) {
if (!permCheck(p)) {
ChangePlayerFly(p, false);
}
}
}
void ChangePlayerFly(final Player p, final boolean fly) {
if (p.getAllowFlight() && !fly) {
if (p.isFlying()) {
fall.put(p, p);
}
p.setAllowFlight(false);
p.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", "fly"));
}
if (!p.getAllowFlight() && fly) {
if (p == fall.get(p)) {
fall.remove(p);
}
p.setAllowFlight(true);
}
}
boolean permCheck(final Player p) {
return p.hasPermission("resfly.ignore") || p.isOp() || p.getGameMode() == GameMode.CREATIVE;
}
boolean resPermCheck(final ClaimedResidence res, final Player p) {
if (res == null) {
return false;
}
final ResidencePermissions perms = res.getPermissions();
return perms.playerHas(p.getName(), "fly", false);
}
}

View File

@@ -1,48 +0,0 @@
package cn.citycraft.Residence.listeners.flag;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
import com.bekvon.bukkit.residence.protection.FlagPermissions;
import cn.citycraft.Residence.ResidenceMain;
import cn.citycraft.Residence.manager.EntityManager;
public class ResidenceInteractListener implements Listener {
EntityManager entitymanager;
ResidenceMain plugin;
public ResidenceInteractListener(final ResidenceMain plugin) {
this.plugin = plugin;
this.entitymanager = plugin.getEntityManager();
FlagPermissions.addFlag("interact");
FlagPermissions.addFlagToFlagGroup("trusted", "interact");
}
@EventHandler(priority = EventPriority.LOWEST)
public void onInteract(final PlayerInteractEvent e) {
final Player p = e.getPlayer();
if (plugin.isResAdminOn(p)) {
return;
}
final ItemStack it = p.getItemInHand();
if (it == null || it.getType() == Material.AIR) {
return;
}
final Location loc = e.getClickedBlock().getLocation();
final ClaimedResidence res = plugin.getResidenceManager().getByLoc(loc);
if (res == null) {
return;
}
final FlagPermissions hasPerm = plugin.getPermsByLocForPlayer(loc, p);
e.setCancelled(hasPerm.has("interact", true));
}
}

View File

@@ -9,8 +9,6 @@ import org.bukkit.plugin.PluginManager;
import cn.citycraft.PluginHelper.config.FileConfig;
import cn.citycraft.Residence.ResidenceMain;
import cn.citycraft.Residence.listeners.flag.ResidenceAnimalKillingListener;
import cn.citycraft.Residence.listeners.flag.ResidenceFlyListener;
import cn.citycraft.Residence.listeners.flag.ResidenceInteractListener;
public class FlagManager {
FileConfig config;
@@ -30,9 +28,7 @@ public class FlagManager {
flagmap = new HashMap<Boolean, Listener>();
flagmap.put(config.getBoolean("Flag.Fly", true), new ResidenceFlyListener(plugin));
flagmap.put(config.getBoolean("Flag.AnimalKilling", true), new ResidenceAnimalKillingListener(plugin));
flagmap.put(config.getBoolean("Flag.Interact", false), new ResidenceInteractListener(plugin));
for (final Entry<Boolean, Listener> fm : flagmap.entrySet()) {
if (fm.getKey()) {