日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

本文介紹了TimeUnit.SECONDS的替代方案(1);SpigotMC/SpigotMC事件未運(yùn)行的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

問(wèn)題描述

遇到此問(wèn)題時(shí),我正試圖創(chuàng)建一個(gè)Minworld插件,但我認(rèn)為這更像是一個(gè)Java討論

所以我嘗試創(chuàng)建一個(gè)每秒鐘繁殖一只雞的派生程序(對(duì)于測(cè)試,當(dāng)我完成時(shí),它將變成每一分鐘),但當(dāng)我測(cè)試時(shí),事件似乎沒(méi)有運(yùn)行(因?yàn)?code>TimeUnit.SECONDS.sleep()將阻塞MC線程)。那么,我可以有另一個(gè)選擇嗎?
我現(xiàn)在使用的延遲是TimeUnit.SECONDS.sleep(*insert some number here*);
,如下所示:

注意:我已經(jīng)嘗試了使用答案中所示的setTaskTimerscheduleSyncRepeatingTask,但它們似乎不起作用。這是事件問(wèn)題還是spawnEntity問(wèn)題?

package com.TheRealBee.Bows.Event10;


import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent;

import java.util.concurrent.TimeUnit;


public class EventManager10 implements Listener {
        @EventHandler

        public void onNukePlace(BlockPlaceEvent e){


            // Return if it's not TNT, doesn't have ItemMeta or doesn't have a custom dispaly name
            if(!e.getBlock().getType().equals(Material.GOLD_BLOCK) || !e.getItemInHand().hasItemMeta() || !e.getItemInHand().getItemMeta().hasDisplayName())
                return;
            // Return if the item display name is not correct
            if(!e.getItemInHand().getItemMeta().getDisplayName().equals(ChatColor.WHITE+"Spawner"))
                return;
            // Create the explosion
            try {
                for (int i = 0; i < 300000000; i++) {
                    e.getBlock().getLocation().getWorld().spawnEntity(e.getBlock().getLocation(), EntityType.CHICKEN);
                    TimeUnit.SECONDS.sleep(1);
                }
            }
            catch(InterruptedException ex)
            {
                Thread.currentThread().interrupt();
            }
            
        }
}

推薦答案應(yīng)使用Bukkit.getScheduler().scheduleSyncRepeatingTask(...)代替For循環(huán)和TimeUnit.SECONDS.sleep

Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
    @Override
    public void run() {
        e.getBlock().getLocation().getWorld().spawnEntity(e.getBlock().getLocation(), EntityType.CHICKEN);
    }

}, 0L, 20L)

plugin應(yīng)為您的插件的實(shí)例

0L是運(yùn)行第一個(gè)任務(wù)之前的延遲(以刻度為單位)

20L是運(yùn)行下一個(gè)任務(wù)之前的延遲(以刻度為單位)

scheduleSyncRepeatingTask in the Spigot JavaDoc

因?yàn)檫@是一個(gè)產(chǎn)卵程序,所以我認(rèn)為當(dāng)塊被打破時(shí),您會(huì)想要停止產(chǎn)卵。您可以使用任務(wù)ID取消任務(wù)。TaskID是scheduleSyncRepeatingTask返回的整數(shù)。您應(yīng)該保存此taskID,因?yàn)槟梢栽谏院?塊中斷時(shí))取消該任務(wù)。要取消任務(wù),可以使用cancelTask

Bukkit.getServer().getScheduler().cancelTask(taskID);

cancelTask in the Spigot JavaDoc

例如,使用HashMap保存此taskID。當(dāng)塊放置時(shí),您應(yīng)該將坐標(biāo)保存為key,將taskID保存為HashMap中的值。當(dāng)塊被破壞時(shí)(使用塊斷開(kāi)事件),您應(yīng)該在該HashMap中查找被破壞的塊的坐標(biāo)。如果HashMap中存在坐標(biāo),則應(yīng)取消任務(wù)并從HashMap中刪除該條目。

這篇關(guān)于TimeUnit.SECONDS的替代方案(1);SpigotMC/SpigotMC事件未運(yùn)行的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,

分享到:
標(biāo)簽:SECONDS SpigotMC TimeUnit 事件 方案 運(yùn)行
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定