Think this is a good way to manage events, since many will be targeted between specific nodes. It is expected for developers to cast as needed.

This commit is contained in:
md_5 2013-01-12 11:15:40 +11:00
parent 434b950a92
commit 4f0a02dcca
5 changed files with 58 additions and 31 deletions

View File

@ -0,0 +1,8 @@
package net.md_5.bungee.api;
/**
* Represents a user attempting to log into the proxy.
*/
public interface PendingConnection extends Connection
{
}

View File

@ -1,28 +1,33 @@
package net.md_5.bungee.api.event; package net.md_5.bungee.api.event;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import net.md_5.bungee.api.Connection; import net.md_5.bungee.api.Connection;
import net.md_5.bungee.api.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Cancellable; import net.md_5.bungee.api.plugin.Cancellable;
/**
* Event called when a player sends a message to a server, or a server sends a
* message to a player.
*/
@Data @Data
public class ChatEvent implements Cancellable @ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class ChatEvent extends TargetedEvent implements Cancellable
{ {
/** /**
* Cancelled state. * Cancelled state.
*/ */
private boolean cancelled; private boolean cancelled;
/**
* Where this message is being sent to.
*/
private final Connection destination;
/**
* User involved with sending or receiving this message.
*/
private final ProxiedPlayer player;
/** /**
* Text contained in this chat. * Text contained in this chat.
*/ */
private String message; private String message;
public ChatEvent(Connection sender, Connection receiver, String message)
{
super(sender, receiver);
this.message = message;
}
} }

View File

@ -1,7 +1,7 @@
package net.md_5.bungee.api.event; package net.md_5.bungee.api.event;
import java.net.InetAddress;
import lombok.Data; import lombok.Data;
import net.md_5.bungee.api.PendingConnection;
import net.md_5.bungee.api.plugin.Cancellable; import net.md_5.bungee.api.plugin.Cancellable;
/** /**
@ -20,15 +20,7 @@ public class LoginEvent implements Cancellable
*/ */
private String cancelReason; private String cancelReason;
/** /**
* Username which the player wishes to use. * Connection attempting to login.
*/ */
private final String username; private final PendingConnection connection;
/**
* IP address of the remote connection.
*/
private final InetAddress address;
/**
* Hostname which the user tried to connect to.
*/
private final String hostname;
} }

View File

@ -1,29 +1,24 @@
package net.md_5.bungee.api.event; package net.md_5.bungee.api.event;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import net.md_5.bungee.api.Connection; import net.md_5.bungee.api.Connection;
import net.md_5.bungee.api.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Cancellable; import net.md_5.bungee.api.plugin.Cancellable;
/** /**
* Event called when a plugin message is sent to the client or server. * Event called when a plugin message is sent to the client or server.
*/ */
@Data @Data
public class PluginMessageEvent implements Cancellable @ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class PluginMessageEvent extends TargetedEvent implements Cancellable
{ {
/** /**
* Cancelled state. * Cancelled state.
*/ */
private boolean cancelled; private boolean cancelled;
/**
* Dispatcher of this message.
*/
private final Connection sender;
/**
* Player involved with sending or receiving this message.
*/
private final ProxiedPlayer player;
/** /**
* Tag specified for this plugin message. * Tag specified for this plugin message.
*/ */
@ -32,4 +27,11 @@ public class PluginMessageEvent implements Cancellable
* Data contained in this plugin message. * Data contained in this plugin message.
*/ */
private byte[] data; private byte[] data;
public PluginMessageEvent(Connection sender, Connection receiver, String tag, byte[] data)
{
super(sender, receiver);
this.tag = tag;
this.data = data;
}
} }

View File

@ -0,0 +1,20 @@
package net.md_5.bungee.api.event;
import lombok.AllArgsConstructor;
import lombok.Data;
import net.md_5.bungee.api.Connection;
/**
* An event which occurs in the communication between two nodes. It is not
* recommended to call {@link #setSender(net.md_5.bungee.api.Connection)} or
* {@link #setReceiver(net.md_5.bungee.api.Connection)} and the results of doing
* so are undefined.
*/
@Data
@AllArgsConstructor
public abstract class TargetedEvent
{
private Connection sender;
private Connection receiver;
}