From dc7532a858e5bee1425af7e340da3bcb33502add Mon Sep 17 00:00:00 2001 From: Westernat Date: Mon, 8 Jan 2024 18:23:47 +0800 Subject: [PATCH] updates to latest --- gradle.properties | 2 +- .../advjs/mixin/ServerBossBarMixin.java | 13 ++++++-- .../advjs/trigger/TargetHitBuilder.java | 4 +-- .../trigger/custom/BossEventConditions.java | 31 ++++++++++++++----- 4 files changed, 38 insertions(+), 12 deletions(-) diff --git a/gradle.properties b/gradle.properties index 62ed6a1..4193ba2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ minecraft_version=1.19.2 yarn_mappings=1.19.2+build.28 loader_version=0.15.3 # Mod Properties -mod_version=1902fabric-1.7.0 +mod_version=1902fabric-1.7.1 maven_group=org.mesdag.advjs archives_base_name=AdvJS # Dependencies diff --git a/src/main/java/org/mesdag/advjs/mixin/ServerBossBarMixin.java b/src/main/java/org/mesdag/advjs/mixin/ServerBossBarMixin.java index 8325ac8..604086f 100644 --- a/src/main/java/org/mesdag/advjs/mixin/ServerBossBarMixin.java +++ b/src/main/java/org/mesdag/advjs/mixin/ServerBossBarMixin.java @@ -2,6 +2,9 @@ import net.minecraft.entity.boss.ServerBossBar; import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.text.LiteralTextContent; +import net.minecraft.text.TextContent; +import net.minecraft.text.TranslatableTextContent; import org.mesdag.advjs.trigger.custom.CriteriaTriggers; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -15,7 +18,13 @@ public abstract class ServerBossBarMixin { at = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerPlayNetworkHandler;sendPacket(Lnet/minecraft/network/Packet;)V", shift = At.Shift.AFTER)) private void advJS$trigger(ServerPlayerEntity serverPlayer, CallbackInfo ci) { ServerBossBar self = (ServerBossBar) (Object) this; - // TODO displayName - CriteriaTriggers.BOSS_EVENT.trigger(serverPlayer, self.shouldDarkenSky(), self.hasDragonMusic(), self.shouldThickenFog()); + TextContent contents = self.getName().getContent(); + String key = ""; + if (contents instanceof TranslatableTextContent translatableContents) { + key = translatableContents.getKey(); + } else if (contents instanceof LiteralTextContent literalContents) { + key = literalContents.string(); + } + CriteriaTriggers.BOSS_EVENT.trigger(serverPlayer, self.shouldDarkenSky(), self.hasDragonMusic(), self.shouldThickenFog(), key); } } diff --git a/src/main/java/org/mesdag/advjs/trigger/TargetHitBuilder.java b/src/main/java/org/mesdag/advjs/trigger/TargetHitBuilder.java index 38f52c3..f608710 100644 --- a/src/main/java/org/mesdag/advjs/trigger/TargetHitBuilder.java +++ b/src/main/java/org/mesdag/advjs/trigger/TargetHitBuilder.java @@ -7,8 +7,8 @@ import org.mesdag.advjs.util.EntitySetter; class TargetHitBuilder extends AbstractTriggerBuilder implements EntitySetter { - NumberRange.IntRange signalStrength; - EntityPredicate.Extended projectile; + NumberRange.IntRange signalStrength = NumberRange.IntRange.ANY; + EntityPredicate.Extended projectile = EntityPredicate.Extended.EMPTY; @Info("The redstone signal that will come out of the target block.") public void setSignalStrength(NumberRange.IntRange signalStrength) { diff --git a/src/main/java/org/mesdag/advjs/trigger/custom/BossEventConditions.java b/src/main/java/org/mesdag/advjs/trigger/custom/BossEventConditions.java index 12274c7..dbcf053 100644 --- a/src/main/java/org/mesdag/advjs/trigger/custom/BossEventConditions.java +++ b/src/main/java/org/mesdag/advjs/trigger/custom/BossEventConditions.java @@ -21,11 +21,12 @@ public class BossEventConditions extends AbstractCriterion instance.matches(darkenScreen, playBossMusic, createWorldFog)); + public void trigger(ServerPlayerEntity serverPlayer, boolean darkenScreen, boolean playBossMusic, boolean createWorldFog, String key) { + this.trigger(serverPlayer, instance -> instance.matches(darkenScreen, playBossMusic, createWorldFog, key)); } @Override @@ -36,13 +37,14 @@ public void trigger(ServerPlayerEntity serverPlayer, boolean darkenScreen, boole public static Conditions bossEvent(Consumer consumer) { Builder builder = new Builder(); consumer.accept(builder); - return new Conditions(builder.player, builder.darkenScreen, builder.playBossMusic, builder.createWorldFog); + return new Conditions(builder.player, builder.darkenScreen, builder.playBossMusic, builder.createWorldFog, builder.key); } public static class Builder extends AbstractTriggerBuilder { boolean darkenScreen = false; boolean playBossMusic = false; boolean createWorldFog = false; + String key = ""; @Info("Check darken screen.") public void setDarkenScreen(boolean darkenScreen) { @@ -58,22 +60,37 @@ public void setPlayBossMusic(boolean playBossMusic) { public void setCreateWorldFog(boolean createWorldFog) { this.createWorldFog = createWorldFog; } + + @Info(""" + Match 'translation key' or 'literal text' of boss bar. + + If set to "", it will not check key. Defaults to "". + """) + public void setKey(String key) { + this.key = key; + } } public static class Conditions extends AbstractCriterionConditions { private final boolean darkenScreen; private final boolean playBossMusic; private final boolean createWorldFog; + private final String key; - public Conditions(EntityPredicate.Extended composite, boolean darkenScreen, boolean playBossMusic, boolean createWorldFog) { + public Conditions(EntityPredicate.Extended composite, boolean darkenScreen, boolean playBossMusic, boolean createWorldFog, String key) { super(ID, composite); this.darkenScreen = darkenScreen; this.playBossMusic = playBossMusic; this.createWorldFog = createWorldFog; + this.key = key; } - public boolean matches(boolean darkenScreen, boolean playBossMusic, boolean createWorldFog) { - return this.darkenScreen == darkenScreen && this.playBossMusic && playBossMusic && this.createWorldFog == createWorldFog; + public boolean matches(boolean darkenScreen, boolean playBossMusic, boolean createWorldFog, String key) { + if (!this.key.equals("") && !this.key.equals(key)) { + return false; + } else { + return this.darkenScreen == darkenScreen && this.playBossMusic && playBossMusic && this.createWorldFog == createWorldFog; + } } } }