Finished Chunk Data Transfere if Paylouad size exeeds maximum
This commit is contained in:
parent
63830a27d6
commit
5c6d6a4cb0
5 changed files with 145 additions and 46 deletions
|
@ -15,8 +15,10 @@ import net.minecraft.server.MinecraftServer;
|
|||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.server.network.ServerGamePacketListenerImpl;
|
||||
import ru.bclib.BCLib;
|
||||
import ru.bclib.api.dataexchange.handler.autosync.Chunker.FileChunkSender;
|
||||
import ru.bclib.api.dataexchange.handler.autosync.Chunker;
|
||||
import ru.bclib.api.dataexchange.handler.autosync.Chunker.PacketChunkSender;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class DataHandler extends BaseDataHandler {
|
||||
|
@ -71,14 +73,7 @@ public abstract class DataHandler extends BaseDataHandler {
|
|||
FriendlyByteBuf buf = PacketByteBufs.create();
|
||||
serializeData(buf, false);
|
||||
|
||||
if (buf.readableBytes()>1024*1024) {
|
||||
final FileChunkSender sender = new FileChunkSender(buf);
|
||||
sender.sendChunks(PlayerLookup.all(server));
|
||||
} else {
|
||||
for (ServerPlayer player : PlayerLookup.all(server)) {
|
||||
ServerPlayNetworking.send(player, getIdentifier(), buf);
|
||||
}
|
||||
}
|
||||
_sendToClient(getIdentifier(), server, PlayerLookup.all(server), buf);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -87,11 +82,19 @@ public abstract class DataHandler extends BaseDataHandler {
|
|||
if (prepareData(false)) {
|
||||
FriendlyByteBuf buf = PacketByteBufs.create();
|
||||
serializeData(buf, false);
|
||||
if (buf.readableBytes()>1024*1024) {
|
||||
final FileChunkSender sender = new FileChunkSender(buf);
|
||||
sender.sendChunks(List.of(player));
|
||||
} else {
|
||||
ServerPlayNetworking.send(player, getIdentifier(), buf);
|
||||
|
||||
_sendToClient(getIdentifier(), server, List.of(player), buf);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void _sendToClient(ResourceLocation identifier, MinecraftServer server, Collection<ServerPlayer> players, FriendlyByteBuf buf) {
|
||||
if (buf.readableBytes()> Chunker.MAX_PACKET_SIZE) {
|
||||
final PacketChunkSender sender = new PacketChunkSender(buf, identifier);
|
||||
sender.sendChunks(players);
|
||||
} else {
|
||||
for (ServerPlayer player : players) {
|
||||
ServerPlayNetworking.send(player, identifier, buf);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -226,15 +229,17 @@ public abstract class DataHandler extends BaseDataHandler {
|
|||
BCLib.LOGGER.error("[Internal Error] The message '" + getIdentifier() + "' must originate from the server!");
|
||||
}
|
||||
|
||||
public void receiveFromMemory(FriendlyByteBuf buf){
|
||||
receiveFromServer(Minecraft.getInstance(), null, buf, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
final void sendToClient(MinecraftServer server) {
|
||||
if (prepareDataOnServer()) {
|
||||
FriendlyByteBuf buf = PacketByteBufs.create();
|
||||
serializeDataOnServer(buf);
|
||||
|
||||
for (ServerPlayer player : PlayerLookup.all(server)) {
|
||||
ServerPlayNetworking.send(player, getIdentifier(), buf);
|
||||
}
|
||||
_sendToClient(getIdentifier(), server, PlayerLookup.all(server), buf);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -243,7 +248,8 @@ public abstract class DataHandler extends BaseDataHandler {
|
|||
if (prepareDataOnServer()) {
|
||||
FriendlyByteBuf buf = PacketByteBufs.create();
|
||||
serializeDataOnServer(buf);
|
||||
ServerPlayNetworking.send(player, getIdentifier(), buf);
|
||||
|
||||
_sendToClient(getIdentifier(), server, List.of(player), buf);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue