Unpolute public API

This commit is contained in:
Frank 2021-08-06 08:23:23 +02:00
parent 9b92c6cbf2
commit feee3514a9
5 changed files with 172 additions and 115 deletions

View file

@ -7,68 +7,24 @@ import net.fabricmc.fabric.api.client.networking.v1.ClientLoginConnectionEvents;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
import net.minecraft.network.FriendlyByteBuf;
import ru.bclib.api.dataexchange.handler.DataExchange;
import java.io.File;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.function.Function;
import java.util.function.Predicate;
public class DataExchangeAPI {
public class DataExchangeAPI extends DataExchange {
private final static List<String> MODS = Lists.newArrayList();
private static DataExchangeAPI instance;
private ConnectorServerside server;
private ConnectorClientside client;
protected final Set<DataHandlerDescriptor> descriptors;
private static class AutoFileSyncEntry {
public final Predicate<Object> needTransfer;
public final File fileName;
protected DataExchangeAPI() {
super((api) -> new ConnectorClientside(api), (api) -> new ConnectorServerside(api));
}
private AutoFileSyncEntry(Predicate<Object> needTransfer, File fileName) {
this.needTransfer = needTransfer;
this.fileName = fileName;
}
}
protected final List<AutoFileSyncEntry> autoSyncFiles = new ArrayList<>(4);
private DataExchangeAPI(){
descriptors = new HashSet<>();
}
static DataExchangeAPI getInstance(){
if (instance==null){
instance = new DataExchangeAPI();
}
return instance;
}
@Environment(EnvType.CLIENT)
private void initClientside(){
if (client!=null) return;
client = new ConnectorClientside(this);
ClientLoginConnectionEvents.INIT.register((a, b) ->{
System.out.println("INIT");
});
ClientLoginConnectionEvents.QUERY_START.register((a, b) ->{
System.out.println("INIT");
});
ClientPlayConnectionEvents.INIT.register(client::onPlayInit);
ClientPlayConnectionEvents.JOIN.register(client::onPlayReady);
ClientPlayConnectionEvents.DISCONNECT.register(client::onPlayDisconnect);
}
private void initServerSide(){
if (server!=null) return;
server = new ConnectorServerside(this);
ServerPlayConnectionEvents.INIT.register(server::onPlayInit);
ServerPlayConnectionEvents.JOIN.register(server::onPlayReady);
ServerPlayConnectionEvents.DISCONNECT.register(server::onPlayDisconnect);
}
/**
* Register a mod to participate in the DataExchange.
*
@ -91,34 +47,10 @@ public class DataExchangeAPI {
* @param desc The Descriptor you want to add.
*/
public static void registerDescriptor(DataHandlerDescriptor desc){
DataExchangeAPI api = DataExchangeAPI.getInstance();
DataExchangeAPI api = DataExchange.getInstance();
api.descriptors.add(desc);
}
/**
* Initializes all datastructures that need to exist in the client component.
* <p>
* This is automatically called by BCLib. You can register {@link DataHandler}-Objects before this Method is called
*/
@Environment(EnvType.CLIENT)
public static void prepareClientside(){
DataExchangeAPI api = DataExchangeAPI.getInstance();
api.initClientside();
}
/**
* Initializes all datastructures that need to exist in the server component.
* <p>
* This is automatically called by BCLib. You can register {@link DataHandler}-Objects before this Method is called
*/
public static void prepareServerside(){
DataExchangeAPI api = DataExchangeAPI.getInstance();
api.initServerSide();
}
/**
* Sends the Handler.
* <p>
@ -136,24 +68,6 @@ public class DataExchangeAPI {
DataExchangeAPI.getInstance().client.sendToServer(h);
}
}
/**
* Automatically called before the player enters the world.
* <p>
* This is automatically called by BCLib. It will send all {@link DataHandler}-Objects that have {@link DataHandlerDescriptor#sendBeforeEnter} set to*
* {@Code true},
*/
@Environment(EnvType.CLIENT)
public static void sendOnEnter(){
getInstance().descriptors.forEach((desc)-> {
if (desc.sendBeforeEnter){
DataHandler h = desc.JOIN_INSTANCE.get();
if (!h.getOriginatesOnServer()) {
getInstance().client.sendToServer(h);
}
}
});
}
/**
* Registers a File for automatic client syncing.
@ -162,6 +76,6 @@ public class DataExchangeAPI {
* @param fileName The name of the File
*/
public static void addAutoSyncFile(Predicate<Object> needTransfer, File fileName){
DataExchangeAPI.getInstance().autoSyncFiles.add(new AutoFileSyncEntry(needTransfer, fileName));
DataExchangeAPI.getInstance().addAutoSyncFileData(needTransfer, fileName);
}
}