Skip to content

Atlas Event System

Dawson edited this page Feb 24, 2019 · 1 revision

What is different about our custom event system?

This event system runs off the main thread of Minecraft. The Bukkit EventHandler API can be slowed down by the large amounts of plugins that use it. Using Atlas's event system, you can get around all the lag and bloat. It is practically the same look as the EventHandler API, but under the hood it is much lighter.

Custom Event Example

package cc.funkemunky.example.event;

import cc.funkemunky.api.event.system.Cancellable;
import cc.funkemunky.api.event.system.Event;
import lombok.Getter;
import lombok.Setter;
import org.bukkit.Location;
import org.bukkit.entity.Player;

@Getter
@Setter
public class CustomMoveEvent extends Event implements Cancellable {
    private Player player;
    private Location to, from;
    private boolean cancelled;

    public CustomMoveEvent(Player player, Location to, Location from) {
        this.player = player;
        this.to = to;
        this.from = from;
    }
}

Calling Events

package cc.funkemunky.example.listeners.bukkit;

import cc.funkemunky.api.event.system.EventManager;
import cc.funkemunky.api.utils.Init;
import cc.funkemunky.example.event.CustomMoveEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;

@Init
public class MoveListeners implements Listener {
    
    
    @EventHandler
    public void onEvent(PlayerMoveEvent event) {
        CustomMoveEvent move = new CustomMoveEvent(event.getPlayer(), event.getTo(), event.getFrom());
        EventManager.callEvent(move);
        
        event.setCancelled(move.isCancelled());
    }
}

Making a listener

package cc.funkemunky.example.listeners.atlas;

import cc.funkemunky.api.event.system.EventMethod;
import cc.funkemunky.api.event.system.Listener;
import cc.funkemunky.api.utils.Init;
import cc.funkemunky.example.event.CustomMoveEvent;

@Init
public class CustomMoveListeners implements Listener {
    
    @EventMethod
    public void onEvent(CustomMoveEvent event) {
        event.getPlayer().sendMessage("Custom move event.");
    }
}
Clone this wiki locally