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

Помогите как за спавнить моба

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

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

    hoprikj Активный участник

    Баллы:
    61
    Имя в Minecraft:
    hopraynsky0049
    у меня такая ситуация когда я пытаюсь создать моба при помощи

    player.getPlayer().getWorld().spawnEntity(player.getPlayer().getLocation(), EntityType.CREEPER);

    то в консоли возникает ошибка и моб не появляется
    [12:26:03 WARN]: Exception in thread "Timer-2" java.lang.IllegalStateException: VehicleCreateEvent cannot be triggered asynchronously from another thread.
    [12:26:03 WARN]: at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:571)
    [12:26:03 WARN]: at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.callVehicleCreateEvent(CraftEventFactory.java:1411)
    [12:26:03 WARN]: at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.doEntityAddEventCalling(CraftEventFactory.java:577)
    [12:26:03 WARN]: at net.minecraft.server.v1_16_R3.WorldServer.addEntity0(WorldServer.java:896)
    [12:26:03 WARN]: at net.minecraft.server.v1_16_R3.WorldServer.addEntity(WorldServer.java:827)
    [12:26:03 WARN]: at org.bukkit.craftbukkit.v1_16_R3.CraftWorld.addEntity(CraftWorld.java:1810)
    [12:26:03 WARN]: at org.bukkit.craftbukkit.v1_16_R3.CraftWorld.spawn(CraftWorld.java:1817)
    [12:26:03 WARN]: at org.bukkit.craftbukkit.v1_16_R3.CraftWorld.spawn(CraftWorld.java:1400)
    [12:26:03 WARN]: at org.bukkit.craftbukkit.v1_16_R3.CraftWorld.spawnEntity(CraftWorld.java:648)
    [12:26:03 WARN]: at com.hoprik.PluginForDima.Event$4.run(Event.java:183)
    [12:26:03 WARN]: at java.util.TimerThread.mainLoop(Unknown Source)
    [12:26:03 WARN]: at java.util.TimerThread.run(Unknown Source)
     
  2. Mikyc

    Mikyc Участник

    Баллы:
    31
    Код спавна моба стоит в потоке? Скинь метод
     
  3. Автор темы
    hoprikj

    hoprikj Активный участник

    Баллы:
    61
    Имя в Minecraft:
    hopraynsky0049
    AsyncPlayerChatEvent это?
     
  4. Автор темы
    hoprikj

    hoprikj Активный участник

    Баллы:
    61
    Имя в Minecraft:
    hopraynsky0049
    он стоит в event а он в enable()
     
  5. Mikyc

    Mikyc Участник

    Баллы:
    31
    он там и там :lol: можешь просто скинуть код?
     
  6. Автор темы
    hoprikj

    hoprikj Активный участник

    Баллы:
    61
    Имя в Minecraft:
    hopraynsky0049
    package com.hoprik.PluginForDima;


    import java.util.Timer;
    import java.util.TimerTask;

    import org.bukkit.Bukkit;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.entity.EntityPickupItemEvent;
    import org.bukkit.event.inventory.CraftItemEvent;
    import org.bukkit.event.inventory.FurnaceExtractEvent;
    import org.bukkit.event.player.AsyncPlayerChatEvent;
    import org.bukkit.event.player.PlayerMoveEvent;
    import org.*********ventory.ItemStack;
    import org.*********ventory.meta.ItemMeta;


    import net.md_5.bungee.api.ChatColor;



    class Event implements Listener{
    int dirt = 0;
    int dirt_gold = 0;
    int send_yes = 0;
    int activate_send_yes = 0;
    int diamon = 0;
    int gold = 0;
    int obsidian = 0;
    int coal = 0;
    int iron = 0;
    int aciv = 5;
    int x_min = 148;
    int y_min = 48;
    int z_min = 30;
    int x_max = 153;
    int y_max = 53;
    int z_max = 60;


    Main plugin;
    Timer timer = new Timer();



    public void Events(Main plugin) {
    this.plugin = plugin;
    }

    @EventHandler
    public void EventItem(EntityPickupItemEvent inventory){
    if(inventory.getItem().getItemStack().getType() == Material.RED_DYE) {
    inventory.getEntity().sendMessage("<Земля> Если хочешь ее скрафтить то сначала надо сделать одну вещь на рецепт");
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
    inventory.getEntity().sendMessage("<Земля> Это бесконечный слиток, его прозвали потому что он лучше обсидиана.");
    }

    },1*1000);
    }
    if(inventory.getItem().getItemStack().getType() == Material.DIAMOND) {
    if (diamon == 0) {
    diamon += 1;
    aciv -= 1;
    inventory.getEntity().sendMessage("<Земля> Молодец ты нашел алмазы тебе остаеться найти: "+ChatColor.GOLD+ChatColor.BOLD+aciv+ChatColor.RESET+" вещи");
    }
    }
    if(inventory.getItem().getItemStack().getType() == Material.OBSIDIAN) {
    if (obsidian == 0) {
    obsidian += 1;
    aciv -= 1;
    inventory.getEntity().sendMessage("<Земля> Молодец ты нашел обсидиан тебе остаеться найти: "+ChatColor.GOLD+ChatColor.BOLD+aciv+ChatColor.RESET+" вещи");
    }
    }
    if(inventory.getItem().getItemStack().getType() == Material.DIAMOND_BLOCK) {
    inventory.getEntity().sendMessage("<"+inventory.getEntity().getName()+"> Эммм… где все остальные");
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
    inventory.getEntity().sendMessage("<Земля> Что где они? Эмммм.....");
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
    inventory.getEntity().sendMessage("<"+inventory.getEntity().getName()+"> Ты меня обонуть решить? Атата ты сейчас попе получишь!");
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
    inventory.getEntity().sendMessage("<Земля> Эхх придётся идти на крайние меры");
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
    inventory.getEntity().sendMessage("<Земля> Мы пойдем к хранителю вечности");
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
    inventory.getEntity().sendMessage("<Земля> Ты готов?");
    activate_send_yes = 1;
    send_yes = 1;
    }

    },1*1000);

    }

    },1*1000);
    }

    },1*1000);
    }

    },1*1000);
    }

    },1*1000);
    }
    }
    @EventHandler
    public void Send(AsyncPlayerChatEvent player) {
    if (player.getMessage().contains("да")) {
    if(activate_send_yes == 1) {
    if(send_yes == 0) {
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
    player.getPlayer().sendMessage("<Земля> отлично");
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
    player.getPlayer().sendMessage("<Земля> Добудь меня лопатой");
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
    player.getPlayer().sendMessage("<Земля> Нет рецепта лопаты?");
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
    player.getPlayer().sendMessage("<Земля> На крафт лопоты и камушка");
    activate_send_yes = 0;
    }

    },1*1000);

    }

    },1*1000);
    }

    },1*1000);
    }
    },1*1000);
    }
    if(send_yes == 1) {
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
    player.getPlayer().sendMessage("<Земля> Отлично отправляйся от центра мира 2457 блоков на юг и 1294 на восток");
    activate_send_yes = 0;
    }

    },1*1000);
    }
    }
    }

    }
    @EventHandler
    public void CraftItemEvent(CraftItemEvent craft) {
    if(craft.getRecipe().getResult().getType() == Material.NETHERITE_INGOT) {
    craft.getView().getPlayer().sendMessage("<Земля> я забыл упомянуть один нюанс это не полный слиток бога");
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
    craft.getView().getPlayer().sendMessage("<"+craft.getView().getPlayer().getName()+"> Что?");
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
    craft.getView().getPlayer().sendMessage("<Земля> чтобы скрафтить полный слиток бога нужно 9 слитков неполных");
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
    craft.getView().getPlayer().sendMessage("<"+craft.getView().getPlayer().getName()+"> блин...");
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
    craft.getView().getPlayer().sendMessage("<Земля> Не расстраивайся, дедушка мне оставил 13 блоков алмазов, и я тебе отдам");
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
    craft.getView().getPlayer().sendMessage("<"+craft.getView().getPlayer().getName()+"> Спасибо");
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
    craft.getView().getPlayer().sendMessage("<Земля> Я не знаю где находится, но знаю стих как их найти");
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
    craft.getView().getPlayer().sendMessage("<Земля> Где-то в мире существует центр ты от него пройти на сервер стоит блоков так 150"+"\n<Земля> и на восток сверни на блоков 40 прокопайся и найдешь их мой внучок!!!");

    }

    },1*1000);

    }

    },1*1000);
    }

    },1*1000);

    }

    },1*1000);
    }

    },1*1000);

    }

    },1*1000);
    }

    },1*1000);
    }
    if(craft.getRecipe().getResult().getType() == Material.IRON_BLOCK) {
    if (iron == 0) {
    iron += 1;
    aciv -= 1;
    craft.getView().getPlayer().sendMessage("<Земля> Молодец ты "
    + "скрафтил железный блок тебе остаеться найти: "+ChatColor.GOLD+ChatColor.BOLD+aciv+ChatColor.RESET+" вещи");
    }
    }
    if(craft.getRecipe().getResult().getType() == Material.COAL_BLOCK) {
    if(coal == 0) {
    coal += 1;
    aciv -= 1;
    craft.getView().getPlayer().sendMessage("<Земля> Молодец ты скрафтил угольный блок тебе остаеться найти: "+ChatColor.GOLD+ChatColor.BOLD+aciv+ChatColor.RESET+" вещи");
    }
    }
    }
    @EventHandler
    public void CraftItemFurEvent(FurnaceExtractEvent craft) {
    if(craft.getItemType() == Material.GOLD_INGOT){
    if(gold == 0) {
    gold += 1;
    aciv -= 1;
    craft.getPlayer().sendMessage("<Земля> Молодец ты скрафтил золотой слиток тебе остаеться найти: "+ChatColor.GOLD+ChatColor.BOLD+aciv+ChatColor.RESET+" вещи");
    }
    }
    }
    @EventHandler
    public void BreakBlockEvent(BlockBreakEvent block) {
    Bukkit.getLogger().info("добыто "+dirt_gold+" "+dirt);
    if(block.getBlock().getType() == Material.DIRT) {
    if(dirt == 2) {
    block.getPlayer().sendMessage("<???> эй стой не копай меня я тебе одолжение сделаю!!!");
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
    block.getPlayer().sendMessage("<Земля> меня зовут земля, я живой не копай меня, ты хочешь получить броню бога?");
    activate_send_yes = 1;
    }

    },1*1000);
    }
    if(dirt == 3) {
    Bukkit.getLogger().info("data: "+dirt_gold+" "+dirt);
    if(dirt_gold == 0) {
    if(block.getBlock().getType() == Material.DIRT) {
    if(block.getPlayer().getInventory().getItemInMainHand().getType() == Material.GOLDEN_SHOVEL) {
    ItemStack item = new ItemStack(Material.RED_DYE);
    ItemMeta meta = item.getItemMeta();
    meta.setDisplayName("Земля");
    item.setItemMeta(meta);
    Location location = block.getBlock().getLocation();
    location.getBlock().setType(Material.AIR);
    location.getWorld().dropItem(location, item);
    location.getWorld().getBlockAt(150,45,50).setType(Material.DIAMOND_BLOCK);
    dirt_gold += 1;
    }
    }
    }
    }
    else {
    dirt += 1;
    }
    }
    }
    @EventHandler
    public void PlayerMover(PlayerMoveEvent player) {
    Location spawnloc = player.getPlayer().getLocation();
    String formattedDouble = String.format("%", 0.1321231);
    if() {
    player.getPlayer().sendMessage("ты нашел первую кодинату?");
    }
    }
    }
     

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