Add post auth event

This commit is contained in:
md_5 2012-10-21 12:46:58 +11:00
parent 5f33136cbf
commit a6007ec6cf
5 changed files with 30 additions and 14 deletions

View File

@ -100,12 +100,6 @@
<url>http://repo.md-5.net/content/groups/public</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>md_5-public</id>
<url>http://repo.md-5.net/content/groups/public</url>
</pluginRepository>
</pluginRepositories>
<build>
<finalName>${project.name}</finalName>
<plugins>

View File

@ -9,7 +9,7 @@ import net.md_5.bungee.packet.PacketFCEncryptionResponse;
import net.md_5.bungee.packet.PacketFDEncryptionRequest;
import net.md_5.bungee.packet.PacketFFKick;
import net.md_5.bungee.packet.PacketInputStream;
import net.md_5.bungee.plugin.HandshakeEvent;
import net.md_5.bungee.plugin.LoginEvent;
import org.bouncycastle.crypto.io.CipherInputStream;
import org.bouncycastle.crypto.io.CipherOutputStream;
@ -39,7 +39,7 @@ public class InitialHandler implements Runnable
case 0x02:
Packet2Handshake handshake = new Packet2Handshake(packet);
// fire connect event
HandshakeEvent event = new HandshakeEvent(handshake.username, socket.getInetAddress());
LoginEvent event = new LoginEvent(handshake.username, socket.getInetAddress());
BungeeCord.instance.pluginManager.onHandshake(event);
if (event.isCancelled())
{
@ -56,6 +56,13 @@ public class InitialHandler implements Runnable
throw new KickException("Not authenticated with minecraft.net");
}
// fire post auth event
BungeeCord.instance.pluginManager.onHandshake(event);
if (event.isCancelled())
{
throw new KickException(event.getCancelReason());
}
out.write(new PacketFCEncryptionResponse().getPacket());
in = new PacketInputStream(new CipherInputStream(socket.getInputStream(), EncryptionUtil.getCipher(false, shared)));
out = new CipherOutputStream(socket.getOutputStream(), EncryptionUtil.getCipher(true, shared));

View File

@ -32,7 +32,15 @@ public abstract class JavaPlugin
* Called when a user connects with their name and address. To keep things
* simple this name has not been checked with minecraft.net.
*/
public void onHandshake(HandshakeEvent event)
public void onHandshake(LoginEvent event)
{
}
/**
* Called after a user has been authed with minecraftt.net and is about to
* log into the proxy.
*/
public void onLogin(LoginEvent event)
{
}

View File

@ -81,11 +81,20 @@ public class JavaPluginManager extends JavaPlugin
}
@Override
public void onHandshake(HandshakeEvent event)
public void onHandshake(LoginEvent event)
{
for (JavaPlugin p : plugins)
{
p.onHandshake(event);
}
}
@Override
public void onLogin(LoginEvent event)
{
for (JavaPlugin p : plugins)
{
p.onLogin(event);
}
}
}

View File

@ -4,12 +4,10 @@ import java.net.InetAddress;
import lombok.Data;
/**
* Event called once a remote connection has begun the login procedure. This
* event is ideal for IP banning, however must be used with care in other places
* such as logging at the username has not yet been verified with Mojang.
* Event called to represent a player logging in.
*/
@Data
public class HandshakeEvent implements Cancellable
public class LoginEvent implements Cancellable
{
/**