Вопрос Как сделать нерушимую наковальню?

Версия Minecraft
1.16.X

Mikita

Пользователь
Заблокирован
Сообщения
57
Решения
3
Всем привет, как запретить ломаться наковальни с контейнером "anv"? (Я использую Paper)
 
Решение
Код который запрещает ломаться наковальни: (By UserD1)

Java:
@EventHandler
public void onAnvilPrepare(PrepareAnvilEvent event){
    Location location = event.getInventory().getLocation();
    if (location == null)
        return;

    Block block = location.getBlock();
    if (block.getType() == Material.CHIPPED_ANVIL || block.getType() == Material.DAMAGED_ANVIL)
        block.setType(Material.ANVIL);
}

Код который запрещает скидывать наковальню: (By ForceDex)
Java:
    @EventHandler
    public void onEntityChangeBlock(EntityChangeBlockEvent event) {
        if (event.getBlock().getType() == Material.ANVIL) {
            event.setCancelled(true);
        }
    }
Код:
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
    if (event.getBlock().getType() == Material.ANVIL) {
        // Ваш код для предотвращения ломания наковальни
        event.setCancelled(true); // Отменяет событие ломания блока
    }
}
Я говорю когда игрок пользуется наковальной.
 
Java:
@EventHandler
public void onAnvilPrepare(PrepareAnvilEvent event){
    Location location = event.getInventory().getLocation();
    if (location == null)
        return;

    Block block = location.getBlock();
    if (block.getType() == Material.CHIPPED_ANVIL || block.getType() == Material.DAMAGED_ANVIL)
        block.setType(Material.ANVIL);
}
 
Java:
@EventHandler
public void onAnvilPrepare(PrepareAnvilEvent event){
    Location location = event.getInventory().getLocation();
    if (location == null)
        return;

    Block block = location.getBlock();
    if (block.getType() == Material.CHIPPED_ANVIL || block.getType() == Material.DAMAGED_ANVIL)
        block.setType(Material.ANVIL);
}
Спасибо код работает, но когда её сбрасываешь с высоты то она ломается, знаешь как пофиксить это?
 
Код:
    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent event) {
        if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
            if (event.getClickedBlock() != null && event.getClickedBlock().getType() == Material.ANVIL) {
                event.setCancelled(true);
            }
        }
    }

    @EventHandler
    public void onAnvilPrepare(PrepareAnvilEvent event) {
        AnvilInventory inventory = event.getInventory();
        Block block = inventory.getLocation().getBlock();

        if (block.getType() == Material.CHIPPED_ANVIL || block.getType() == Material.DAMAGED_ANVIL) {
            block.setType(Material.ANVIL);
        }
    }

    @EventHandler
    public void onEntityChangeBlock(EntityChangeBlockEvent event) {
        if (event.getBlock().getType() == Material.ANVIL) {
            event.setCancelled(true);
        }
    }
}
 
Спасибо код работает, но когда её сбрасываешь с высоты то она ломается, знаешь как пофиксить это?
Java:
@EventHandler
    public void onBlockPhysics(BlockPhysicsEvent event) {
        Block block = event.getBlock();

        if (block.getType() == Material.CHIPPED_ANVIL || block.getType() == Material.DAMAGED_ANVIL){
            block.setType(Material.ANVIL);
        }
    }
 
Вам необходимо зарегистрироваться для просмотра изображений-вложений

Ну и такой код тоже подойдет, вопрос закрыт, всем огромное спасибо кто мне помог!
@EventHandler public void onEntityChangeBlock(EntityChangeBlockEvent event) { if (event.getBlock().getType() == Material.ANVIL) { event.setCancelled(true); } }
 
Код который запрещает ломаться наковальни: (By UserD1)

Java:
@EventHandler
public void onAnvilPrepare(PrepareAnvilEvent event){
    Location location = event.getInventory().getLocation();
    if (location == null)
        return;

    Block block = location.getBlock();
    if (block.getType() == Material.CHIPPED_ANVIL || block.getType() == Material.DAMAGED_ANVIL)
        block.setType(Material.ANVIL);
}

Код который запрещает скидывать наковальню: (By ForceDex)
Java:
    @EventHandler
    public void onEntityChangeBlock(EntityChangeBlockEvent event) {
        if (event.getBlock().getType() == Material.ANVIL) {
            event.setCancelled(true);
        }
    }
 
Назад
Сверху Снизу