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

IvavMak

Участник
Пользователь
Баллы
36
Имя в Minecraft
Vanya_Anime_
И так делаю я делаю плагин на пиксель баттл и у меня проблемы
Проблема 1:как сделать задержку по поставке блоков?
Проблема 2:как сделать установку цветного бетона через плагин а то ставлю жёлтый а появляется белый
Можете Ответить тут или в вк: http://vk.com/lol1255
Зарание Спасибо! :з
 
И так делаю я делаю плагин на пиксель баттл и у меня проблемы
Проблема 1:как сделать задержку по поставке блоков?
Проблема 2:как сделать установку цветного бетона через плагин а то ставлю жёлтый а появляется белый
Можете Ответить тут или в вк: http://vk.com/lol1255
Зарание Спасибо! :з
код в студию и версию под которую пишешь плагин
 
код в студию и версию под которую пишешь плагин
версия 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);
}
}
 
Для задержки используй шедедулир и хэшмапу.
Запускай шедудлер со стартом сервера. После установки блока заноси игрока в хэшмапу и проверяй, если он там есть, то отменяй действие (установку блока).

Код:
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
 
Последнее редактирование:
Есть проще способ
Код:
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;
 
Есть проще способ
Код:
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;
можешь помочь в дс? (дс Ivan Makuryn#1618)
 
Назад
Верх