Skip to content

Commit 0737f86

Browse files
committed
Lots of bug fixes
1 parent 7fd9bd7 commit 0737f86

File tree

13 files changed

+109
-38
lines changed

13 files changed

+109
-38
lines changed

src/main/java/io/github/techstreet/dfscript/screen/script/ScriptAddScreen.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ public class ScriptAddScreen extends CScreen {
2828
CTextField searchBox;
2929

3030
public ScriptAddScreen() {
31-
super(110, 106);
31+
super(111, 106);
3232
open();
3333
}
3434

3535
private void open() {
36-
CPlainPanel root = new CPlainPanel(0, 0, 110, 106);
36+
CPlainPanel root = new CPlainPanel(0, 0, 111, 106);
3737

38-
panel = new CScrollPanel(0, 0, 110, 106);
38+
panel = new CScrollPanel(0, 17, 111, 84);
3939

4040
root.add(panel);
4141

@@ -99,8 +99,8 @@ public static String readAll(Reader rd) throws IOException {
9999
}
100100

101101
private void fillPanel(List<VirtualScript> scriptList) {
102-
int y = 35;
103-
CButton newButton = new CButton(7, 23, 96, 10, "New Script", () -> {
102+
int y = 18;
103+
CButton newButton = new CButton(7, 6, 96, 10, "New Script", () -> {
104104
DFScript.MC.setScreen(new ScriptCreationScreen());
105105
});
106106

@@ -119,6 +119,11 @@ private void fillPanel(List<VirtualScript> scriptList) {
119119
long minutes = (time % 3600) / 60;
120120
long seconds = time % 60;
121121

122-
panel.add(new CText(8, 17, Text.literal("Last update: " + minutes + "m " + seconds + "s" + " ago!")));
122+
panel.add(new CText(8, 0, Text.literal("Last update: " + minutes + "m " + seconds + "s" + " ago!")));
123+
}
124+
125+
@Override
126+
public void close() {
127+
DFScript.MC.setScreen(new ScriptListScreen());
123128
}
124129
}

src/main/java/io/github/techstreet/dfscript/screen/script/ScriptCreationScreen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ protected ScriptCreationScreen() {
3535
}
3636

3737
ScriptManager.getInstance().createScript(name.getText());
38-
io.github.techstreet.dfscript.DFScript.MC.setScreen(new ScriptListScreen());
38+
DFScript.MC.setScreen(new ScriptListScreen());
3939
}));
4040

4141
widgets.add(new CButton(50, 42, 48, 15, "Cancel", () -> {

src/main/java/io/github/techstreet/dfscript/screen/script/ScriptEditActionScreen.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public ScriptEditActionScreen(ScriptAction action, Script script) {
5757
} else {
5858
throw new IllegalArgumentException("Invalid argument type");
5959
}
60+
6061
widgets.add(new CItem(5, y, icon));
6162
widgets.add(new CText(15, y + 2, Text.literal(text)));
6263

src/main/java/io/github/techstreet/dfscript/screen/script/ScriptEditScreen.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,7 @@
22

33
import io.github.techstreet.dfscript.DFScript;
44
import io.github.techstreet.dfscript.screen.CScreen;
5-
import io.github.techstreet.dfscript.screen.widget.CButton;
6-
import io.github.techstreet.dfscript.screen.widget.CItem;
7-
import io.github.techstreet.dfscript.screen.widget.CScrollPanel;
8-
import io.github.techstreet.dfscript.screen.widget.CText;
9-
import io.github.techstreet.dfscript.screen.widget.CWidget;
5+
import io.github.techstreet.dfscript.screen.widget.*;
106
import io.github.techstreet.dfscript.script.Script;
117
import io.github.techstreet.dfscript.script.ScriptManager;
128
import io.github.techstreet.dfscript.script.ScriptPart;
@@ -33,9 +29,14 @@ public ScriptEditScreen(Script script) {
3329
super(125, 100);
3430
this.script = script;
3531
panel = new CScrollPanel(0, 3, 120, 94);
32+
33+
CTextField description = new CTextField(script.getDescription(), 3, 3, 115, 20, true);
34+
description.setChangedListener(() -> script.setDescription(description.getText()));
35+
panel.add(description);
36+
3637
widgets.add(panel);
3738

38-
int y = 5;
39+
int y = 25;
3940
int index = 0;
4041
int indent = 0;
4142
for (ScriptPart part : script.getParts()) {

src/main/java/io/github/techstreet/dfscript/screen/script/ScriptInstallScreen.java

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
import io.github.techstreet.dfscript.screen.widget.CButton;
66
import io.github.techstreet.dfscript.screen.widget.CText;
77
import io.github.techstreet.dfscript.screen.widget.CTextField;
8+
import io.github.techstreet.dfscript.script.Script;
89
import io.github.techstreet.dfscript.script.ScriptManager;
910
import io.github.techstreet.dfscript.script.VirtualScript;
1011
import net.minecraft.text.Text;
1112

13+
import java.util.Objects;
1214
import java.util.regex.Matcher;
1315
import java.util.regex.Pattern;
1416

@@ -18,17 +20,34 @@ protected ScriptInstallScreen(VirtualScript script) {
1820
super(125, 40);
1921

2022
CText name = new CText(5, 5, Text.literal("Name: " + script.getName()));
21-
CText owner = new CText(5, 12, Text.literal("Owner: " + script.getOwner()));
23+
CText owner = new CText(5, 12, Text.literal("Creator: " + script.getOwner()));
2224
CText id = new CText(5, 19, Text.literal("ID: " + script.getId()));
2325

2426
widgets.add(name);
2527
widgets.add(owner);
2628
widgets.add(id);
2729

28-
widgets.add(new CButton(80, 26, 40, 10, "Install", () -> {
29-
script.download();
30-
DFScript.MC.setScreen(new ScriptListScreen());
31-
}));
30+
if (DFScript.MC.player != null) {
31+
for (Script s : ScriptManager.getInstance().getScripts()) {
32+
if (Objects.equals(s.getServer(), script.getId())) {
33+
if (Objects.equals(s.getOwner(), script.getOwner())) {
34+
return;
35+
}
36+
37+
widgets.add(new CButton(80, 26, 40, 10, "Update", () -> {
38+
script.download(true);
39+
DFScript.MC.setScreen(new ScriptListScreen());
40+
}));
41+
42+
return;
43+
}
44+
}
45+
46+
widgets.add(new CButton(80, 26, 40, 10, "Install", () -> {
47+
script.download(false);
48+
DFScript.MC.setScreen(new ScriptListScreen());
49+
}));
50+
}
3251
}
3352

3453
@Override

src/main/java/io/github/techstreet/dfscript/screen/script/ScriptListScreen.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,18 @@ public boolean mouseClicked(double x, double y, int button) {
6565
io.github.techstreet.dfscript.DFScript.MC.getSoundManager().play(PositionedSoundInstance.ambient(SoundEvents.UI_BUTTON_CLICK, 1f,1f));
6666

6767
if (button == 0) {
68-
io.github.techstreet.dfscript.DFScript.MC.setScreen(new ScriptEditScreen(s));
68+
DFScript.MC.setScreen(new ScriptEditScreen(s));
6969
} else {
7070
CButton delete = new CButton((int) x, (int) y, 40, 8, "Delete", () -> {
71-
io.github.techstreet.dfscript.DFScript.MC.setScreen(new ScriptDeletionScreen(s));
71+
DFScript.MC.setScreen(new ScriptDeletionScreen(s));
7272
});
73+
7374
CButton enableDisable;
7475
if (s.disabled()) {
7576
enableDisable = new CButton((int) x, (int) y + 8, 40, 8, "Enable", () -> {
7677
s.setDisabled(false);
7778
ScriptManager.getInstance().saveScript(s);
78-
io.github.techstreet.dfscript.DFScript.MC.setScreen(new ScriptListScreen());
79+
DFScript.MC.setScreen(new ScriptListScreen());
7980
});
8081
} else {
8182
enableDisable = new CButton((int) x, (int) y + 8, 40, 8, "Disable", () -> {

src/main/java/io/github/techstreet/dfscript/script/Script.java

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,11 @@
2424
import org.apache.logging.log4j.Logger;
2525

2626
public class Script {
27-
public static int scriptVersion = 1;
27+
public static int scriptVersion = 2;
2828

29-
private final String name;
29+
private String name;
3030
private String owner;
31+
private String description = "N/A";
3132
private int version = 0;
3233
private String server;
3334
private final List<ScriptPart> parts;
@@ -77,6 +78,7 @@ public void execute(ScriptTask task) {
7778
if (disabled) { // don't run the code if it's disabled obviously
7879
return;
7980
}
81+
8082
while (task.stack().peek() < parts.size()) { // check if there is still code to be run
8183
ScriptPart part = parts.get(task.stack().peek()); // get the script part (action or event who cares)
8284
if (part instanceof ScriptEvent) { // well maybe we do care?
@@ -199,6 +201,10 @@ public int getVersion() {
199201
return version;
200202
}
201203

204+
public String getDescription() {
205+
return description;
206+
}
207+
202208
public String getServer() {
203209
return server;
204210
}
@@ -211,6 +217,14 @@ public void setDisabled(boolean b) {
211217
disabled = b;
212218
}
213219

220+
public void setDescription(String description) {
221+
this.description = description;
222+
}
223+
224+
public void setName(String name) {
225+
this.name = name;
226+
}
227+
214228
public void setOwner(String owner) {
215229
this.owner = owner;
216230
}
@@ -236,7 +250,11 @@ public Script deserialize(JsonElement json, Type typeOfT, JsonDeserializationCon
236250
String owner = null;
237251
if (object.get("owner") != null) owner = object.get("owner").getAsString();
238252

239-
String serverId = object.get("server").getAsString();
253+
String serverId = null;
254+
if (object.get("server") != null) serverId = object.get("server").getAsString();
255+
256+
String description = "N/A";
257+
if (object.get("description") != null) description = object.get("description").getAsString();
240258

241259
List<ScriptPart> parts = new ArrayList<>();
242260
for (JsonElement element : object.get("actions").getAsJsonArray()) {
@@ -245,7 +263,9 @@ public Script deserialize(JsonElement json, Type typeOfT, JsonDeserializationCon
245263
}
246264

247265
boolean disabled = object.has("disabled") && object.get("disabled").getAsBoolean();
248-
int version = object.get("version").getAsInt();
266+
267+
int version = 0;
268+
if (object.get("version") != null) version = object.get("version").getAsInt();
249269

250270
return new Script(name, owner, serverId, parts, disabled, version);
251271
}
@@ -256,6 +276,7 @@ public JsonElement serialize(Script src, Type typeOfSrc, JsonSerializationContex
256276
object.addProperty("name", src.name);
257277
object.addProperty("owner", src.owner);
258278
object.addProperty("server", src.server);
279+
object.addProperty("description", src.description);
259280

260281
JsonArray array = new JsonArray();
261282
for (ScriptPart part : src.getParts()) {

src/main/java/io/github/techstreet/dfscript/script/ScriptManager.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,10 +169,8 @@ private void loadScript(File file) {
169169
String content = FileUtil.readFile(file.toPath());
170170
Script s = GSON.fromJson(content, Script.class);
171171
s.setFile(file);
172-
System.out.println(s.getServer());
173172

174173
ScriptMigrator.migrate(s);
175-
System.out.println(s.getServer());
176174

177175
if (s.getVersion() != Script.scriptVersion) throw new RuntimeException("this script uses version " + s.getVersion() + " when this version of DFScript uses version " + Script.scriptVersion + "!");
178176

src/main/java/io/github/techstreet/dfscript/script/ScriptMigrator.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,24 @@
33
import io.github.techstreet.dfscript.DFScript;
44

55
public class ScriptMigrator {
6-
public static Script migrate(Script script) {
6+
public static void migrate(Script script) {
7+
int previousVer = 0;
8+
79
if (script.getVersion() == 0) {
8-
script.setServer(null);
10+
script.setServer("None");
911
if (DFScript.MC.player != null) script.setOwner(DFScript.MC.player.getUuid().toString());
1012

1113
script.setVersion(1);
14+
}
1215

13-
ScriptManager.LOGGER.info("Migrated script '" + script.getName() + "' from version " + script.getVersion() + " to version " + script.getVersion());
16+
if (script.getVersion() == 1) {
17+
script.setDescription("N/A");
18+
script.setVersion(2);
1419
}
1520

16-
return script;
21+
if (previousVer != script.getVersion()) {
22+
ScriptManager.LOGGER.info("Migrated script '" + script.getName() + "' from version " + previousVer +" to version " + script.getVersion() + "!");
23+
ScriptManager.getInstance().saveScript(script);
24+
}
1725
}
1826
}

src/main/java/io/github/techstreet/dfscript/script/VirtualScript.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.google.gson.JsonObject;
44
import com.google.gson.JsonParser;
55
import io.github.techstreet.dfscript.util.FileUtil;
6+
import io.github.techstreet.dfscript.util.chat.ChatUtil;
67

78
import java.io.BufferedReader;
89
import java.io.File;
@@ -11,13 +12,13 @@
1112
import java.net.URL;
1213
import java.nio.charset.Charset;
1314
import java.nio.charset.StandardCharsets;
15+
import java.nio.file.Files;
1416
import java.nio.file.InvalidPathException;
1517

1618
import static io.github.techstreet.dfscript.DFScript.GSON;
1719
import static io.github.techstreet.dfscript.screen.script.ScriptAddScreen.readAll;
1820

1921
public class VirtualScript {
20-
2122
private final String name;
2223
private final String owner;
2324
private final String id;
@@ -40,17 +41,28 @@ public String getId() {
4041
return id;
4142
}
4243

43-
public void download() {
44+
public void download(boolean update) {
4445
try {
4546
InputStream is = new URL("https://dfscript-server.techstreetdev.repl.co/scripts/get/" + id).openStream();
4647
BufferedReader rd = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
47-
Script script = GSON.fromJson(readAll(rd), Script.class);
4848

4949
File file = FileUtil.folder("Scripts").resolve(name + ".json").toFile();
5050

51-
script.setFile(file);
52-
ScriptManager.getInstance().saveScript(script);
53-
ScriptManager.getInstance().reload();
51+
if (!update) {
52+
int count = 1;
53+
while (file.exists()) {
54+
file = FileUtil.folder("Scripts").resolve(name + "_" + count + ".json").toFile();
55+
count += 1;
56+
}
57+
}
58+
59+
String content = readAll(rd)
60+
.replace("\n", "")
61+
.replace("\"disabled\":true", "\"disabled\":false")
62+
.replace("\"server\":None", "\"server\":" + id + "");
63+
64+
System.out.println(content);
65+
Files.write(file.toPath(), content.getBytes());
5466
} catch (Exception e) {
5567
e.printStackTrace();
5668
}

0 commit comments

Comments
 (0)