Задержка

Версия Minecraft
1.12.2
API
Forge
54
3
6
У меня есть вот такой код:
Java:
Minecraft.getMinecraft().effectRenderer.emitParticleAtEntity(player, EnumParticleTypes.ENCHANTMENT_TABLE, 30);
stack.setItemDamage(1);
Я хочу, чтобы пока анимация партиклов не закончится, следующие строки кода не выполнялись (stack.setItemDamage(1) )
Как это возможно реализовать?
 
Java:
public static void execute(LevelAccessor world, double x, double y, double z) {
        new Object() {
            private int ticks = 0;
            private float waitTicks;
            private LevelAccessor world;

            public void start(LevelAccessor world, int waitTicks) {
                this.waitTicks = waitTicks;
                MinecraftForge.EVENT_BUS.register(this);
                this.world = world;
            }

            @SubscribeEvent
            public void tick(TickEvent.ServerTickEvent event) {
                if (event.phase == TickEvent.Phase.END) {
                    this.ticks += 1;
                    if (this.ticks >= this.waitTicks)
                        run();
                }
            }

            private void run() {
                stack.setItemDamage(1);
            }
        }.start(world, 20);
    }

.start(world, 20); > 20 - это задержка в тактах
20тактов = 1 сек
 
@tox1cozZ
Java:
[19:14:35] [Server thread/FATAL] [minecraft/MinecraftServer]: Error executing task

java.util.concurrent.ExecutionException: java.lang.NullPointerException

    at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_202]

    at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_202]

    at net.minecraft.util.Util.runTask(Util.java:51) [Util.class:?]

    at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:723) [MinecraftServer.class:?]

    at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:668) [MinecraftServer.class:?]

    at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:185) [IntegratedServer.class:?]

    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526) [MinecraftServer.class:?]

    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_202]

Caused by: java.lang.NullPointerException

    at com.eternity4450.sinisterrpg.utils.Scheduler[imath]Ticker.access[/imath]000(Scheduler.java:93) ~[Scheduler$Ticker.class:?]

    at com.eternity4450.sinisterrpg.utils.Scheduler.schedule(Scheduler.java:59) ~[Scheduler.class:?]

    at com.eternity4450.sinisterrpg.items.MyItem.onItemUse(MyItem.java:39) ~[MyItem.class:?]

    at net.minecraftforge.common.ForgeHooks.onPlaceItemIntoWorld(ForgeHooks.java:889) ~[ForgeHooks.class:14.23.5.2859]

    at net.minecraft.item.ItemStack.onItemUse(ItemStack.java:186) ~[ItemStack.class:?]

    at net.minecraft.server.management.PlayerInteractionManager.processRightClickBlock(PlayerInteractionManager.java:492) ~[PlayerInteractionManager.class:?]

    at net.minecraft.network.NetHandlerPlayServer.processTryUseItemOnBlock(NetHandlerPlayServer.java:741) ~[NetHandlerPlayServer.class:?]

    at net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock.processPacket(CPacketPlayerTryUseItemOnBlock.java:59) ~[CPacketPlayerTryUseItemOnBlock.class:?]

    at net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock.processPacket(CPacketPlayerTryUseItemOnBlock.java:13) ~[CPacketPlayerTryUseItemOnBlock.class:?]

    at net.minecraft.network.PacketThreadUtil[imath]1.run(PacketThreadUtil.java:15) ~[PacketThreadUtil[/imath]1.class:?]

    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_202]

    at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_202]

    at net.minecraft.util.Util.runTask(Util.java:50) ~[Util.class:?]

    ... 5 more
 
Назад
Сверху