1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Делаю Плагин На Пиксель Баттл Столкнулся с 2 Проблемами Помогите Пожалуйста

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

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

    IvavMak Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Vanya_Anime_
    И так делаю я делаю плагин на пиксель баттл и у меня проблемы
    Проблема 1:как сделать задержку по поставке блоков?
    Проблема 2:как сделать установку цветного бетона через плагин а то ставлю жёлтый а появляется белый
    Можете Ответить тут или в вк: http://vk.com/lol1255
    Зарание Спасибо! :з
     
  2. _MRDen3000YT_

    _MRDen3000YT_ Активный участник Пользователь

    Баллы:
    76
    код в студию и версию под которую пишешь плагин
     
  3. Автор темы
    IvavMak

    IvavMak Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Vanya_Anime_
    версия 1.12.2,код

    package pixelbattle.main;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.block.Block;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockPlaceEvent;
    import org.*********ventory.ItemStack;
    public class Handler implements Listener {
    @EventHandler
    public void interact(BlockPlaceEvent event) {
    Player p = event.getPlayer();
    Block block = event.getBlock();

    Location b_loc = block.getLocation().add(0, -1, 0);
    Location b_loc2 = block.getLocation().add(0, 0, 0);
    b_loc.getBlock().setTypeId(251);
    b_loc2.getBlock().setTypeId(0);
    }
    }
     
  4. GreenBoom

    GreenBoom Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    _GreenBoom_
    Для задержки используй шедедулир и хэшмапу.
    Запускай шедудлер со стартом сервера. После установки блока заноси игрока в хэшмапу и проверяй, если он там есть, то отменяй действие (установку блока).

    Код:
    import org.bukkit.Bukkit;
    import org.bukkit.block.Block;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockPlaceEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.scheduler.BukkitScheduler;
    
    import java.util.HashMap;
    
    public class delete extends JavaPlugin implements Listener {
    
        HashMap<Player, Integer> timer = new HashMap<Player, Integer>();
        int time = 15; //задержка перед установкой нового блока.
    
        public void onEnable() {
            getServer().getPluginManager().registerEvents(this, this);
    
            Bukkit.broadcastMessage("Started");
            BukkitScheduler scheduler = Bukkit.getServer().getScheduler();
            scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
                public void run() {
                    if(!timer.isEmpty()) {
                        for(Integer i : timer.values()) {
                            i--;
                        }
                    }
                }
            }, 0,20); //20 = 1 секунда.
    
    
        }
    
        @EventHandler
        public void placeBlock(BlockPlaceEvent e) {
            Block b = e.getBlock();
            Player p = e.getPlayer();
            if(!timer.containsKey(p)) {
                timer.put(p, time);
            } else {
                e.setCancelled(true);
                p.sendMessage("Вы сможете поставить блок через " + timer.get(p));
            }
        }
    
    }
    
    Не забудь добавить удаление игрока из мапы, если значение 0
     
    Последнее редактирование: 1 дек 2020
  5. SaMEC

    SaMEC Старожил Пользователь

    Баллы:
    173
    Skype:
    support.meedway
    Имя в Minecraft:
    Nick
    Есть проще способ
    Код:
    private final Map<Player, Long> last = new HashMap<>();
    int second = 15; 
    //задержка перед установкой нового блока.
    
    это в событие
    Код:
    long current = System.currentTimeMillis();
    Long previous = this.last.put(e.getPlayer(), current);
    if (previous == null) return;
    if (current - previous > (second*1000)) return;
    
     
  6. Автор темы
    IvavMak

    IvavMak Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Vanya_Anime_
    можешь помочь в дс? (дс Ivan Makuryn#1618)
     
  7. SaMEC

    SaMEC Старожил Пользователь

    Баллы:
    173
    Skype:
    support.meedway
    Имя в Minecraft:
    Nick
    не располагаю дискордом
     
  8. Автор темы
    IvavMak

    IvavMak Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Vanya_Anime_
    а скайпом?
     
  9. SaMEC

    SaMEC Старожил Пользователь

    Баллы:
    173
    Skype:
    support.meedway
    Имя в Minecraft:
    Nick
    тем более
     

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