Помогите Рефлексия [Решено(Оооо дааа)]

А, я тебя понял. Да, там можно изменить чутка.
 
Финальный вариант.
Java:
           CraftEntity craft_entity = (CraftEntity) event.getDamager();
            net.minecraft.server.v1_6_R3.Entity original_entity = craft_entity.getHandle();
            if (original_entity.getClass().getName().endsWith(ENTITYBULLET)) {
                net.minecraft.server.v1_6_R3.Entity owner = getField(original_entity.getClass(), original_entity, "owner");
                Entity bukkit_entity = owner.getBukkitEntity();
                if (bukkit_entity instanceof Player) {
                    p = (Player) bukkit_entity;
                    if (!isEnablePVP(p)) {
                        EffectAndGuardMsg(p);
                        event.setCancelled(true);
                    }
                }
 
Финальный вариант.
Java:
           CraftEntity craft_entity = (CraftEntity) event.getDamager();
            net.minecraft.server.v1_6_R3.Entity original_entity = craft_entity.getHandle();
            if (original_entity.getClass().getName().endsWith(ENTITYBULLET)) {
                net.minecraft.server.v1_6_R3.Entity owner = getField(original_entity.getClass(), original_entity, "owner");
                Entity bukkit_entity = owner.getBukkitEntity();
                if (bukkit_entity instanceof Player) {
                    p = (Player) bukkit_entity;
                    if (!isEnablePVP(p)) {
                        EffectAndGuardMsg(p);
                        event.setCancelled(true);
                    }
                }
И нужно учесть неожиданный выход игрока, где ссылка на owner обнулится. А то можно словить нпе.
 
minecraft Entity прям делается null если игрок ливает?
Конечно, иначе утечка памяти будет. Или сервер решит что игрок еще играет.
Я тут вспомнил баг какой то версии мспс, где можно было зайти одним и тем же игроком 2 раза :D.
 
brRdK1VuJV7Pv2.jpg
Какая жесть.
 
Назад
Верх