From 0a7a83afd3cf6a3d67a8ece818e04b59080a0a43 Mon Sep 17 00:00:00 2001 From: TechStreet Date: Sun, 21 Aug 2022 14:41:37 +0100 Subject: [PATCH 1/8] Fix some more compiler errors --- .../dfscript/screen/script/ScriptActionCategoryScreen.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/techstreet/dfscript/screen/script/ScriptActionCategoryScreen.java b/src/main/java/io/github/techstreet/dfscript/screen/script/ScriptActionCategoryScreen.java index cdcd562..20d151e 100644 --- a/src/main/java/io/github/techstreet/dfscript/screen/script/ScriptActionCategoryScreen.java +++ b/src/main/java/io/github/techstreet/dfscript/screen/script/ScriptActionCategoryScreen.java @@ -7,6 +7,7 @@ import io.github.techstreet.dfscript.script.action.ScriptActionCategory; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.text.LiteralText; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -25,7 +26,7 @@ public ScriptActionCategoryScreen(Script script, int insertIndex) { this.script = script; ItemStack eventsItem = new ItemStack(Items.DIAMOND); - eventsItem.setCustomName(Text.literal("Events").fillStyle(Style.EMPTY.withItalic(false))); + eventsItem.setCustomName(((LiteralText) Text.of("Events")).fillStyle(Style.EMPTY.withItalic(false))); int x = 3; int y = 3; @@ -55,4 +56,4 @@ public ScriptActionCategoryScreen(Script script, int insertIndex) { public void close() { DFScript.MC.setScreen(new ScriptEditScreen(script)); } -} +} \ No newline at end of file From 997dbe08e5f3446fb42d6914076add2caa7b5605 Mon Sep 17 00:00:00 2001 From: TechStreet Date: Sun, 21 Aug 2022 14:45:13 +0100 Subject: [PATCH 2/8] Undo changes (Wrong branch... oopsie) --- .../dfscript/screen/script/ScriptActionCategoryScreen.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/github/techstreet/dfscript/screen/script/ScriptActionCategoryScreen.java b/src/main/java/io/github/techstreet/dfscript/screen/script/ScriptActionCategoryScreen.java index 20d151e..cdcd562 100644 --- a/src/main/java/io/github/techstreet/dfscript/screen/script/ScriptActionCategoryScreen.java +++ b/src/main/java/io/github/techstreet/dfscript/screen/script/ScriptActionCategoryScreen.java @@ -7,7 +7,6 @@ import io.github.techstreet.dfscript.script.action.ScriptActionCategory; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; -import net.minecraft.text.LiteralText; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -26,7 +25,7 @@ public ScriptActionCategoryScreen(Script script, int insertIndex) { this.script = script; ItemStack eventsItem = new ItemStack(Items.DIAMOND); - eventsItem.setCustomName(((LiteralText) Text.of("Events")).fillStyle(Style.EMPTY.withItalic(false))); + eventsItem.setCustomName(Text.literal("Events").fillStyle(Style.EMPTY.withItalic(false))); int x = 3; int y = 3; @@ -56,4 +55,4 @@ public ScriptActionCategoryScreen(Script script, int insertIndex) { public void close() { DFScript.MC.setScreen(new ScriptEditScreen(script)); } -} \ No newline at end of file +} From 9c8166e81dab6981e8a33a92fb6df570d995f4c8 Mon Sep 17 00:00:00 2001 From: XTerPL Date: Mon, 22 Aug 2022 19:59:27 +0200 Subject: [PATCH 3/8] Ported Scripting Changes from my fork of CU + SORT_LIST * fixed text fields created by scripts not being editable (literally just changed one value in a function lmao) --- .../script/action/ScriptActionType.java | 32 +++++++++++++++---- .../script/values/ScriptDictionaryValue.java | 7 ++++ .../script/values/ScriptListValue.java | 5 +++ .../script/values/ScriptNumberValue.java | 16 ++++++++++ .../script/values/ScriptUnknownValue.java | 4 +++ .../dfscript/script/values/ScriptValue.java | 8 +++++ .../script/values/ScriptValueComparator.java | 9 ++++++ 7 files changed, 74 insertions(+), 7 deletions(-) create mode 100644 src/main/java/io/github/techstreet/dfscript/script/values/ScriptValueComparator.java diff --git a/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java b/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java index f6d7c77..2b2f19e 100644 --- a/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java +++ b/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java @@ -22,12 +22,7 @@ import io.github.techstreet.dfscript.script.menu.ScriptWidget; import io.github.techstreet.dfscript.script.util.ScriptValueItem; import io.github.techstreet.dfscript.script.util.ScriptValueJson; -import io.github.techstreet.dfscript.script.values.ScriptDictionaryValue; -import io.github.techstreet.dfscript.script.values.ScriptListValue; -import io.github.techstreet.dfscript.script.values.ScriptNumberValue; -import io.github.techstreet.dfscript.script.values.ScriptTextValue; -import io.github.techstreet.dfscript.script.values.ScriptUnknownValue; -import io.github.techstreet.dfscript.script.values.ScriptValue; +import io.github.techstreet.dfscript.script.values.*; import io.github.techstreet.dfscript.util.ComponentUtil; import io.github.techstreet.dfscript.util.FileUtil; import io.github.techstreet.dfscript.util.ItemUtil; @@ -1517,7 +1512,7 @@ public enum ScriptActionType { if (io.github.techstreet.dfscript.DFScript.MC.currentScreen instanceof ScriptMenu menu) { if (menu.ownedBy(ctx.script())) { - menu.widgets.add(new ScriptMenuTextField("",x,y,width,height,false,identifier)); + menu.widgets.add(new ScriptMenuTextField("",x,y,width,height,true,identifier)); } else { ChatUtil.error("Unable to add text field to menu! (Not owned by script)"); } @@ -1631,6 +1626,29 @@ public enum ScriptActionType { .hasChildren(true) .action(ctx -> { ctx.setLastIfResult(!ctx.lastIfResult()); + })), + + SORT_LIST(builder -> builder.name("Sort List") + .description("Sorts a list in ascending order.") + .icon(Items.REPEATING_COMMAND_BLOCK) + .arg("Result", ScriptActionArgumentType.VARIABLE) + .arg("List", ScriptActionArgumentType.LIST, b -> b.optional(true)) + .category(ScriptActionCategory.LISTS) + .action(ctx -> { + List list = null; + + if(ctx.argMap().containsKey("List")) + { + list = ctx.value("List").asList(); + } + else + { + list = ctx.value("Result").asList(); + } + + list.sort(new ScriptValueComparator()); + + ctx.context().setVariable(ctx.variable("Result").name(), new ScriptListValue(list)); })); private Consumer action = (ctx) -> { diff --git a/src/main/java/io/github/techstreet/dfscript/script/values/ScriptDictionaryValue.java b/src/main/java/io/github/techstreet/dfscript/script/values/ScriptDictionaryValue.java index 175f3cd..8fc82bf 100644 --- a/src/main/java/io/github/techstreet/dfscript/script/values/ScriptDictionaryValue.java +++ b/src/main/java/io/github/techstreet/dfscript/script/values/ScriptDictionaryValue.java @@ -45,4 +45,11 @@ public boolean valueEquals(ScriptValue other) { public String asText() { return value.toString(); } + + @Override + public ScriptValue getCompareValue() { + HashMap dict = asDictionary(); + + return dict.get(dict.keySet().toArray()[0]).getCompareValue(); + } } diff --git a/src/main/java/io/github/techstreet/dfscript/script/values/ScriptListValue.java b/src/main/java/io/github/techstreet/dfscript/script/values/ScriptListValue.java index b3ece44..283519f 100644 --- a/src/main/java/io/github/techstreet/dfscript/script/values/ScriptListValue.java +++ b/src/main/java/io/github/techstreet/dfscript/script/values/ScriptListValue.java @@ -43,4 +43,9 @@ public boolean valueEquals(ScriptValue other) { public String asText() { return value.toString(); } + + @Override + public ScriptValue getCompareValue() { + return asList().get(0).getCompareValue(); + } } diff --git a/src/main/java/io/github/techstreet/dfscript/script/values/ScriptNumberValue.java b/src/main/java/io/github/techstreet/dfscript/script/values/ScriptNumberValue.java index 3f0afb5..e002c35 100644 --- a/src/main/java/io/github/techstreet/dfscript/script/values/ScriptNumberValue.java +++ b/src/main/java/io/github/techstreet/dfscript/script/values/ScriptNumberValue.java @@ -34,4 +34,20 @@ public String asText() { } return String.valueOf(value); } + + @Override + public int compare(ScriptValue other) { + if(other instanceof ScriptNumberValue) { + if(asNumber() == other.asNumber()) { + return 0; + } + + if(asNumber() > other.asNumber()) { + return 1; + } + + return -1; + } + return asText().compareTo(other.asText()); + } } diff --git a/src/main/java/io/github/techstreet/dfscript/script/values/ScriptUnknownValue.java b/src/main/java/io/github/techstreet/dfscript/script/values/ScriptUnknownValue.java index 2e0450b..07e1433 100644 --- a/src/main/java/io/github/techstreet/dfscript/script/values/ScriptUnknownValue.java +++ b/src/main/java/io/github/techstreet/dfscript/script/values/ScriptUnknownValue.java @@ -35,4 +35,8 @@ public List asList() { public double asNumber() { return 0; } + + public int compare(ScriptValue other) { + return 0; + } } diff --git a/src/main/java/io/github/techstreet/dfscript/script/values/ScriptValue.java b/src/main/java/io/github/techstreet/dfscript/script/values/ScriptValue.java index 1027a5e..313a1e1 100644 --- a/src/main/java/io/github/techstreet/dfscript/script/values/ScriptValue.java +++ b/src/main/java/io/github/techstreet/dfscript/script/values/ScriptValue.java @@ -29,4 +29,12 @@ public String toString() { } public abstract boolean valueEquals(ScriptValue other); + + public ScriptValue getCompareValue() { + return this; + } + + public int compare(ScriptValue other) { + return asText().compareTo(other.asText()); + } } diff --git a/src/main/java/io/github/techstreet/dfscript/script/values/ScriptValueComparator.java b/src/main/java/io/github/techstreet/dfscript/script/values/ScriptValueComparator.java new file mode 100644 index 0000000..eee6162 --- /dev/null +++ b/src/main/java/io/github/techstreet/dfscript/script/values/ScriptValueComparator.java @@ -0,0 +1,9 @@ +package io.github.techstreet.dfscript.script.values; + +import java.util.Comparator; +public class ScriptValueComparator implements Comparator { + @Override + public int compare(ScriptValue o1, ScriptValue o2) { + return o1.getCompareValue().compare(o2.getCompareValue()); + } +} \ No newline at end of file From 497ab50392e259dfd838e4700ca19374233c4552 Mon Sep 17 00:00:00 2001 From: XTerPL Date: Mon, 22 Aug 2022 21:13:52 +0200 Subject: [PATCH 4/8] Added 2 Text Actions + REPLACE_TEXT + REMOVE_TEXT --- .../script/action/ScriptActionType.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java b/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java index 2b2f19e..06e93ac 100644 --- a/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java +++ b/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java @@ -1649,6 +1649,50 @@ public enum ScriptActionType { list.sort(new ScriptValueComparator()); ctx.context().setVariable(ctx.variable("Result").name(), new ScriptListValue(list)); + })), + + REPLACE_TEXT(builder -> builder.name("Replace Text") + .description("Searches for part of a text and replaces it.") + .icon(Items.LEAD) + .arg("Result", ScriptActionArgumentType.VARIABLE) + .arg("Text to change", ScriptActionArgumentType.TEXT) + .arg("Text part to replace", ScriptActionArgumentType.TEXT) + .arg("Replacement", ScriptActionArgumentType.TEXT) + .category(ScriptActionCategory.TEXTS) + .action(ctx -> { + String result = ctx.value("Text to change").asText(); + + result = result.replace(ctx.value("Text part to replace").asText(), ctx.value("Replacement").asText()); + + ctx.context().setVariable(ctx.variable("Result").name(), new ScriptTextValue(result)); + })), + + REMOVE_TEXT(builder -> builder.name("Remove Text") + .description("Searches for part of a text and replaces it.") + .icon(Items.WRITABLE_BOOK) + .arg("Result", ScriptActionArgumentType.VARIABLE) + .arg("Text to change", ScriptActionArgumentType.TEXT) + .arg("Text to remove", ScriptActionArgumentType.TEXT, b -> b.plural(true)) + .category(ScriptActionCategory.TEXTS) + .action(ctx -> { + String result = null; + + if(ctx.argMap().containsKey("Text to change")) + { + result = ctx.value("Text to change").asText(); + } + else + { + result = ctx.value("Result").asText(); + } + + List textsToRemove = ctx.pluralValue("Text to remove"); + + for(int i = 0; i < textsToRemove.size(); i++) { + result = result.replace(textsToRemove.get(i).asText(), ""); + } + + ctx.context().setVariable(ctx.variable("Result").name(), new ScriptTextValue(result)); })); private Consumer action = (ctx) -> { From e3e0d57cd49a245d9dea293fa96b4e4029594319 Mon Sep 17 00:00:00 2001 From: XTerPL Date: Thu, 25 Aug 2022 22:26:58 +0200 Subject: [PATCH 5/8] Added STRIP_COLOR also reduced the amount of lines in REMOVE_TEXT because there was no optional value... --- .../script/action/ScriptActionType.java | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java b/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java index 06e93ac..b7630ae 100644 --- a/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java +++ b/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java @@ -1675,16 +1675,7 @@ public enum ScriptActionType { .arg("Text to remove", ScriptActionArgumentType.TEXT, b -> b.plural(true)) .category(ScriptActionCategory.TEXTS) .action(ctx -> { - String result = null; - - if(ctx.argMap().containsKey("Text to change")) - { - result = ctx.value("Text to change").asText(); - } - else - { - result = ctx.value("Result").asText(); - } + String result = ctx.value("Text to change").asText(); List textsToRemove = ctx.pluralValue("Text to remove"); @@ -1692,6 +1683,27 @@ public enum ScriptActionType { result = result.replace(textsToRemove.get(i).asText(), ""); } + ctx.context().setVariable(ctx.variable("Result").name(), new ScriptTextValue(result)); + })), + + STRIP_COLOR(builder -> builder.name("Strip Color from Text") + .description("Searches for color codes in a text and removes them.") + .icon(Items.WRITABLE_BOOK) + .arg("Result", ScriptActionArgumentType.VARIABLE) + .arg("Text", ScriptActionArgumentType.TEXT, b -> b.optional(true)) + .category(ScriptActionCategory.TEXTS) + .action(ctx -> { + String result = null; + + if (ctx.argMap().containsKey("Text")) { + result = ctx.value("Text").asText(); + } else { + result = ctx.value("Result").asText(); + } + + result = result.replaceAll("&x(&[0-9a-fA-F]){6}", ""); + result = result.replaceAll("&[0-9a-fA-FlonmkrLONMKR]", ""); + ctx.context().setVariable(ctx.variable("Result").name(), new ScriptTextValue(result)); })); From 8531db7d7897245634350eae832b93adf5adfe88 Mon Sep 17 00:00:00 2001 From: XTerPL Date: Thu, 25 Aug 2022 22:59:06 +0200 Subject: [PATCH 6/8] Added REPEAT_TEXT also i kinda forgot to set the icon of STRIP_COLOR so now i have done that --- .../script/action/ScriptActionType.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java b/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java index b7630ae..e32c9db 100644 --- a/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java +++ b/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java @@ -1688,7 +1688,7 @@ public enum ScriptActionType { STRIP_COLOR(builder -> builder.name("Strip Color from Text") .description("Searches for color codes in a text and removes them.") - .icon(Items.WRITABLE_BOOK) + .icon(Items.CYAN_DYE) .arg("Result", ScriptActionArgumentType.VARIABLE) .arg("Text", ScriptActionArgumentType.TEXT, b -> b.optional(true)) .category(ScriptActionCategory.TEXTS) @@ -1704,6 +1704,26 @@ public enum ScriptActionType { result = result.replaceAll("&x(&[0-9a-fA-F]){6}", ""); result = result.replaceAll("&[0-9a-fA-FlonmkrLONMKR]", ""); + ctx.context().setVariable(ctx.variable("Result").name(), new ScriptTextValue(result)); + })), + + REPEAT_TEXT(builder -> builder.name("Repeat Text") + .description("Repeats a text the given number of times.") + .icon(Items.REPEATING_COMMAND_BLOCK) + .arg("Result", ScriptActionArgumentType.VARIABLE) + .arg("Text to repeat", ScriptActionArgumentType.TEXT) + .arg("Times to repeat", ScriptActionArgumentType.NUMBER) + .category(ScriptActionCategory.TEXTS) + .action(ctx -> { + String result = ""; + String input = ctx.value("Text to repeat").asText(); + int times = (int) ctx.value("Times to repeat").asNumber(); + + for(int i = 0; i < times; i++) + { + result += input; + } + ctx.context().setVariable(ctx.variable("Result").name(), new ScriptTextValue(result)); })); From ca4438a534bd932ec25743177d5ce4b26994dc29 Mon Sep 17 00:00:00 2001 From: XTerPL Date: Thu, 25 Aug 2022 23:46:30 +0200 Subject: [PATCH 7/8] Added REGEX_REPLACE_TEXT also added the capability for Script Action Icons to have glow --- .../script/action/ScriptActionType.java | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java b/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java index e32c9db..6c936e4 100644 --- a/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java +++ b/src/main/java/io/github/techstreet/dfscript/script/action/ScriptActionType.java @@ -42,6 +42,8 @@ import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.client.sound.PositionedSoundInstance; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.Enchantments; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; @@ -1667,6 +1669,22 @@ public enum ScriptActionType { ctx.context().setVariable(ctx.variable("Result").name(), new ScriptTextValue(result)); })), + REGEX_REPLACE_TEXT(builder -> builder.name("Replace Text using Regex") + .description(new String[]{"Searches for part of a text", "using a regex and replaces it."}) + .icon(Items.LEAD, true) + .arg("Result", ScriptActionArgumentType.VARIABLE) + .arg("Text to change", ScriptActionArgumentType.TEXT) + .arg("Regex", ScriptActionArgumentType.TEXT) + .arg("Replacement", ScriptActionArgumentType.TEXT) + .category(ScriptActionCategory.TEXTS) + .action(ctx -> { + String result = ctx.value("Text to change").asText(); + + result = result.replaceAll(ctx.value("Regex").asText(), ctx.value("Replacement").asText()); + + ctx.context().setVariable(ctx.variable("Result").name(), new ScriptTextValue(result)); + })), + REMOVE_TEXT(builder -> builder.name("Remove Text") .description("Searches for part of a text and replaces it.") .icon(Items.WRITABLE_BOOK) @@ -1729,6 +1747,8 @@ public enum ScriptActionType { private Consumer action = (ctx) -> { }; + + private boolean glow = false; private Item icon = Items.STONE; private String name = "Unnamed Action"; private boolean hasChildren = false; @@ -1764,6 +1784,12 @@ public ItemStack getIcon() { item.getSubNbt("display") .put("Lore", lore); + if(glow) + { + item.addEnchantment(Enchantments.UNBREAKING, 1); + item.addHideFlag(ItemStack.TooltipSection.ENCHANTMENTS); + } + return item; } public String getName() { @@ -1783,8 +1809,14 @@ private ScriptActionType action(Consumer action) { return this; } - private ScriptActionType icon(Item icon) { + private ScriptActionType icon(Item icon, boolean glow) { this.icon = icon; + this.glow = glow; + return this; + } + + private ScriptActionType icon(Item icon) { + icon(icon, false); return this; } From 22a452de0ed771a519bc42b0c1987e92fa2cc0c9 Mon Sep 17 00:00:00 2001 From: XTerPL Date: Sat, 27 Aug 2022 20:38:00 +0200 Subject: [PATCH 8/8] Implemented a deprecated actions system... just so i could fix an inconsistency with TEXT_SUBTEXT... --- .../screen/script/ScriptAddActionScreen.java | 1 + .../screen/script/ScriptEditScreen.java | 21 ++++++++- .../techstreet/dfscript/script/Script.java | 15 ++++++- .../dfscript/script/ScriptMigrator.java | 6 +++ .../dfscript/script/action/ScriptAction.java | 8 +++- .../script/action/ScriptActionType.java | 45 ++++++++++++++++++- 6 files changed, 91 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/github/techstreet/dfscript/screen/script/ScriptAddActionScreen.java b/src/main/java/io/github/techstreet/dfscript/screen/script/ScriptAddActionScreen.java index 829d5b3..385538a 100644 --- a/src/main/java/io/github/techstreet/dfscript/screen/script/ScriptAddActionScreen.java +++ b/src/main/java/io/github/techstreet/dfscript/screen/script/ScriptAddActionScreen.java @@ -45,6 +45,7 @@ public ScriptAddActionScreen(Script script, int insertIndex, ScriptActionCategor for (ScriptActionType type : ScriptActionType.values()) { if (type.getCategory() != category) continue; + if (type.isDeprecated()) continue; CItem item = new CItem(x, y, type.getIcon()); item.setClickListener((btn) -> { diff --git a/src/main/java/io/github/techstreet/dfscript/screen/script/ScriptEditScreen.java b/src/main/java/io/github/techstreet/dfscript/screen/script/ScriptEditScreen.java index b8cc9d1..0327286 100644 --- a/src/main/java/io/github/techstreet/dfscript/screen/script/ScriptEditScreen.java +++ b/src/main/java/io/github/techstreet/dfscript/screen/script/ScriptEditScreen.java @@ -57,8 +57,11 @@ public ScriptEditScreen(Script script) { @Override public void render(MatrixStack stack, int mouseX, int mouseY, float tickDelta) { Rectangle b = getBounds(); + if (b.contains(mouseX, mouseY)) { - DrawableHelper.fill(stack, b.x, b.y, b.x + b.width, b.y + b.height, 0x33000000); + int color = 0x33000000; + + DrawableHelper.fill(stack, b.x, b.y, b.x + b.width, b.y + b.height, color); } } @@ -123,7 +126,21 @@ public Rectangle getBounds() { public void render(MatrixStack stack, int mouseX, int mouseY, float tickDelta) { Rectangle b = getBounds(); if (b.contains(mouseX, mouseY)) { - DrawableHelper.fill(stack, b.x, b.y, b.x + b.width, b.y + b.height, 0x33000000); + int color = 0x33000000; + + if(sa.getType().isDeprecated()) + { + color = 0x80FF0000; + } + + DrawableHelper.fill(stack, b.x, b.y, b.x + b.width, b.y + b.height, color); + } + else + { + if(sa.getType().isDeprecated()) + { + DrawableHelper.fill(stack, b.x, b.y, b.x + b.width, b.y + b.height, 0x33FF0000); + } } } diff --git a/src/main/java/io/github/techstreet/dfscript/script/Script.java b/src/main/java/io/github/techstreet/dfscript/script/Script.java index 6841ed4..8926955 100644 --- a/src/main/java/io/github/techstreet/dfscript/script/Script.java +++ b/src/main/java/io/github/techstreet/dfscript/script/Script.java @@ -28,7 +28,7 @@ import org.apache.logging.log4j.Logger; public class Script { - public static int scriptVersion = 2; + public static int scriptVersion = 3; private String name; private String owner; @@ -245,6 +245,19 @@ public ScriptContext getContext() { return context; } + public void replaceAction(ScriptActionType oldAction, ScriptActionType newAction) { + for(int i = 0; i < parts.size(); i++) + { + if(parts.get(i) instanceof ScriptAction) + { + if(((ScriptAction) parts.get(i)).getType() == oldAction) + { + parts.set(i, ((ScriptAction) parts.get(i)).setType(newAction)); + } + } + } + } + public static class Serializer implements JsonSerializer