Offer Mod Info Screen
This commit is contained in:
parent
9d7fa9f925
commit
b959e17c18
7 changed files with 41 additions and 18 deletions
|
@ -40,6 +40,9 @@ import java.util.stream.Collectors;
|
||||||
* For Details refer to {@link HelloServer}
|
* For Details refer to {@link HelloServer}
|
||||||
*/
|
*/
|
||||||
public class HelloClient extends DataHandler.FromServer {
|
public class HelloClient extends DataHandler.FromServer {
|
||||||
|
public interface IServerModMap extends Map<String, Pair<String, Integer>> {}
|
||||||
|
public static class ServerModMap extends HashMap<String, Pair<String, Integer>> implements IServerModMap {}
|
||||||
|
|
||||||
public static DataHandlerDescriptor DESCRIPTOR = new DataHandlerDescriptor(new ResourceLocation(BCLib.MOD_ID, "hello_client"), HelloClient::new, false, false);
|
public static DataHandlerDescriptor DESCRIPTOR = new DataHandlerDescriptor(new ResourceLocation(BCLib.MOD_ID, "hello_client"), HelloClient::new, false, false);
|
||||||
|
|
||||||
public HelloClient() {
|
public HelloClient() {
|
||||||
|
@ -132,7 +135,8 @@ public class HelloClient extends DataHandler.FromServer {
|
||||||
}
|
}
|
||||||
|
|
||||||
String bclibVersion = "0.0.0";
|
String bclibVersion = "0.0.0";
|
||||||
Map<String, Pair<String, Integer>> modVersion = new HashMap<>();
|
|
||||||
|
IServerModMap modVersion = new ServerModMap();
|
||||||
List<AutoSync.AutoSyncTriple> autoSyncedFiles = null;
|
List<AutoSync.AutoSyncTriple> autoSyncedFiles = null;
|
||||||
List<SyncFolderDescriptor> autoSynFolders = null;
|
List<SyncFolderDescriptor> autoSynFolders = null;
|
||||||
|
|
||||||
|
@ -145,7 +149,7 @@ public class HelloClient extends DataHandler.FromServer {
|
||||||
|
|
||||||
|
|
||||||
//read Plugin Versions
|
//read Plugin Versions
|
||||||
modVersion = new HashMap<>();
|
modVersion = new ServerModMap();
|
||||||
int count = buf.readInt();
|
int count = buf.readInt();
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
final String id = readString(buf);
|
final String id = readString(buf);
|
||||||
|
@ -374,7 +378,7 @@ public class HelloClient extends DataHandler.FromServer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
client.setScreen(new SyncFilesScreen(modFiles, configFiles, singleFiles, folderFiles, filesToRemove.size(), (downloadMods, downloadConfigs, downloadFiles, removeFiles) -> {
|
client.setScreen(new SyncFilesScreen(modFiles, configFiles, singleFiles, folderFiles, filesToRemove.size(), modVersion, (downloadMods, downloadConfigs, downloadFiles, removeFiles) -> {
|
||||||
if (downloadMods || downloadConfigs || downloadFiles) {
|
if (downloadMods || downloadConfigs || downloadFiles) {
|
||||||
BCLib.LOGGER.info("Updating local Files:");
|
BCLib.LOGGER.info("Updating local Files:");
|
||||||
List<AutoSyncID.WithContentOverride> localChanges = new ArrayList<>(files.toArray().length);
|
List<AutoSyncID.WithContentOverride> localChanges = new ArrayList<>(files.toArray().length);
|
||||||
|
|
|
@ -156,7 +156,8 @@ public class SendFiles extends DataHandler.FromServer {
|
||||||
if (e instanceof AutoFileSyncEntry.ForModFileRequest mase){
|
if (e instanceof AutoFileSyncEntry.ForModFileRequest mase){
|
||||||
removeAfter = path;
|
removeAfter = path;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
String name = "bclib_synced_" + mase.modID + "_" + mase.version.replace(".", "_") + ".jar";
|
final String prefix = "_bclib_synced";
|
||||||
|
String name = prefix + mase.modID + "_" + mase.version.replace(".", "_") + ".jar";
|
||||||
do {
|
do {
|
||||||
if (path != null) {
|
if (path != null) {
|
||||||
//move to the same directory as the existing Mod
|
//move to the same directory as the existing Mod
|
||||||
|
@ -168,7 +169,7 @@ public class SendFiles extends DataHandler.FromServer {
|
||||||
path = PathUtil.MOD_FOLDER.resolve(name);
|
path = PathUtil.MOD_FOLDER.resolve(name);
|
||||||
}
|
}
|
||||||
count++;
|
count++;
|
||||||
name = "bclib_synced_" + mase.modID + "_" + mase.version.replace(".", "_") + "__" + String.format("%03d", count) + ".jar";
|
name = prefix + mase.modID + "_" + mase.version.replace(".", "_") + "__" + String.format("%03d", count) + ".jar";
|
||||||
} while (path.toFile().exists());
|
} while (path.toFile().exists());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -134,7 +134,7 @@ public class GridLayout extends GridColumn {
|
||||||
GridElement el = this.buildElement((int)this.width, 0, 1, 0,0, elements);
|
GridElement el = this.buildElement((int)this.width, 0, 1, 0,0, elements);
|
||||||
this.height = el.height;
|
this.height = el.height;
|
||||||
if (centerVertically && el.height + initialTopPadding < screenHeight) {
|
if (centerVertically && el.height + initialTopPadding < screenHeight) {
|
||||||
topPadding = (screenHeight - el.height - initialTopPadding) >> 1;
|
topPadding = (screenHeight - el.height) >> 1;
|
||||||
} else {
|
} else {
|
||||||
topPadding = initialTopPadding;
|
topPadding = initialTopPadding;
|
||||||
}
|
}
|
||||||
|
|
|
@ -144,12 +144,11 @@ public abstract class GridScreen extends Screen {
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getMaxScrollPos() {
|
public int getMaxScrollPos() {
|
||||||
return height-getScrollHeight();
|
return height - (getScrollHeight() + topPadding);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isScrollable() {
|
public boolean isScrollable() {
|
||||||
if (grid==null) return false;
|
return height<getScrollHeight();
|
||||||
return height<grid.getHeight();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isMouseOverScroller(double x, double y) {
|
public boolean isMouseOverScroller(double x, double y) {
|
||||||
|
@ -166,7 +165,7 @@ public abstract class GridScreen extends Screen {
|
||||||
final int y1 = height;
|
final int y1 = height;
|
||||||
final int y0 = 0;
|
final int y0 = 0;
|
||||||
final int yd = y1 - y0;
|
final int yd = y1 - y0;
|
||||||
final int maxPosition = getScrollHeight();
|
final int maxPosition = getScrollHeight() + topPadding;
|
||||||
|
|
||||||
final int x0 = width-SCROLLER_WIDTH;
|
final int x0 = width-SCROLLER_WIDTH;
|
||||||
final int x1 = width;
|
final int x1 = width;
|
||||||
|
|
|
@ -159,7 +159,7 @@ public class ModListScreen extends BCLibScreen {
|
||||||
if (description != null) {
|
if (description != null) {
|
||||||
grid.addSpacerRow();
|
grid.addSpacerRow();
|
||||||
grid.addRow().addMessage(description, font, GridLayout.Alignment.CENTER);
|
grid.addRow().addMessage(description, font, GridLayout.Alignment.CENTER);
|
||||||
grid.addSpacerRow(20);
|
grid.addSpacerRow(8);
|
||||||
}
|
}
|
||||||
|
|
||||||
GridRow row = grid.addRow();
|
GridRow row = grid.addRow();
|
||||||
|
@ -167,7 +167,7 @@ public class ModListScreen extends BCLibScreen {
|
||||||
GridColumn col = row.addColumn(200, GridLayout.GridValueType.CONSTANT);
|
GridColumn col = row.addColumn(200, GridLayout.GridValueType.CONSTANT);
|
||||||
addModDesc(col, mods, serverInfo, this);
|
addModDesc(col, mods, serverInfo, this);
|
||||||
|
|
||||||
grid.addSpacerRow(10);
|
grid.addSpacerRow(8);
|
||||||
row = grid.addRow();
|
row = grid.addRow();
|
||||||
row.addFiller();
|
row.addFiller();
|
||||||
row.addButton(CommonComponents.GUI_BACK, 20, font, (n)-> {
|
row.addButton(CommonComponents.GUI_BACK, 20, font, (n)-> {
|
||||||
|
@ -175,8 +175,6 @@ public class ModListScreen extends BCLibScreen {
|
||||||
System.out.println("Closing");
|
System.out.println("Closing");
|
||||||
});
|
});
|
||||||
row.addFiller();
|
row.addFiller();
|
||||||
|
|
||||||
grid.addSpacerRow(topPadding);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,12 +2,15 @@ package ru.bclib.gui.screens;
|
||||||
|
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.network.chat.CommonComponents;
|
import net.minecraft.network.chat.CommonComponents;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.network.chat.TranslatableComponent;
|
import net.minecraft.network.chat.TranslatableComponent;
|
||||||
|
import ru.bclib.api.dataexchange.handler.autosync.HelloClient;
|
||||||
import ru.bclib.gui.gridlayout.GridCheckboxCell;
|
import ru.bclib.gui.gridlayout.GridCheckboxCell;
|
||||||
import ru.bclib.gui.gridlayout.GridLayout.Alignment;
|
import ru.bclib.gui.gridlayout.GridLayout.Alignment;
|
||||||
import ru.bclib.gui.gridlayout.GridRow;
|
import ru.bclib.gui.gridlayout.GridRow;
|
||||||
|
import ru.bclib.util.ModUtil;
|
||||||
|
|
||||||
@Environment(EnvType.CLIENT)
|
@Environment(EnvType.CLIENT)
|
||||||
public class SyncFilesScreen extends BCLibScreen {
|
public class SyncFilesScreen extends BCLibScreen {
|
||||||
|
@ -17,10 +20,11 @@ public class SyncFilesScreen extends BCLibScreen {
|
||||||
private final boolean hasFiles;
|
private final boolean hasFiles;
|
||||||
private final boolean hasMods;
|
private final boolean hasMods;
|
||||||
private final boolean shouldDelete;
|
private final boolean shouldDelete;
|
||||||
|
private final HelloClient.IServerModMap serverInfo;
|
||||||
public SyncFilesScreen(int modFiles, int configFiles, int singleFiles, int folderFiles, int deleteFiles, Listener listener) {
|
public SyncFilesScreen(int modFiles, int configFiles, int singleFiles, int folderFiles, int deleteFiles, HelloClient.IServerModMap serverInfo, Listener listener) {
|
||||||
super(new TranslatableComponent("title.bclib.syncfiles"));
|
super(new TranslatableComponent("title.bclib.syncfiles"));
|
||||||
|
|
||||||
|
this.serverInfo = serverInfo;
|
||||||
this.description = new TranslatableComponent("message.bclib.syncfiles");
|
this.description = new TranslatableComponent("message.bclib.syncfiles");
|
||||||
this.listener = listener;
|
this.listener = listener;
|
||||||
|
|
||||||
|
@ -45,6 +49,19 @@ public class SyncFilesScreen extends BCLibScreen {
|
||||||
row = grid.addRow();
|
row = grid.addRow();
|
||||||
mods = row.addCheckbox(new TranslatableComponent("message.bclib.syncfiles.mods"), hasMods, BUTTON_HEIGHT, this.font);
|
mods = row.addCheckbox(new TranslatableComponent("message.bclib.syncfiles.mods"), hasMods, BUTTON_HEIGHT, this.font);
|
||||||
mods.setEnabled(hasMods);
|
mods.setEnabled(hasMods);
|
||||||
|
if (hasMods) {
|
||||||
|
row.addSpacer();
|
||||||
|
row.addButton(new TranslatableComponent("title.bclib.more"), 20, font, (button)->{
|
||||||
|
ModListScreen scr = new ModListScreen(
|
||||||
|
this,
|
||||||
|
new TranslatableComponent("title.bclib.syncfiles.modlist"),
|
||||||
|
new TranslatableComponent("message.bclib.syncfiles.modlist"),
|
||||||
|
ModUtil.getMods(),
|
||||||
|
serverInfo
|
||||||
|
);
|
||||||
|
Minecraft.getInstance().setScreen(scr);
|
||||||
|
});
|
||||||
|
}
|
||||||
grid.addSpacerRow();
|
grid.addSpacerRow();
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -27,5 +27,9 @@
|
||||||
"title.config.bclib.client.auto_sync.acceptFiles": "Accept incoming Files",
|
"title.config.bclib.client.auto_sync.acceptFiles": "Accept incoming Files",
|
||||||
"title.config.bclib.client.auto_sync.acceptMods": "Accept incoming Mods",
|
"title.config.bclib.client.auto_sync.acceptMods": "Accept incoming Mods",
|
||||||
"title.config.bclib.client.auto_sync.syncModFolder": "Sync entire Mod-Folder from Server",
|
"title.config.bclib.client.auto_sync.syncModFolder": "Sync entire Mod-Folder from Server",
|
||||||
"title.config.bclib.client.auto_sync.debugHashes": "Print Auto-Sync Debug-Hashes to Log"
|
"title.config.bclib.client.auto_sync.debugHashes": "Print Auto-Sync Debug-Hashes to Log",
|
||||||
|
|
||||||
|
"title.bclib.more": "More",
|
||||||
|
"title.bclib.syncfiles.modlist": "Mod Information",
|
||||||
|
"message.bclib.syncfiles.modlist": "The following shows the state of your installed installed Mods.\n\nAll Mods that do not exist locally, or have a different version will on the Server will be synchronized."
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue