Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите как сделать чтобы семена росли только в определённой области?

Тема в разделе "Разработка плагинов для новичков", создана пользователем Hyligna, 14 авг 2024.

  1. Автор темы
    Hyligna

    Hyligna Новичок

    Баллы:
    6
    Мне нужно сделать чтобы семена (картошка пшеница морковь и т.д.) росли только тогда когда возле них есть костёр
     
  2. Хостинг MineCraft
    <
  3. Blowsy

    Blowsy Новичок Пользователь

    Баллы:
    6
    IDE
    Код:
    import org.bukkit.Bukkit;
    import org.bukkit.Material;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class GrowRestrictPlugin extends JavaPlugin {
    
        @Override
        public void onEnable() {
            Bukkit.getPluginManager().registerEvents(new CropGrowthListener(), this);
        }
    
        @Override
        public void onDisable() {
            // Действия при отключении плагина, если необходимо
        }
    }
    Обработчик события роста семян
    Код:
    import org.bukkit.Material;
    import org.bukkit.block.Block;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockGrowEvent;
    import org.bukkit.util.Vector;
    
    public class CropGrowthListener implements Listener {
    
        @EventHandler
        public void onCropGrow(BlockGrowEvent event) {
            Block block = event.getBlock();
            
            // Проверяем, является ли блок собой культурой
            if (isCrop(block.getType())) {
                // Проверяем наличие костра в радиусе 2 блоков
                if (!isCampfireNearby(block)) {
                    event.setCancelled(true); // Предотвращаем рост
                }
            }
        }
    
        private boolean isCrop(Material material) {
            return material == Material.WHEAT ||
                   material == Material.CARROTS ||
                   material == Material.POTATOES ||
                   material == Material.BEETROOTS;
        }
    
        private boolean isCampfireNearby(Block block) {
            for (int x = -2; x <= 2; x++) {
                for (int z = -2; z <= 2; z++) {
                    Block nearbyBlock = block.getRelative(x, 0, z);
                    if (nearbyBlock.getType() == Material.CAMPFIRE) {
                        return true; // Найден костер
                    }
                }
            }
            return false; // Костра нет в радиусе
        }
    }
    Код написал, компилируй. Не забудь про plugin.yml
     

Поделиться этой страницей