Added Step to handler that allows users to stop the message from beeing sent and prepare some data.
This commit is contained in:
parent
132623419d
commit
742ea56e34
5 changed files with 58 additions and 25 deletions
|
@ -25,9 +25,14 @@ public abstract class DataHandler {
|
|||
super(identifier, originatesOnServer);
|
||||
}
|
||||
|
||||
protected void serializeData(FriendlyByteBuf buf) {
|
||||
@Override
|
||||
protected boolean prepareData(boolean isClient){ return true; }
|
||||
|
||||
@Override
|
||||
protected void serializeData(FriendlyByteBuf buf, boolean isClient) {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void deserializeFromIncomingData(FriendlyByteBuf buf, PacketSender responseSender, boolean isClient){
|
||||
}
|
||||
}
|
||||
|
@ -62,7 +67,8 @@ public abstract class DataHandler {
|
|||
server.execute(() -> runOnGameThread(null, server, false));
|
||||
}
|
||||
|
||||
abstract protected void serializeData(FriendlyByteBuf buf) ;
|
||||
protected boolean prepareData(boolean isClient){ return true; }
|
||||
abstract protected void serializeData(FriendlyByteBuf buf, boolean isClient) ;
|
||||
abstract protected void deserializeFromIncomingData(FriendlyByteBuf buf, PacketSender responseSender, boolean isClient);
|
||||
abstract protected void runOnGameThread(Minecraft client, MinecraftServer server, boolean isClient);
|
||||
|
||||
|
@ -73,25 +79,31 @@ public abstract class DataHandler {
|
|||
}
|
||||
|
||||
void sendToClient(MinecraftServer server){
|
||||
FriendlyByteBuf buf = PacketByteBufs.create();
|
||||
serializeData(buf);
|
||||
if (prepareData(false)) {
|
||||
FriendlyByteBuf buf = PacketByteBufs.create();
|
||||
serializeData(buf, false);
|
||||
|
||||
for (ServerPlayer player : PlayerLookup.all(server)) {
|
||||
ServerPlayNetworking.send(player, this.identifier, buf);
|
||||
for (ServerPlayer player : PlayerLookup.all(server)) {
|
||||
ServerPlayNetworking.send(player, this.identifier, buf);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sendToClient(MinecraftServer server, ServerPlayer player){
|
||||
FriendlyByteBuf buf = PacketByteBufs.create();
|
||||
serializeData(buf);
|
||||
ServerPlayNetworking.send(player, this.identifier, buf);
|
||||
if (prepareData(false)) {
|
||||
FriendlyByteBuf buf = PacketByteBufs.create();
|
||||
serializeData(buf, false);
|
||||
ServerPlayNetworking.send(player, this.identifier, buf);
|
||||
}
|
||||
}
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
void sendToServer(Minecraft client){
|
||||
FriendlyByteBuf buf = PacketByteBufs.create();
|
||||
serializeData(buf);
|
||||
ClientPlayNetworking.send(identifier, buf);
|
||||
if (prepareData(true)) {
|
||||
FriendlyByteBuf buf = PacketByteBufs.create();
|
||||
serializeData(buf, true);
|
||||
ClientPlayNetworking.send(identifier, buf);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -44,6 +44,12 @@ public class HelloClient extends DataHandler {
|
|||
super(DESCRIPTOR.IDENTIFIER, true);
|
||||
}
|
||||
|
||||
public static ModContainer getModContainer(String modID) {
|
||||
Optional<ModContainer> optional = FabricLoader.getInstance()
|
||||
.getModContainer(modID);
|
||||
return optional.orElse(null);
|
||||
}
|
||||
|
||||
public static String getModVersion(String modID) {
|
||||
Optional<ModContainer> optional = FabricLoader.getInstance()
|
||||
.getModContainer(modID);
|
||||
|
@ -61,7 +67,18 @@ public class HelloClient extends DataHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void serializeData(FriendlyByteBuf buf) {
|
||||
protected boolean prepareData(boolean isClient) {
|
||||
if (!Configs.MAIN_CONFIG.getBoolean(Configs.MAIN_SYNC_CATEGORY, "enabled", true)) {
|
||||
BCLib.LOGGER.info("Auto-Sync was disabled on the server.");
|
||||
return false;
|
||||
}
|
||||
|
||||
DataExchange.getInstance().loadSyncFolder();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void serializeData(FriendlyByteBuf buf, boolean isClient) {
|
||||
final String vbclib = getBCLibVersion();
|
||||
BCLib.LOGGER.info("Sending Hello to Client. (server=" + vbclib + ")");
|
||||
final List<String> mods = DataExchangeAPI.registeredMods();
|
||||
|
|
|
@ -63,8 +63,18 @@ public class HelloServer extends DataHandler {
|
|||
super(DESCRIPTOR.IDENTIFIER, false);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void serializeData(FriendlyByteBuf buf) {
|
||||
protected boolean prepareData(boolean isClient) {
|
||||
if (!Configs.CLIENT_CONFIG.getBoolean(Configs.MAIN_SYNC_CATEGORY, "enabled", true)) {
|
||||
BCLib.LOGGER.info("Auto-Sync was disabled on the client.");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void serializeData(FriendlyByteBuf buf, boolean isClient) {
|
||||
BCLib.LOGGER.info("Sending hello to server.");
|
||||
buf.writeInt(DataFixerAPI.getModVersion(HelloClient.getBCLibVersion()));
|
||||
}
|
||||
|
@ -84,12 +94,6 @@ public class HelloServer extends DataHandler {
|
|||
return;
|
||||
}
|
||||
|
||||
if (Configs.MAIN_CONFIG.getBoolean(Configs.MAIN_SYNC_CATEGORY, "enabled", true)) {
|
||||
reply(new HelloClient(), server);
|
||||
} else {
|
||||
BCLib.LOGGER.info("Auto-Sync was disabled on the server.");
|
||||
}
|
||||
|
||||
DataExchange.getInstance().loadSyncFolder();
|
||||
reply(new HelloClient(), server);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ public class RequestFiles extends DataHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void serializeData(FriendlyByteBuf buf) {
|
||||
protected void serializeData(FriendlyByteBuf buf, boolean isClient) {
|
||||
newToken();
|
||||
writeString(buf, currentToken);
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ public class SendFiles extends DataHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void serializeData(FriendlyByteBuf buf) {
|
||||
protected void serializeData(FriendlyByteBuf buf, boolean isClient) {
|
||||
List<AutoFileSyncEntry> existingFiles = files.stream().filter(e -> e.fileName.exists()).collect(Collectors.toList());
|
||||
/*
|
||||
//this will try to send a file that was not registered or requested by the client
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue