Skip to content

Commit

Permalink
Merge pull request #13 from End-Tech/gui_3
Browse files Browse the repository at this point in the history
Made gui more convenient
  • Loading branch information
nnnik authored Nov 22, 2020
2 parents 19e0528 + 799392d commit ece88a1
Show file tree
Hide file tree
Showing 24 changed files with 110 additions and 36 deletions.
9 changes: 4 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ Syncmatica is a mod which aims to mod into litematica so that schematics and the

## Setup

[Syncmatica](https://github.com/End-Tech/syncmatica/releases/tag/v0.1.1) is a mod for both Minecraft client and server.
It's made for [Minecraft Fabric 1.16.3](https://fabricmc.net/).
[Syncmatica](https://github.com/End-Tech/syncmatica/releases/tag/v0.1.2) is a mod for both Minecraft client and server.
It's made for [Minecraft Fabric 1.16.x](https://fabricmc.net/).
It relies on [litematica and malilib](https://masa.dy.fi/mcmods/client_mods/?mcver=1.16.3) to provide all client features.

### Client
Expand All @@ -29,9 +29,8 @@ Another is in your schematic placement overview and allows you to share your own

## Project Status & Road Map

This will be the first full release.
Many features are not implemented yet that I want to have implemented.
Most of the last update focused on updating the mod to a state that makes it very useable.
The current update focused on interactions with litematica and restoring ease of use.
I pushed out these changes before finally starting on a longer update with regards to modifying the placement on the server and making some backend changes.

As of now there is no way to modify placements on the server.
That feature is planned in the next release.
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
loader_version=0.10.3+build.211

# Mod Properties
mod_version=0.1.1
mod_version=0.1.2
maven_group=io.github.samipourquoi
archives_base_name=syncmatica

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public class Syncmatica {
public static final String VERSION = "0.1.1";
public static final String MOD_ID = "syncmatica";
public static final String SERVER_PATH = "."+File.separator+"syncmatics";
public static final String CLIENT_PATH = "."+File.separator+"schematics"+File.separator+".sync";
public static final String CLIENT_PATH = "."+File.separator+"schematics"+File.separator+"sync";

private static CommunicationManager comms;
private static IFileStorage data;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@

import io.github.samipourquoi.syncmatica.IFileStorage;
import io.github.samipourquoi.syncmatica.SyncmaticManager;
import io.github.samipourquoi.syncmatica.communication.exchange.DownloadExchange;
import io.github.samipourquoi.syncmatica.communication.exchange.Exchange;
import io.github.samipourquoi.syncmatica.communication.exchange.ExchangeTarget;
import io.github.samipourquoi.syncmatica.communication.exchange.VersionHandshakeClient;
import io.github.samipourquoi.syncmatica.ServerPlacement;
import io.github.samipourquoi.syncmatica.communication.Exchange.DownloadExchange;
import io.github.samipourquoi.syncmatica.communication.Exchange.Exchange;
import io.github.samipourquoi.syncmatica.communication.Exchange.ExchangeTarget;
import io.github.samipourquoi.syncmatica.communication.Exchange.VersionHandshakeClient;
import io.github.samipourquoi.syncmatica.litematica.LitematicManager;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.util.Identifier;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@

import io.github.samipourquoi.syncmatica.IFileStorage;
import io.github.samipourquoi.syncmatica.SyncmaticManager;
import io.github.samipourquoi.syncmatica.communication.exchange.DownloadExchange;
import io.github.samipourquoi.syncmatica.communication.exchange.Exchange;
import io.github.samipourquoi.syncmatica.communication.exchange.ExchangeTarget;
import io.github.samipourquoi.syncmatica.ServerPlacement;
import io.github.samipourquoi.syncmatica.communication.Exchange.DownloadExchange;
import io.github.samipourquoi.syncmatica.communication.Exchange.Exchange;
import io.github.samipourquoi.syncmatica.communication.Exchange.ExchangeTarget;
import io.netty.buffer.Unpooled;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.util.BlockMirror;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@
import io.github.samipourquoi.syncmatica.LocalLitematicState;
import io.github.samipourquoi.syncmatica.SyncmaticManager;
import io.github.samipourquoi.syncmatica.Syncmatica;
import io.github.samipourquoi.syncmatica.communication.exchange.DownloadExchange;
import io.github.samipourquoi.syncmatica.communication.exchange.Exchange;
import io.github.samipourquoi.syncmatica.communication.exchange.ExchangeTarget;
import io.github.samipourquoi.syncmatica.communication.exchange.UploadExchange;
import io.github.samipourquoi.syncmatica.communication.exchange.VersionHandshakeServer;
import io.github.samipourquoi.syncmatica.ServerPlacement;
import io.github.samipourquoi.syncmatica.communication.Exchange.DownloadExchange;
import io.github.samipourquoi.syncmatica.communication.Exchange.Exchange;
import io.github.samipourquoi.syncmatica.communication.Exchange.ExchangeTarget;
import io.github.samipourquoi.syncmatica.communication.Exchange.UploadExchange;
import io.github.samipourquoi.syncmatica.communication.Exchange.VersionHandshakeServer;
import io.netty.buffer.Unpooled;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.util.Identifier;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.samipourquoi.syncmatica.communication.Exchange;
package io.github.samipourquoi.syncmatica.communication.exchange;

import java.util.UUID;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.samipourquoi.syncmatica.communication.Exchange;
package io.github.samipourquoi.syncmatica.communication.exchange;

import java.io.File;
import java.io.FileOutputStream;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.samipourquoi.syncmatica.communication.Exchange;
package io.github.samipourquoi.syncmatica.communication.exchange;

import io.github.samipourquoi.syncmatica.communication.CommunicationManager;
import net.minecraft.network.PacketByteBuf;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.samipourquoi.syncmatica.communication.Exchange;
package io.github.samipourquoi.syncmatica.communication.exchange;

import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.network.PacketByteBuf;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.samipourquoi.syncmatica.communication.Exchange;
package io.github.samipourquoi.syncmatica.communication.exchange;

import java.io.File;
import java.io.FileNotFoundException;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.samipourquoi.syncmatica.communication.Exchange;
package io.github.samipourquoi.syncmatica.communication.exchange;

import java.io.File;
import java.io.FileInputStream;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.samipourquoi.syncmatica.communication.Exchange;
package io.github.samipourquoi.syncmatica.communication.exchange;

import org.apache.logging.log4j.LogManager;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.samipourquoi.syncmatica.communication.Exchange;
package io.github.samipourquoi.syncmatica.communication.exchange;

import java.util.Collection;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@


import fi.dy.masa.litematica.data.DataManager;
import fi.dy.masa.litematica.data.SchematicHolder;
import fi.dy.masa.litematica.schematic.LitematicaSchematic;
import fi.dy.masa.litematica.schematic.placement.SchematicPlacement;
import io.github.samipourquoi.syncmatica.RedirectFileStorage;
Expand Down Expand Up @@ -55,7 +56,7 @@ public void renderSyncmatic(ServerPlacement placement) {
}
File file = Syncmatica.getFileStorage().getLocalLitematic(placement);

LitematicaSchematic schematic = LitematicaSchematic.createFromFile(file.getParentFile(), file.getName());
LitematicaSchematic schematic = (LitematicaSchematic) SchematicHolder.getInstance().getOrLoad(file);

if (schematic == null) {
throw new RuntimeException("Could not create schematic from file");
Expand Down Expand Up @@ -173,4 +174,23 @@ public void commitLoad() {
}
preLoadList = null;
}

public void unrenderSchematic(LitematicaSchematic l) {
rendering.entrySet().removeIf(e ->{
if (e.getValue().getSchematic() == l) {
Syncmatica.getSyncmaticManager().updateServerPlacement(e.getKey());
return true;
}
return false;
});
}

public void unrenderSchematicPlacement(SchematicPlacement placement) {
UUID id = ((IIDContainer)placement).getServerId();
ServerPlacement p = Syncmatica.getSyncmaticManager().getPlacement(id);
if (p != null) {
unrenderSyncmatic(p);
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
import fi.dy.masa.malilib.gui.button.IButtonActionListener;
import io.github.samipourquoi.syncmatica.Syncmatica;
import io.github.samipourquoi.syncmatica.communication.ClientCommunicationManager;
import io.github.samipourquoi.syncmatica.communication.Exchange.ExchangeTarget;
import io.github.samipourquoi.syncmatica.communication.Exchange.ShareLitematicExchange;
import io.github.samipourquoi.syncmatica.communication.exchange.ExchangeTarget;
import io.github.samipourquoi.syncmatica.communication.exchange.ShareLitematicExchange;
import io.github.samipourquoi.syncmatica.litematica.LitematicManager;
import net.minecraft.client.network.ClientPlayNetworkHandler;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import io.github.samipourquoi.syncmatica.Syncmatica;
import io.github.samipourquoi.syncmatica.communication.ClientCommunicationManager;
import io.github.samipourquoi.syncmatica.communication.PacketType;
import io.github.samipourquoi.syncmatica.communication.Exchange.ExchangeTarget;
import io.github.samipourquoi.syncmatica.communication.exchange.ExchangeTarget;
import io.github.samipourquoi.syncmatica.litematica.LitematicManager;
import io.netty.buffer.Unpooled;
import io.github.samipourquoi.syncmatica.ServerPlacement;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package io.github.samipourquoi.syncmatica.litematica_mixin;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;

import fi.dy.masa.malilib.gui.button.ButtonBase;
import fi.dy.masa.malilib.gui.button.IButtonActionListener;

@Mixin(ButtonBase.class)
public interface MixinButtonBase {

@Accessor("actionListener")
IButtonActionListener getActionListener();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package io.github.samipourquoi.syncmatica.litematica_mixin;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

import fi.dy.masa.litematica.data.SchematicHolder;
import fi.dy.masa.litematica.schematic.LitematicaSchematic;
import io.github.samipourquoi.syncmatica.litematica.LitematicManager;

@Mixin(SchematicHolder.class)
public abstract class MixinSchematicHolder {

public MixinSchematicHolder() {}

@Inject(method="removeSchematic", at = @At("RETURN"), remap = false)
public void unloadSyncmatic(LitematicaSchematic schematic, CallbackInfoReturnable<Boolean> ci) {
LitematicManager.getInstance().unrenderSchematic(schematic);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@
import fi.dy.masa.litematica.gui.widgets.WidgetListSchematicPlacements;
import fi.dy.masa.litematica.gui.widgets.WidgetSchematicPlacement;
import fi.dy.masa.litematica.schematic.placement.SchematicPlacement;
import fi.dy.masa.malilib.gui.GuiBase;
import fi.dy.masa.malilib.gui.button.ButtonBase;
import fi.dy.masa.malilib.gui.button.ButtonGeneric;
import fi.dy.masa.malilib.gui.button.IButtonActionListener;
import fi.dy.masa.malilib.gui.widgets.WidgetBase;
import fi.dy.masa.malilib.gui.widgets.WidgetListEntryBase;
import io.github.samipourquoi.syncmatica.Syncmatica;
Expand All @@ -33,10 +35,24 @@ public MixinWidgetSchematicPlacement(int x, int y, int width, int height, Schema
@Inject(method = "<init>", at = @At("TAIL"), remap = false)
public void addUploadButton(int x, int y, int width, int height, boolean isOdd,
SchematicPlacement placement, int listIndex, WidgetListSchematicPlacements parent, CallbackInfo ci) {
int i = 0;
if (LitematicManager.getInstance().isSyncmatic(placement)) {
for (WidgetBase base: this.subWidgets) {
if (base instanceof ButtonBase) {
((ButtonBase) base).setEnabled(false);
ButtonBase button = (ButtonBase)base;
if (++i == 1) {
IButtonActionListener oldAction = ((MixinButtonBase)button).getActionListener();
button.setActionListener((b,k)-> {
if (GuiBase.isShiftDown()) {
LitematicManager.getInstance().unrenderSchematicPlacement(placement);
return;
}
oldAction.actionPerformedWithButton(b, k);
});

} else if (i == 3) {
((ButtonBase) base).setEnabled(false);
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import io.github.samipourquoi.syncmatica.Syncmatica;
import io.github.samipourquoi.syncmatica.communication.ClientCommunicationManager;
import io.github.samipourquoi.syncmatica.communication.CommunicationManager;
import io.github.samipourquoi.syncmatica.communication.Exchange.ExchangeTarget;
import io.github.samipourquoi.syncmatica.communication.exchange.ExchangeTarget;
import io.github.samipourquoi.syncmatica.litematica.ScreenUpdater;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

import io.github.samipourquoi.syncmatica.Syncmatica;
import io.github.samipourquoi.syncmatica.communication.ServerCommunicationManager;
import io.github.samipourquoi.syncmatica.communication.Exchange.ExchangeTarget;
import io.github.samipourquoi.syncmatica.communication.exchange.ExchangeTarget;
import net.minecraft.network.ClientConnection;
import net.minecraft.network.NetworkThreadUtils;
import net.minecraft.network.PacketByteBuf;
Expand Down
3 changes: 2 additions & 1 deletion src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@
"name": "Syncmatica",
"description": "Server-wide shared litematics.",
"authors": [
"nnnik",
"samipourquoi"
],
"contact": {
"sources": "https://github.com/samipourquoi/syncmatica"
"sources": "https://github.com/endtech/syncmatica"
},
"license": "CC0-1.0",
"environment": "*",
Expand Down
4 changes: 3 additions & 1 deletion src/main/resources/syncmatica.litematica_mixin.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@
"MixinWidgetListSchematicPlacement",
"MixinSchematicPlacement",
"MixinWidgetSchematicPlacement",
"MixinGuiBase"
"MixinGuiBase",
"MixinSchematicHolder",
"MixinButtonBase"
],
"server": [],

Expand Down

0 comments on commit ece88a1

Please sign in to comment.