Archived
0

Bridge: первая реализация

This commit is contained in:
2017-04-27 17:14:19 +03:00
parent b5b2394001
commit 2b099fd972
6 changed files with 168 additions and 0 deletions

28
bridge/build.gradle Normal file
View File

@@ -0,0 +1,28 @@
group = 'asys'
version = '0.1-SNAPSHOT'
repositories {
maven { url 'https://hub.spigotmc.org/nexus/content/groups/public/' }
}
configurations {
include
compile.extendsFrom include
}
jar {
dependsOn configurations.include
from { configurations.include.collect { it.isDirectory() ? it : zipTree(it) } }
}
ext {
nettyVersion = '4.0.23.Final'
}
dependencies {
include files(project(':bridge-protocol').sourceSets.main.output.classesDir)
compile (group: 'org.bukkit', name: 'bukkit', version: '1.8.8-R0.1-SNAPSHOT') {
exclude group: 'junit'
}
compile group: 'io.netty', name: 'netty-codec', version: nettyVersion
}

View File

@@ -0,0 +1,33 @@
/*
* DmitriyMX <dimon550@gmail.com>
* 2017-04-27
*/
package asys.bridge.bukkit;
import asys.bridge.client.Client;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
public class BridgePlugin extends JavaPlugin {
private Client client;
@Override
public void onEnable() {
getLogger().info("Connect to ASys...");
client = new Client();
client.connect("127.0.0.1", 8779);
}
@Override
public void onDisable() {
getLogger().info("Disconnect...");
client.disconnect();
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
sender.sendMessage("ASys Bridge by DmitriyMX");
return true;
}
}

View File

@@ -0,0 +1,53 @@
/*
* DmitriyMX <dimon550@gmail.com>
* 2017-04-27
*/
package asys.bridge.client;
import asys.mcsmanager.packets.codec.PacketDecoder;
import asys.mcsmanager.packets.codec.PacketEncoder;
import asys.mcsmanager.packets.codec.PacketHandler;
import io.netty.bootstrap.Bootstrap;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioSocketChannel;
public class Client {
private EventLoopGroup group;
public void connect(String host, int port) {
group = new NioEventLoopGroup();
Bootstrap bootstrap = createBootstrap();
bootstrap.connect(host, port);
}
public void disconnect() {
group.shutdownGracefully();
}
private Bootstrap createBootstrap() {
Bootstrap bootstrap = new Bootstrap();
bootstrap.group(group)
.channel(NioSocketChannel.class)
.handler(createChannelInitializer());
return bootstrap;
}
private ChannelInitializer createChannelInitializer() {
return new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel socketChannel) throws Exception {
socketChannel.pipeline().addLast(
new PacketEncoder(),
new PacketDecoder(),
new PacketHandler(),
new ClientPacketHandler()
);
}
};
}
}

View File

@@ -0,0 +1,42 @@
/*
* DmitriyMX <dimon550@gmail.com>
* 2017-04-27
*/
package asys.bridge.client;
import asys.mcsmanager.packets.CS_Handshake;
import asys.mcsmanager.packets.IPacketHandler;
import asys.mcsmanager.packets.Packet;
import asys.mcsmanager.packets.SC_HandshakeResult;
import com.google.common.collect.BiMap;
import com.google.common.collect.ImmutableBiMap;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import java.util.Collections;
import java.util.Map;
import static asys.mcsmanager.packets.codec.Params.KNOWN_HANDLERS;
import static asys.mcsmanager.packets.codec.Params.KNOWN_PACKETS;
public class ClientPacketHandler extends ChannelInboundHandlerAdapter implements IPacketHandler {
private static final BiMap<Integer, Class<? extends Packet>> handshakePackets = ImmutableBiMap.of(
1, CS_Handshake.class,
2, SC_HandshakeResult.class
);
private static final Map<Class<? extends Packet>, IPacketHandler> handshakeHandlers = Collections.emptyMap();
@Override
public void channelActive(ChannelHandlerContext context) throws Exception {
context.channel().attr(KNOWN_PACKETS).set(handshakePackets);
context.channel().attr(KNOWN_HANDLERS).set(handshakeHandlers);
CS_Handshake packet = new CS_Handshake("SpigotServer0", "testpassphrase");
context.channel().writeAndFlush(packet);
}
@Override
public void handle(Packet packet, ChannelHandlerContext context) {
}
}

View File

@@ -0,0 +1,11 @@
name: HelpCenter
main: asys.bridge.bukkit.BridgePlugin
version: 0.1
author: DmitriyMX
commands:
asysbridge:
aliases: ['asys', 'bridge']
usage: /<command>
description: ASys Bridge

View File

@@ -3,3 +3,4 @@ include 'core'
include 'webinterface' include 'webinterface'
include 'mcserver-manager' include 'mcserver-manager'
include 'bridge-protocol' include 'bridge-protocol'
include 'bridge'