Bukkit Java 编码,夜间检查员
Bukkit Java Coding, night checker
我想制作一个插件,在特定时间填充我地图上的某个位置。但是当我尝试使用事件 WorldEvent
时,它不起作用;它说
Unable to find handler list for event org.bukkit.event.world.WorldEvent
这是我目前拥有的:
@EventHandler
public void onTimeNight(WorldEvent e) {
long time = e.getWorld().getTime();
// -469 78 418
// -469 30 433
if (time == 13000) {
int x = -469;
for (int y = 30; y < 80; y++) {
for (int z = 402; z < 418; z++) {
Location location = new Location(e.getWorld(), x, y, z);
location.getBlock().setType(Material.BRICK);
}
}
}
}
WorldEvent 不是正在触发的事件。 WorldEvent 只是代表 WorldEvents 的抽象 class。
使用ChunkLoadEvent
、ChunkPopulateEvent
、ChunkUnloadEvent
、PortalCreateEvent
、SpawnChangeEvent
、StructureGrowEvent
、WorldInitEvent
、WorldLoadEvent
、WorldSaveEvent
、WorldUnloadEvent
作为事件。在 Spigot Docs https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/world/package-summary.html
阅读更多相关信息
对于您想做的事情,您需要创建一个任务来检查每个滴答声的时间。如果您只检查世界时间,则每次检查都不会太低效。
下面的示例仅显示如何使用内部class创建任务。最好创建 class 并用 BukkitRunnable 扩展它,并在其中执行与下面相同的代码。
public void scheduleTimer(Plugin plugin, final World world) {
plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
public void run() {
long time = world.getTime();
// -469 78 418
// -469 30 433
if (time == 13000) {
int x = -469;
for (int y = 30; y < 80; y++) {
for (int z = 402; z < 418; z++) {
Location location = new Location(e.getWorld(), x, y, z);
location.getBlock().setType(Material.BRICK);
}
}
}
}
}, 1, 1);
}
我想制作一个插件,在特定时间填充我地图上的某个位置。但是当我尝试使用事件 WorldEvent
时,它不起作用;它说
Unable to find handler list for event org.bukkit.event.world.WorldEvent
这是我目前拥有的:
@EventHandler
public void onTimeNight(WorldEvent e) {
long time = e.getWorld().getTime();
// -469 78 418
// -469 30 433
if (time == 13000) {
int x = -469;
for (int y = 30; y < 80; y++) {
for (int z = 402; z < 418; z++) {
Location location = new Location(e.getWorld(), x, y, z);
location.getBlock().setType(Material.BRICK);
}
}
}
}
WorldEvent 不是正在触发的事件。 WorldEvent 只是代表 WorldEvents 的抽象 class。
使用ChunkLoadEvent
、ChunkPopulateEvent
、ChunkUnloadEvent
、PortalCreateEvent
、SpawnChangeEvent
、StructureGrowEvent
、WorldInitEvent
、WorldLoadEvent
、WorldSaveEvent
、WorldUnloadEvent
作为事件。在 Spigot Docs https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/world/package-summary.html
对于您想做的事情,您需要创建一个任务来检查每个滴答声的时间。如果您只检查世界时间,则每次检查都不会太低效。
下面的示例仅显示如何使用内部class创建任务。最好创建 class 并用 BukkitRunnable 扩展它,并在其中执行与下面相同的代码。
public void scheduleTimer(Plugin plugin, final World world) {
plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
public void run() {
long time = world.getTime();
// -469 78 418
// -469 30 433
if (time == 13000) {
int x = -469;
for (int y = 30; y < 80; y++) {
for (int z = 402; z < 418; z++) {
Location location = new Location(e.getWorld(), x, y, z);
location.getBlock().setType(Material.BRICK);
}
}
}
}
}, 1, 1);
}