• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Erledigt: Events ohne setCancelled(boolean) cancelln

xXSchrandXx

Schafhirte
Registriert
16 September 2012
Beiträge
126
Diamanten
302
Minecraft
xXSchrandXx
Hey,

es gibt ja Bukkit Events wie das WorldLoadEvent und das WorldInitEvent.
Diese Events kann man nicht mit e.setCancelled(true) unterbrechen...

Jetzt meine Frage kann man diese Events auch auf einem anderen Weg canceln?
(Wird gebraucht um das Laden durch FAWE´s asyncrones Laden zu ersetzen.)


Mit freundlichem Gruß
xXSchrandXx
 
Zuletzt bearbeitet:

JTK222

Threadripper
Registriert
5 September 2013
Beiträge
1.150
Diamanten
323
Minecraft
JTK222

xXSchrandXx

Schafhirte
Registriert
16 September 2012
Beiträge
126
Diamanten
302
Minecraft
xXSchrandXx
Hatte nur vor, durch FAWE das laden aller Welten zu verschnellern. (Auch wenn das nicht immer so schlau ist).
Code:
import java.util.logging.Level;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.WorldCreator;
import org.bukkit.block.Block;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.world.WorldInitEvent;
import org.bukkit.event.world.WorldLoadEvent;
import org.bukkit.plugin.java.JavaPlugin;

import com.boydti.fawe.bukkit.wrapper.AsyncWorld;
import com.boydti.fawe.util.TaskManager;

public class AsyncWorldLoad extends JavaPlugin implements Listener {
  @Override
  public void onEnable() {
    if ((Bukkit.getPluginManager().getPlugin("FastAsyncWorldEdit") != null) && (Bukkit.getPluginManager().getPlugin("WorldEdit") != null)) {
      Bukkit.getPluginManager().registerEvents(this, this);
      getLogger().log(Level.INFO, "Registered Events!");
    }
    else {
      getLogger().log(Level.WARNING, "FastAsyncWorldEdit and WorldEdit is required for this plugin!");
    }
  }
  @EventHandler(priority=EventPriority.HIGHEST)
  public void onWorldLoad(WorldLoadEvent e) {
    TaskManager.IMP.async(new Runnable() {
      @Override
      public void run() {
        AsyncWorld world = null;
        WorldCreator creator = new WorldCreator(e.getWorld().getName());
        if (Bukkit.getWorld(creator.name()) == null) {
          world = AsyncWorld.create(creator);
        }
        else {
          AsyncWorld.wrap(Bukkit.getWorld(creator.name()));
        }
        Block block = world.getBlockAt(0, 0, 0);
        block.setType(Material.BEDROCK);
        world.commit();
        Bukkit.getWorlds().add(world);
      }
    });
  }
  @EventHandler(priority=EventPriority.HIGHEST)
  public void onStartUp(WorldInitEvent e) {
    TaskManager.IMP.async(new Runnable() {
      @Override
      public void run() {
        AsyncWorld world = null;
        WorldCreator creator = new WorldCreator(e.getWorld().getName());
        if (Bukkit.getWorld(creator.name()) == null) {
          world = AsyncWorld.create(creator);
        }
        else {
          AsyncWorld.wrap(Bukkit.getWorld(creator.name()));
        }
        Block block = world.getBlockAt(0, 0, 0);
        block.setType(Material.BEDROCK);
        world.commit();
        Bukkit.getWorlds().add(world);
      }
    });
  }
}

Das laden und erstellen der Welt ist halt unsicherer aber sehr viel schneller...

Aber das hat sich ja schon erledigt.
 
Oben