Помогите Самопис запрет ломать картины

pro100koder

Активный участник
Пользователь
Баллы
76
В общем, пишу небольшой самопис внутри кода своей миниигры (чтобы лишний раз WG не качать), но застопился на одной, наверное, очень простой проблеме... В EntityDamageByEntityEvent ломание картины/рамки/и т. п. не прослушивается. Как тогда запретить игрокам ломать картины и рамки? (Если подобная тема уже была, то не смог найти. Писал в яндексе "как запретить (сбивать/ломать/бить/ДАЖЕ ПИСАЛ ЕСТЬ, но это уже от нервов) картины java bukkit"), везде не то...
 
Н-да... Окей, сделал, но осталось (надеюсь) последнее: из рамок предметы выбивать можно. И это снова не вылавливается теми ивентами. Хотя догадываюсь, что через interact наверное можно... Окей, как?
 
Н-да... Окей, сделал, но осталось (надеюсь) последнее: из рамок предметы выбивать можно. И это снова не вылавливается теми ивентами. Хотя догадываюсь, что через interact наверное можно... Окей, как?
PlayerInteractEvent самый(вроде) нагружаемый ивент, и лучше уж костылить чем его юзать.
 
PlayerInteractEvent самый(вроде) нагружаемый ивент, и лучше уж костылить чем его юзать.
Тем не менее, у меня в коде уже есть interact, который нужен для других целей. Я мог бы туда присобачить этот запрет, тогда не будет лишней нагрузки, не так ли? Ну или какой костыль предлагаешь, чтобы запретить игрокам выбивать предметы из рамок? Хотя я знаю один вариант, вообще не юзать рамки на сервере. Но мои друзья их так любят, что просто убьются без своих рамок ободранных...
 
Тем не менее, у меня в коде уже есть interact, который нужен для других целей. Я мог бы туда присобачить этот запрет, тогда не будет лишней нагрузки, не так ли? Ну или какой костыль предлагаешь, чтобы запретить игрокам выбивать предметы из рамок? Хотя я знаю один вариант, вообще не юзать рамки на сервере. Но мои друзья их так любят, что просто убьются без своих рамок ободранных...
HangingBreakByEntityEvent
Только не сделай так чтобы картину можно было поставить, но нельзя сломать, иначе весь сервер в них будет.
Я не заметил что тебе уже ответили
 
Боже мой... Вот есть рамка. Вот она, красивая такая, весит на стенке. Вот в ней лежит какой-то предмет. Допустим, алмаз. Вот идёт такой грифер, хочет из этой рамки достать алмаз. ТЫК и нет алмаза в рамке. Теперь понятно? А нужно, чтобы после ТЫК ничего не происходило, кроме как сообщения в чате. И мне не нужно запрещать ставить рамки.
 
Боже мой... Вот есть рамка. Вот она, красивая такая, весит на стенке. Вот в ней лежит какой-то предмет. Допустим, алмаз. Вот идёт такой грифер, хочет из этой рамки достать алмаз. ТЫК и нет алмаза в рамке. Теперь понятно? А нужно, чтобы после ТЫК ничего не происходило, кроме как сообщения в чате. И мне не нужно запрещать ставить рамки.
Для предметов в рамке.
Код:
    @EventHandler
    public void on(EntityDamageByEntityEvent e) {
        if(e.getEntity().getType() ==  EntityType.ITEM_FRAME) {
            if(e.getDamager().getType() ==  EntityType.PLAYER) {
                e.setCancelled(true);
            }
            if(e.getDamager() instanceof Projectile) {
                Projectile p = (Projectile) e.getDamager();
                if(p.getShooter()==null) {
                    return;
                }
                if(p.getShooter() instanceof Player) {
                    e.setCancelled(true);
                } 
            }
        }
    }
Пустые рамки.
Код:
    @EventHandler
    public void on(HangingBreakByEntityEvent e) {
        if (e.getRemover().getType() == EntityType.PLAYER) {
            e.setCancelled(true);
        }
    }
Класс кубоид для самопЕс регионов https://github.com/alexandrage/Example/blob/master/src/Example/Cuboid.java
 
Последнее редактирование:
Для предметов в рамке.
Обожаю когда предметы с рамок дропаются после стрелы скелета или взрыва крипера. (WG действительно такое не блочил, у меня на сервере люди фейерверками вещи выбивали)
 
Всё, готово. Спасибо всем, кто помогал) Один вопросик на последок: есть ли какой-то чит, который "подделывает" креатив? Я слышал о таком, но не знаю, отправляет ли он на сервер инфу о том, что игрок в GameMode.CREATIVE?
 
Обожаю когда предметы с рамок дропаются после стрелы скелета или взрыва крипера. (WG действительно такое не блочил, у меня на сервере люди фейерверками вещи выбивали)
Про мобов речи не было. Это тоже чинится, при желании.
 
Я один не понимаю почему нельзя сделать так?
Код:
 @EventHandler
   public void on(EntityDamageByEntityEvent e) {
       if(e.getEntity().getType() ==  EntityType.ITEM_FRAME) {
           e.setCancelled(true);
       }
   }
 
Всё, готово. Спасибо всем, кто помогал) Один вопросик на последок: есть ли какой-то чит, который "подделывает" креатив? Я слышал о таком, но не знаю, отправляет ли он на сервер инфу о том, что игрок в GameMode.CREATIVE?
Нет, это физически невозможно.
 
Назад
Верх