Tyzun
Старожил
- Баллы
- 153
- Имя в Minecraft
- _Tyzun_
Вот написал такой код:
Все работает, но когда кто-то пытается нанести урон кому-то в креативе или флае или годе то консоль загаживается разнообразными ошибками. Хоть и все пашет, но неприятно все же, в чем дело быть может?
Код:
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Entity;
import org.bukkit.entity.HumanEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.*********ventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
import com.earth2me.essentials.Essentials;
import ru.tehkode.permissions.bukkit.PermissionsEx;
public class AntiGodPvp extends JavaPlugin implements Listener {
public Essentials ess = null;
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);
}
private boolean hasPerm(Player player, String permission){
return PermissionsEx.getUser(player).has(permission);
}
@EventHandler
public void onPlayerDamage(EntityDamageByEntityEvent event) {
Entity defender = event.getEntity();
Entity attacker = event.getDamager();
if (((defender instanceof Player)) && ((attacker instanceof Player))) {
Player pl = (Player)event.getDamager();
if (pl.isFlying() && (!hasPerm(pl, "agp.allowflypvp"))) {
event.setCancelled(true);
}
}
}
@EventHandler
public void onPlayerDamageArrow(EntityDamageByEntityEvent event)
{
Entity defender = event.getEntity();
Entity damager = event.getDamager();
if (((defender instanceof Player)) && ((damager instanceof Arrow))) {
damager = ((Arrow)damager).getShooter();
if (((damager instanceof Player)) && (((Player)damager).isFlying()) && (!hasPerm((Player)damager, "agp.allowflyshot"))) {
event.setCancelled(true);
}
}
}
public boolean removeItemInHand(Player p, int item_id, int item_data, int item_amount){
item_id = 373;
item_amount = 1;
if ((p.getItemInHand() != null)&&
(p.getItemInHand().getTypeId()==item_id)&&
(p.getItemInHand().getAmount()>=item_amount)&&
((item_data<0)||(item_data==p.getItemInHand().getData().getData()))){
if (p.getItemInHand().getAmount()>item_amount) p.getItemInHand().setAmount(p.getItemInHand().getAmount()-item_amount);
else p.setItemInHand(new ItemStack (Material.AIR));
return true;
}
return false;
}
@EventHandler
public void onPlayerDamage2(EntityDamageByEntityEvent event) {
Entity defender = event.getEntity();
Entity attacker = event.getDamager();
if (((defender instanceof Player)) && ((attacker instanceof Player))) {
Player pl = (Player)event.getDamager();
if (pl.getGameMode() == GameMode.CREATIVE && (!hasPerm(pl, "agp.allowcreatpvp"))) {
event.setCancelled(true);
}
}
}
@EventHandler
public void onPlayerDamageArrow2(EntityDamageByEntityEvent event)
{
Entity defender = event.getEntity();
Entity damager = event.getDamager();
if (((defender instanceof Player)) && ((damager instanceof Arrow))) {
damager = ((Arrow)damager).getShooter();
if ((damager instanceof Player))
{
if (((HumanEntity)damager).getGameMode() == GameMode.CREATIVE && (!hasPerm((Player)damager, "agp.allowcreatshot"))) {
event.setCancelled(true);
}
}
}
}
@EventHandler
public void onPlayerDamage3(EntityDamageByEntityEvent event) {
Entity defender = event.getEntity();
Entity attacker = event.getDamager();
if (((defender instanceof Player)) && ((attacker instanceof Player))) {
Player pl = (Player)event.getDamager();
if (ess.getUser(attacker).isGodModeEnabled() && (!hasPerm(pl, "agp.allowgod"))) {
event.setCancelled(true);
}
}
}
@EventHandler
public void onPlayerDamageArrow3(EntityDamageByEntityEvent ev)
{
Entity defender = ev.getEntity();
Entity damager = ev.getDamager();
if (((defender instanceof Player)) && ((damager instanceof Arrow))) {
damager = ((Arrow)damager).getShooter();
if ((damager instanceof Player))
{
if (ess.getUser(damager).isGodModeEnabled() && (!hasPerm((Player)damager, "agp.allowgod"))) {
ev.setCancelled(true);
}
}
}
}
}