diff --git a/iclibs/Nukkit-MOT-SNAPSHOT.jar b/iclibs/Nukkit-MOT-SNAPSHOT.jar index fd7055ba..3168d28d 100644 Binary files a/iclibs/Nukkit-MOT-SNAPSHOT.jar and b/iclibs/Nukkit-MOT-SNAPSHOT.jar differ diff --git a/src/main/java/com/reider745/entity/EntityMethod.java b/src/main/java/com/reider745/entity/EntityMethod.java index 4d67918a..453c67a0 100644 --- a/src/main/java/com/reider745/entity/EntityMethod.java +++ b/src/main/java/com/reider745/entity/EntityMethod.java @@ -32,6 +32,14 @@ public class EntityMethod { return null; } + public static Player getPlayerToLong(long ent){ + for (Level level : InnerCoreServer.server.getLevels().values()) + for (Player entity : level.getPlayers().values()) + if(entity.getId() == ent) + return entity; + return null; + } + public static EntityHuman getEntityHumanToLong(long ent){ for (Level level : InnerCoreServer.server.getLevels().values()) for (Entity entity : level.getEntities()) diff --git a/src/main/java/com/reider745/item/CustomItemClass.java b/src/main/java/com/reider745/item/CustomItemClass.java index 2c165140..bd516ee0 100644 --- a/src/main/java/com/reider745/item/CustomItemClass.java +++ b/src/main/java/com/reider745/item/CustomItemClass.java @@ -32,6 +32,8 @@ public class CustomItemClass extends Item implements ItemDurable { CompoundTag tag = getOrCreateNamedTag(); + // tag.putInt("Damage", max_damage); + CompoundTag components = tag.getCompound("components"); if(components == null){ components = new CompoundTag(); diff --git a/src/main/java/com/zhekasmirnov/apparatus/multiplayer/server/ConnectedClient.java b/src/main/java/com/zhekasmirnov/apparatus/multiplayer/server/ConnectedClient.java index 1d3660c5..45ce7afe 100644 --- a/src/main/java/com/zhekasmirnov/apparatus/multiplayer/server/ConnectedClient.java +++ b/src/main/java/com/zhekasmirnov/apparatus/multiplayer/server/ConnectedClient.java @@ -1,6 +1,9 @@ package com.zhekasmirnov.apparatus.multiplayer.server; +import cn.nukkit.Player; import cn.nukkit.network.protocol.SetLocalPlayerAsInitializedPacket; +import com.reider745.InnerCoreServer; +import com.reider745.entity.EntityMethod; import com.zhekasmirnov.apparatus.multiplayer.Network; import com.zhekasmirnov.apparatus.multiplayer.ThreadTypeMarker; import com.zhekasmirnov.apparatus.multiplayer.channel.ChannelInterface; @@ -8,6 +11,7 @@ import com.zhekasmirnov.apparatus.multiplayer.channel.data.DataChannel; import com.zhekasmirnov.apparatus.util.Java8BackComp; import com.zhekasmirnov.horizon.runtime.logger.Logger; import com.zhekasmirnov.innercore.api.InnerCoreConfig; +import com.zhekasmirnov.innercore.api.log.ICLog; import org.json.JSONObject; import java.io.IOException; @@ -191,11 +195,31 @@ public class ConnectedClient extends Thread implements ChannelInterface.OnPacket public void send(String name, Object data) { - channel.send(name, data); + try{ + channel.send(name, data); + }catch (Exception e){ + ICLog.e("Network", "error send "+playerUid, e); + + final Player player = EntityMethod.getPlayerToLong(playerUid); + if(player != null) + player.kick(); + else + ICLog.i("Network", "error kick player"); + } } public void send(String name, T data, Class dataType) { - channel.send(name, data, dataType); + try{ + channel.send(name, data, dataType); + }catch (Exception e){ + ICLog.e("Network", "error send "+playerUid, e); + + final Player player = EntityMethod.getPlayerToLong(playerUid); + if(player != null) + player.kick(); + else + ICLog.i("Network", "error kick player"); + } } public void sendMessage(String message) {