feat: синхронизация порта сокет сервера
This commit is contained in:
@@ -15,6 +15,7 @@ import com.reider745.item.CustomItem;
|
||||
|
||||
import com.reider745.item.ItemMethod;
|
||||
import com.reider745.item.NukkitIdConvertor;
|
||||
import com.reider745.network.InnerCorePacket;
|
||||
import com.reider745.world.DimensionsMethods;
|
||||
import com.zhekasmirnov.apparatus.mcpe.NativeWorkbench;
|
||||
import com.zhekasmirnov.apparatus.multiplayer.Network;
|
||||
@@ -226,6 +227,20 @@ public class InnerCoreServer {
|
||||
config.setDefaultPort(singleton.getPropertyInt("socket-port", config.getDefaultPort()));
|
||||
config.setSocketConnectionAllowed(singleton.getPropertyBoolean("socket-server-enable", config.isSocketConnectionAllowed()));
|
||||
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("server", true);
|
||||
json.put("socket_port", config.getDefaultPort());
|
||||
|
||||
InnerCorePacket packet = new InnerCorePacket();
|
||||
packet.name = "system.server_detection";
|
||||
packet.format_id = 0;
|
||||
|
||||
byte[] bytes = json.toString().getBytes();
|
||||
packet.bytes_length = bytes.length;
|
||||
packet.bytes = bytes;
|
||||
packet.encode();
|
||||
InnerCorePacket.sendInfo = packet;
|
||||
|
||||
final File innerCoreDirectory = new File(dataPath, "innercore");
|
||||
if (!innerCoreDirectory.exists()) {
|
||||
server.getLogger().info("Extracting internal package...");
|
||||
@@ -284,9 +299,6 @@ public class InnerCoreServer {
|
||||
Network.getSingleton().addServerInitializationPacket("server_fixed.inventory", (client) -> object, (v, v1) -> {
|
||||
// legacy inner core for mod ServerFixed
|
||||
});
|
||||
Network.getSingleton().addServerInitializationPacket("system.dedicated_server", (client) -> object, (v, v1) -> {
|
||||
// for new inner core
|
||||
});
|
||||
|
||||
NativeCallback.onLocalServerStarted();
|
||||
WorldDataSaverHandler.getInstance().fetchParamsFromConfig();
|
||||
|
||||
@@ -328,8 +328,6 @@ public class EventListener implements Listener {
|
||||
|
||||
// TODO: onBlockEventEntityStepOn
|
||||
|
||||
// TODO: onBlockEventNeighbourChange
|
||||
|
||||
// TODO: onItemUsedNoTarget (not only custom items)
|
||||
|
||||
// TODO: onItemUseReleased (not only custom items)
|
||||
|
||||
@@ -8,12 +8,15 @@ import cn.nukkit.network.protocol.DataPacket;
|
||||
import cn.nukkit.utils.BinaryStream;
|
||||
import cn.nukkit.utils.MainLogger;
|
||||
import cn.nukkit.utils.VarInt;
|
||||
import com.reider745.InnerCoreServer;
|
||||
import com.reider745.Main;
|
||||
import com.reider745.api.hooks.HookClass;
|
||||
import com.reider745.api.hooks.TypeHook;
|
||||
import com.reider745.api.hooks.annotation.Inject;
|
||||
import com.reider745.api.hooks.annotation.Hooks;
|
||||
import com.reider745.network.BasePacket;
|
||||
import com.reider745.network.InnerCorePacket;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.net.ProtocolException;
|
||||
import java.util.Collection;
|
||||
@@ -66,7 +69,13 @@ public class NetworkHooks implements HookClass {
|
||||
packetId = header & 0x3FF;
|
||||
break;
|
||||
}
|
||||
log.debug("read packet: " + packetId);
|
||||
// 1 - the very first package
|
||||
if(packetId == 1)
|
||||
player.dataPacket(InnerCorePacket.sendInfo);
|
||||
|
||||
if(InnerCoreServer.isDebugInnerCoreNetwork())
|
||||
System.out.println("Batch packet: "+packetId);
|
||||
|
||||
DataPacket pk = self.getPacket(packetId);
|
||||
|
||||
if (pk != null) {
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
package com.reider745.hooks;
|
||||
|
||||
import cn.nukkit.Player;
|
||||
import cn.nukkit.Server;
|
||||
import cn.nukkit.lang.TextContainer;
|
||||
import cn.nukkit.network.protocol.DataPacket;
|
||||
import com.reider745.InnerCoreServer;
|
||||
import com.reider745.api.hooks.HookClass;
|
||||
import com.reider745.api.hooks.TypeHook;
|
||||
import com.reider745.api.hooks.annotation.Inject;
|
||||
import com.reider745.api.hooks.annotation.Hooks;
|
||||
import com.reider745.network.InnerCorePacket;
|
||||
import com.zhekasmirnov.apparatus.multiplayer.Network;
|
||||
import com.zhekasmirnov.apparatus.multiplayer.server.ConnectedClient;
|
||||
import java.util.List;
|
||||
@@ -44,6 +48,7 @@ public class PlayerHooks implements HookClass {
|
||||
|
||||
@Inject
|
||||
public static void close(Player player, TextContainer message, String reason, boolean notify) {
|
||||
InnerCorePacket.closePlayer(player);
|
||||
ConnectedClient client = getForPlayer(player);
|
||||
try {
|
||||
if (client != null)
|
||||
@@ -51,4 +56,10 @@ public class PlayerHooks implements HookClass {
|
||||
} catch (Exception ignore) {
|
||||
}
|
||||
}
|
||||
|
||||
@Inject
|
||||
public static void dataPacket(Player self, DataPacket packet){
|
||||
if(InnerCoreServer.isDebugInnerCoreNetwork())
|
||||
System.out.println("Send packet: "+packet.pid());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,10 +2,17 @@ package com.reider745.network;
|
||||
|
||||
import cn.nukkit.Player;
|
||||
import cn.nukkit.Server;
|
||||
import cn.nukkit.network.Network;
|
||||
import cn.nukkit.network.protocol.BatchPacket;
|
||||
import com.zhekasmirnov.apparatus.mcpe.NativeNetworking;
|
||||
import com.zhekasmirnov.horizon.runtime.logger.Logger;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.EmptyByteBuf;
|
||||
import io.netty.buffer.PooledByteBufAllocator;
|
||||
import io.netty.buffer.SwappedByteBuf;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class InnerCorePacket extends BasePacket {
|
||||
@@ -41,11 +48,13 @@ public class InnerCorePacket extends BasePacket {
|
||||
}
|
||||
}
|
||||
|
||||
public static InnerCorePacket sendInfo;
|
||||
|
||||
public void reciveLogic(){
|
||||
try{
|
||||
InetSocketAddress address = this.player.getSocketAddress();
|
||||
final InetSocketAddress address = this.player.getSocketAddress();
|
||||
final String client = address.getAddress().toString();
|
||||
|
||||
String client = address.getAddress().toString();
|
||||
addressHashMap.put(client, address);
|
||||
playerHashMap.put(client, player);
|
||||
|
||||
@@ -56,6 +65,14 @@ public class InnerCorePacket extends BasePacket {
|
||||
}
|
||||
}
|
||||
|
||||
public static void closePlayer(Player player){
|
||||
final InetSocketAddress address = player.getSocketAddress();
|
||||
final String client = address.getAddress().toString();
|
||||
|
||||
addressHashMap.remove(client);
|
||||
playerHashMap.remove(client);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void encode() {
|
||||
isEncoded = true;
|
||||
|
||||
Reference in New Issue
Block a user