fix: баги

- откат Nukkit-Mot
- добавлен try-catch на отправку пакета
This commit is contained in:
Reider745
2023-12-16 11:09:27 +03:00
parent c1bedc7565
commit ca15087aff
4 changed files with 36 additions and 2 deletions
@@ -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())
@@ -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();
@@ -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<T> void send(String name, T data, Class<T> 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) {