mirror of
https://e.coding.net/circlecloud/Residence.git
synced 2025-11-24 21:46:16 +00:00
2
pom.xml
2
pom.xml
@@ -55,7 +55,7 @@
|
|||||||
</build>
|
</build>
|
||||||
<properties>
|
<properties>
|
||||||
<jenkins.url>http://ci.citycraft.cn:8080</jenkins.url>
|
<jenkins.url>http://ci.citycraft.cn:8080</jenkins.url>
|
||||||
<update.description>&e还原protection包路径 &a兼容部分老插件...</update.description>
|
<update.description>&e还原protection包路径 &a兼容部分老插件 &c移除冗余Flag...</update.description>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
</properties>
|
</properties>
|
||||||
<repositories>
|
<repositories>
|
||||||
|
|||||||
@@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -9,8 +9,6 @@ import org.bukkit.plugin.PluginManager;
|
|||||||
import cn.citycraft.PluginHelper.config.FileConfig;
|
import cn.citycraft.PluginHelper.config.FileConfig;
|
||||||
import cn.citycraft.Residence.ResidenceMain;
|
import cn.citycraft.Residence.ResidenceMain;
|
||||||
import cn.citycraft.Residence.listeners.flag.ResidenceAnimalKillingListener;
|
import cn.citycraft.Residence.listeners.flag.ResidenceAnimalKillingListener;
|
||||||
import cn.citycraft.Residence.listeners.flag.ResidenceFlyListener;
|
|
||||||
import cn.citycraft.Residence.listeners.flag.ResidenceInteractListener;
|
|
||||||
|
|
||||||
public class FlagManager {
|
public class FlagManager {
|
||||||
FileConfig config;
|
FileConfig config;
|
||||||
@@ -30,9 +28,7 @@ public class FlagManager {
|
|||||||
|
|
||||||
flagmap = new HashMap<Boolean, Listener>();
|
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.AnimalKilling", true), new ResidenceAnimalKillingListener(plugin));
|
||||||
flagmap.put(config.getBoolean("Flag.Interact", false), new ResidenceInteractListener(plugin));
|
|
||||||
|
|
||||||
for (final Entry<Boolean, Listener> fm : flagmap.entrySet()) {
|
for (final Entry<Boolean, Listener> fm : flagmap.entrySet()) {
|
||||||
if (fm.getKey()) {
|
if (fm.getKey()) {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
name: ${project.artifactId}
|
name: ${project.artifactId}
|
||||||
description: ${project.description}
|
description: ${project.description}
|
||||||
main: ${project.groupId}.${project.artifactId}.${project.artifactId}Main
|
main: ${project.groupId}.${project.artifactId}.${project.artifactId}Main
|
||||||
version: ${project.version}
|
version: ${project.version}-Build#${env.BUILD_NUMBER}
|
||||||
website: ${jenkins.url}/job/${project.artifactId}/
|
website: ${jenkins.url}/job/${project.artifactId}/
|
||||||
authors: [bekvon,nate302,t00thpick1,喵♂呜]
|
authors: [bekvon,nate302,t00thpick1,喵♂呜]
|
||||||
contributors: [lemon42,smbarbour,inorixu,Shayana_fr]
|
contributors: [lemon42,smbarbour,inorixu,Shayana_fr]
|
||||||
|
|||||||
Reference in New Issue
Block a user