Sueta

PeacefulSkies

1.0

Disable damage above a certain height.

·Plugin

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:

safeHeight: 110
denyPvP: true
denyEntitiesDamagingPlayers: false
denyPlayersDamagingEntities: false
denyMessage: "&4 No fighting here!"
cancelAllDamage: false
ignoreWorlds: []

The denyMessage can be disabled by using:

denyMessage: ""

Source for anyone that's curious:

Spoiler
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);
    }
}

Similar projects

Plugin →