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 →Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
Emotecraft
Create your own emotes in Minecraft.
7.5MSueta
Simple Tpa
A simple tpa plugin which sends requests
5.4MSueta
Common Network
Forge and Fabric Unified Networking Solution
3.9MSueta
Set Home
A lightweight plugin for players to set their homes.
3.8MSueta