PeacefulSkies 1.0

Disable damage above a certain height.

  1. iPyronic
    A plugin requested by a user in the forums.
    https://www.spigotmc.org/threads/minimum-pvp-y-level-plugin-request.96389/#post-1056082

    No commands. No permissions.

    Config Options:
    Code (YAML):
    safeHeight: 110
    denyPvP
    : true
    denyEntitiesDamagingPlayers
    : false
    denyPlayersDamagingEntities
    : false
    denyMessage
    : "&4 No fighting here!"
    cancelAllDamage
    : false
    ignoreWorlds
    : []

    The denyMessage can be disabled by using:
    Code (YAML):
    denyMessage: ""

    Source for anyone that's curious:
    Code (Java):

    package net.nulll.uso.PeacefulSkies;

    import java.util.ArrayList;
    import java.util.List;

    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.entity.Player;
    import org.bukkit.entity.Projectile;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.event.entity.EntityDamageEvent;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.java.JavaPlugin;

    public final class PeacefulSkies extends JavaPlugin {
       
        int safeHeight = 0;
        boolean denyPvP = false;
        boolean denyEntitiesDamagingPlayers = false;
        boolean denyPlayersDamagingEntities = false;
        boolean cancelAllDamage = false;
        String denyMessage = null;
        List<String> ignoredWorlds = null;
       
        public void onEnable(){
           
            saveDefaultConfig();
            reloadConfig();
           
            safeHeight = getConfig().getInt("safeHeight");
            denyPvP = getConfig().getBoolean("denyPvP");
            denyEntitiesDamagingPlayers = getConfig().getBoolean("denyEntitiesDamagingPlayers");
            denyPlayersDamagingEntities = getConfig().getBoolean("denyPlayersDamagingEntities");
            cancelAllDamage = getConfig().getBoolean("cancelAllDamage");
            denyMessage = getConfig().getString("denyMessage");
            ignoredWorlds = new ArrayList<String>();
            List<String> caseConverter = getConfig().getStringList("ignoreWorlds");
            if(caseConverter==null){caseConverter = new ArrayList<String>();}
            for(String worldName : caseConverter){
                ignoredWorlds.add(worldName.toLowerCase());
            }
           
            Bukkit.getPluginManager().registerEvents(new Listener(){
                @EventHandler(priority = EventPriority.NORMAL)
                private void onPlayerDamaged(EntityDamageByEntityEvent event){
                    if(event.getEntity().getLocation().getY() > safeHeight && ignoredWorlds.contains(event.getEntity().getWorld().getName().toLowerCase())==false){
                        if(event.getEntity() instanceof Player){
                            if((event.getDamager() instanceof Player || (event.getDamager() instanceof Projectile && ((Projectile)event.getDamager()).getShooter() instanceof Player)) && denyPvP){
                                event.setCancelled(true);
                                if(denyMessage != null && denyMessage.length() > 0){
                                    if(event.getDamager() instanceof Player){
                                        event.getDamager().sendMessage(format(denyMessage));
                                    }else if(event.getDamager() instanceof Projectile && ((Projectile)event.getDamager()).getShooter() instanceof Player){
                                        ((Player)((Projectile)event.getDamager()).getShooter()).sendMessage(format(denyMessage));
                                    }
                                }
                            }else if((event.getDamager() instanceof Player==false && (event.getDamager() instanceof Projectile==false || ((Projectile)event.getDamager()).getShooter() instanceof Player==false)) && denyEntitiesDamagingPlayers){
                                event.setCancelled(true);
                            }
                        }else if((event.getDamager() instanceof Player || (event.getDamager() instanceof Projectile && ((Projectile)event.getDamager()).getShooter() instanceof Player)) && denyPlayersDamagingEntities){
                            event.setCancelled(true);
                            if(denyMessage != null && denyMessage.length() > 0){
                                if(event.getDamager() instanceof Player){
                                    event.getDamager().sendMessage(format(denyMessage));
                                }else if(event.getDamager() instanceof Projectile && ((Projectile)event.getDamager()).getShooter() instanceof Player){
                                    ((Player)((Projectile)event.getDamager()).getShooter()).sendMessage(format(denyMessage));
                                }
                            }
                        }
                    }
                }
                @EventHandler(priority = EventPriority.NORMAL)
                private void onPlayerDamaged(EntityDamageEvent event){
                    if(event.getEntity().getLocation().getY() > safeHeight && ignoredWorlds.contains(event.getEntity().getWorld().getName().toLowerCase())==false){
                        if(event.getEntity() instanceof Player){
                            if(cancelAllDamage){
                                event.setCancelled(true);
                            }
                        }
                    }
                }
            },this);
        }
       
        @Override
        public void onDisable(){
            org.bukkit.event.HandlerList.unregisterAll(this);
        }
       
        private String format(String input){
            return ChatColor.translateAlternateColorCodes('&', input);
        }
    }
     
    tuminh6396 and joehot200 like this.