diff --git a/gradle.properties b/gradle.properties index dcb56dc8..4f784ccb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ org.gradle.jvmargs=-Xmx1G fabric_version=0.33.0+1.17 # Mod Properties - mod_version = 1.4.32 + mod_version = 1.4.33 maven_group = carpet archives_base_name = fabric-carpet diff --git a/src/main/java/carpet/CarpetSettings.java b/src/main/java/carpet/CarpetSettings.java index 4671852d..27f308d2 100644 --- a/src/main/java/carpet/CarpetSettings.java +++ b/src/main/java/carpet/CarpetSettings.java @@ -42,7 +42,7 @@ import static carpet.settings.RuleCategory.CLIENT; @SuppressWarnings("CanBeFinal") public class CarpetSettings { - public static final String carpetVersion = "1.4.32+v210414"; + public static final String carpetVersion = "1.4.33+v210421"; public static final Logger LOG = LogManager.getLogger("carpet"); public static boolean skipGenerationChecks = false; public static boolean impendingFillSkipUpdates = false; diff --git a/src/main/java/carpet/logging/HUDController.java b/src/main/java/carpet/logging/HUDController.java index c54a907e..091e3847 100644 --- a/src/main/java/carpet/logging/HUDController.java +++ b/src/main/java/carpet/logging/HUDController.java @@ -38,7 +38,7 @@ public class HUDController * Adds listener to be called when HUD is updated for logging information * @param listener - a method to be called when new HUD inforation are collected */ - public void register(Consumer listener) + public static void register(Consumer listener) { HUDListeners.add(listener); } diff --git a/src/main/java/carpet/mixins/WitherEntity_extremeMixin.java b/src/main/java/carpet/mixins/WitherEntity_extremeMixin.java new file mode 100644 index 00000000..e6b5aca4 --- /dev/null +++ b/src/main/java/carpet/mixins/WitherEntity_extremeMixin.java @@ -0,0 +1,22 @@ +package carpet.mixins; + + +import carpet.CarpetSettings; +import net.minecraft.entity.boss.WitherEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import java.util.Random; + +@Mixin(WitherEntity.class) +public class WitherEntity_extremeMixin +{ + @Redirect(method = "method_6878", at = @At(value = "INVOKE", target = "Ljava/util/Random;nextFloat()F")) + private float nextFloatAmplfied(Random random) + { + if (CarpetSettings.extremeBehaviours) return random.nextFloat()/100; + return random.nextFloat(); + } + +} diff --git a/src/main/java/carpet/script/api/Auxiliary.java b/src/main/java/carpet/script/api/Auxiliary.java index 747419dc..4b7ef322 100644 --- a/src/main/java/carpet/script/api/Auxiliary.java +++ b/src/main/java/carpet/script/api/Auxiliary.java @@ -528,7 +528,7 @@ public class Auxiliary { targets = playerTargets; res = lv.get(1).evalValue(c); } - Text message = (res instanceof FormattedTextValue)?((FormattedTextValue) res).getText():new LiteralText(res.getString()); + Text message = FormattedTextValue.getTextByValue(res); if (targets == null) { s.sendFeedback(message, false); @@ -595,16 +595,8 @@ public class Auxiliary { if (lv.size() > 2) { pVal = lv.get(2).evalValue(c); - if (pVal instanceof FormattedTextValue) - { - title = ((FormattedTextValue) pVal).getText(); - soundsTrue = !title.asString().isEmpty(); - } - else - { - title = new LiteralText(pVal.getString()); - soundsTrue = pVal.getBoolean(); - } + title = FormattedTextValue.getTextByValue(pVal); + soundsTrue = pVal.getBoolean(); } else title = null; // Will never happen, just to make lambda happy if (packetGetter == null) diff --git a/src/main/java/carpet/script/api/Scoreboards.java b/src/main/java/carpet/script/api/Scoreboards.java index 82136acb..c17e00d6 100644 --- a/src/main/java/carpet/script/api/Scoreboards.java +++ b/src/main/java/carpet/script/api/Scoreboards.java @@ -195,7 +195,7 @@ public class Scoreboards { return (_c, _t) -> StringValue.of(objective.getCriterion().getName()); case "display_name": if(modify) { - Text text = (setValue instanceof FormattedTextValue)?((FormattedTextValue) setValue).getText():new LiteralText(setValue.getString()); + Text text = FormattedTextValue.getTextByValue(setValue); objective.setDisplayName(text); return LazyValue.TRUE; } @@ -408,11 +408,7 @@ public class Scoreboards { Text displayName; - if(settingVal instanceof FormattedTextValue) { - displayName = ((FormattedTextValue) settingVal).getText(); - } else { - displayName = new LiteralText(settingVal.getString()); - } + displayName = FormattedTextValue.getTextByValue(settingVal); team.setDisplayName(displayName); @@ -451,11 +447,7 @@ public class Scoreboards { Text prefix; - if(settingVal instanceof FormattedTextValue) { - prefix = ((FormattedTextValue) settingVal).getText(); - } else { - prefix = new LiteralText(settingVal.getString()); - } + prefix = FormattedTextValue.getTextByValue(settingVal); team.setPrefix(prefix); break; @@ -481,11 +473,7 @@ public class Scoreboards { Text suffix; - if(settingVal instanceof FormattedTextValue) { - suffix = ((FormattedTextValue) settingVal).getText(); - } else { - suffix = new LiteralText(settingVal.getString()); - } + suffix = FormattedTextValue.getTextByValue(settingVal); team.setSuffix(suffix); break; @@ -547,11 +535,7 @@ public class Scoreboards { case "name": if(propertyValue == null) return (_c, _t) -> new FormattedTextValue(bossBar.getName()); - if(propertyValue instanceof FormattedTextValue) { - bossBar.setName(((FormattedTextValue) propertyValue).getText()); - } else { - bossBar.setName(new LiteralText(propertyValue.getString())); - } + bossBar.setName(FormattedTextValue.getTextByValue(propertyValue)); return LazyValue.TRUE; case "add_player": if(propertyValue == null) throw new InternalExpressionException("Bossbar property " + property + " can't be queried, add a third parameter"); diff --git a/src/main/java/carpet/script/value/EntityValue.java b/src/main/java/carpet/script/value/EntityValue.java index e8c3e9c6..d4d0246a 100644 --- a/src/main/java/carpet/script/value/EntityValue.java +++ b/src/main/java/carpet/script/value/EntityValue.java @@ -1122,7 +1122,7 @@ public class EntityValue extends Value v = ((ListValue) v).getItems().get(0); } e.setCustomNameVisible(showName); - e.setCustomName(new LiteralText(v.getString())); + e.setCustomName(FormattedTextValue.getTextByValue(v)); }); put("persistence", (e, v) -> diff --git a/src/main/java/carpet/script/value/FormattedTextValue.java b/src/main/java/carpet/script/value/FormattedTextValue.java index 9f68c786..8e031bea 100644 --- a/src/main/java/carpet/script/value/FormattedTextValue.java +++ b/src/main/java/carpet/script/value/FormattedTextValue.java @@ -54,7 +54,7 @@ public class FormattedTextValue extends StringValue @Override public boolean getBoolean() { - return text.getSiblings().size() > 0; + return !text.asString().isEmpty(); } @Override @@ -96,4 +96,8 @@ public class FormattedTextValue extends StringValue return new FormattedTextValue(Text.Serializer.fromJson(serialized)); } + public static Text getTextByValue(Value value) { + return (value instanceof FormattedTextValue) ? ((FormattedTextValue) value).getText() : new LiteralText(value.getString()); + } + } diff --git a/src/main/java/carpet/script/value/NBTSerializableValue.java b/src/main/java/carpet/script/value/NBTSerializableValue.java index 1e96d67a..24b47e05 100644 --- a/src/main/java/carpet/script/value/NBTSerializableValue.java +++ b/src/main/java/carpet/script/value/NBTSerializableValue.java @@ -571,13 +571,14 @@ public class NBTSerializableValue extends Value implements ContainerValueInterfa @Override public Value get(Value value) { - NbtPathArgumentType.NbtPath path = cachePath(value.getString()); + String valString = value.getString(); + NbtPathArgumentType.NbtPath path = cachePath(valString); try { List tags = path.get(getTag()); if (tags.size()==0) return Value.NULL; - if (tags.size()==1) + if (tags.size()==1 && !valString.endsWith("[]")) return NBTSerializableValue.decodeTag(tags.get(0)); return ListValue.wrap(tags.stream().map(NBTSerializableValue::decodeTag).collect(Collectors.toList())); } diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 3ecc0180..e2fd33b2 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -163,6 +163,7 @@ "MobEntity_extremeMixin", "ProjectileEntity_extremeMixin", "Projectile_extremeMixin", + "WitherEntity_extremeMixin", "ArmorStandEntity_scarpetMarkerMixin", "Entity_scarpetEventsMixin",