Added Step to handler that allows users to stop the message from beeing sent and prepare some data.

This commit is contained in:
Frank 2021-08-17 09:52:48 +02:00
parent 132623419d
commit 742ea56e34
5 changed files with 58 additions and 25 deletions

View file

@ -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,26 +79,32 @@ public abstract class DataHandler {
}
void sendToClient(MinecraftServer server){
if (prepareData(false)) {
FriendlyByteBuf buf = PacketByteBufs.create();
serializeData(buf);
serializeData(buf, false);
for (ServerPlayer player : PlayerLookup.all(server)) {
ServerPlayNetworking.send(player, this.identifier, buf);
}
}
}
void sendToClient(MinecraftServer server, ServerPlayer player){
if (prepareData(false)) {
FriendlyByteBuf buf = PacketByteBufs.create();
serializeData(buf);
serializeData(buf, false);
ServerPlayNetworking.send(player, this.identifier, buf);
}
}
@Environment(EnvType.CLIENT)
void sendToServer(Minecraft client){
if (prepareData(true)) {
FriendlyByteBuf buf = PacketByteBufs.create();
serializeData(buf);
serializeData(buf, true);
ClientPlayNetworking.send(identifier, buf);
}
}
@Override
public boolean equals(Object o) {

View file

@ -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();

View file

@ -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();
}
}

View file

@ -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);

View file

@ -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