diff --git a/src/generated/resources/.cache/577536f6ebfcf295de7fbac0bb53580fb6178459 b/src/generated/resources/.cache/577536f6ebfcf295de7fbac0bb53580fb6178459 index f544f24df..cb0edb997 100644 --- a/src/generated/resources/.cache/577536f6ebfcf295de7fbac0bb53580fb6178459 +++ b/src/generated/resources/.cache/577536f6ebfcf295de7fbac0bb53580fb6178459 @@ -1,4 +1,4 @@ -// 1.21.1 2025-05-09T00:21:36.5680126 Superb Warfare Advancements +// 1.21.1 2025-05-25T00:56:53.9873193 Superb Warfare Advancements 03d6ad4d0bdd3ba66b765dcae9705692070e7f94 data/superbwarfare/advancement/main/ancient_technology.json d24849d7fc09d8cc9a27203e57f1fd42f72a27a7 data/superbwarfare/advancement/main/banzai.json 70bd4fa04553c415c80656c4b07cf3814a13110c data/superbwarfare/advancement/main/best_friend.json @@ -14,4 +14,5 @@ c051b49513bac2be82c2c24e236734a5c3a358c8 data/superbwarfare/advancement/main/enc 52417b43fbf1ca3a41d95ee51eafdc4f734bfaa3 data/superbwarfare/advancement/main/physics_excalibur.json 392baba1930be09abc70836090c884ad4ada82e8 data/superbwarfare/advancement/main/rare_blueprint.json fbba02bc4970dbaa35fd2b743f4d751b46e9998b data/superbwarfare/advancement/main/root.json +61cbafd1a8563c8c19208309e2fd99ed064e12aa data/superbwarfare/advancement/main/rush_rush_run.json 6855de73219722b4e44985c87f2d57d71cfd7e15 data/superbwarfare/advancement/main/super_container.json diff --git a/src/generated/resources/data/superbwarfare/advancement/main/rush_rush_run.json b/src/generated/resources/data/superbwarfare/advancement/main/rush_rush_run.json new file mode 100644 index 000000000..2445a0c75 --- /dev/null +++ b/src/generated/resources/data/superbwarfare/advancement/main/rush_rush_run.json @@ -0,0 +1,28 @@ +{ + "parent": "superbwarfare:main/root", + "criteria": { + "0": { + "trigger": "superbwarfare:otto_sprint" + } + }, + "display": { + "description": { + "translate": "superbwarfare.advancement.main.rush_rush_run.des" + }, + "frame": "challenge", + "hidden": true, + "icon": { + "count": 1, + "id": "superbwarfare:electric_baton" + }, + "title": { + "translate": "superbwarfare.advancement.main.rush_rush_run" + } + }, + "requirements": [ + [ + "0" + ] + ], + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/advancement/criteria/OttoSprintTrigger.java b/src/main/java/com/atsuishio/superbwarfare/advancement/criteria/OttoSprintTrigger.java new file mode 100644 index 000000000..7220c3d4b --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/advancement/criteria/OttoSprintTrigger.java @@ -0,0 +1,41 @@ +package com.atsuishio.superbwarfare.advancement.criteria; + +import com.atsuishio.superbwarfare.init.ModCriteriaTriggers; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.advancements.Criterion; +import net.minecraft.advancements.critereon.ContextAwarePredicate; +import net.minecraft.advancements.critereon.EntityPredicate; +import net.minecraft.advancements.critereon.SimpleCriterionTrigger; +import net.minecraft.server.level.ServerPlayer; +import org.jetbrains.annotations.NotNull; + +import java.util.Optional; + +public class OttoSprintTrigger extends SimpleCriterionTrigger { + + public void trigger(ServerPlayer pPlayer) { + this.trigger(pPlayer, instance -> true); + } + + @Override + public @NotNull Codec codec() { + return TriggerInstance.CODEC; + } + + public record TriggerInstance(Optional player) implements SimpleInstance { + + public static final Codec CODEC = RecordCodecBuilder.create((instance) -> + instance.group(EntityPredicate.ADVANCEMENT_CODEC.optionalFieldOf("player") + .forGetter(OttoSprintTrigger.TriggerInstance::player)).apply(instance, TriggerInstance::new)); + + public static Criterion get() { + return ModCriteriaTriggers.OTTO_SPRINT.get().createCriterion(new TriggerInstance(Optional.empty())); + } + + @Override + public @NotNull Optional player() { + return this.player; + } + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/advancement/criteria/RPGMeleeExplosionTrigger.java b/src/main/java/com/atsuishio/superbwarfare/advancement/criteria/RPGMeleeExplosionTrigger.java index e6a346788..8a52d2391 100644 --- a/src/main/java/com/atsuishio/superbwarfare/advancement/criteria/RPGMeleeExplosionTrigger.java +++ b/src/main/java/com/atsuishio/superbwarfare/advancement/criteria/RPGMeleeExplosionTrigger.java @@ -8,6 +8,7 @@ import net.minecraft.advancements.critereon.ContextAwarePredicate; import net.minecraft.advancements.critereon.EntityPredicate; import net.minecraft.advancements.critereon.SimpleCriterionTrigger; import net.minecraft.server.level.ServerPlayer; +import org.jetbrains.annotations.NotNull; import java.util.Optional; @@ -18,7 +19,7 @@ public class RPGMeleeExplosionTrigger extends SimpleCriterionTrigger codec() { + public @NotNull Codec codec() { return TriggerInstance.CODEC; } @@ -34,7 +35,7 @@ public class RPGMeleeExplosionTrigger extends SimpleCriterionTrigger player() { + public @NotNull Optional player() { return this.player; } } diff --git a/src/main/java/com/atsuishio/superbwarfare/datagen/ModAdvancementProvider.java b/src/main/java/com/atsuishio/superbwarfare/datagen/ModAdvancementProvider.java index e84861132..c1639578f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/datagen/ModAdvancementProvider.java +++ b/src/main/java/com/atsuishio/superbwarfare/datagen/ModAdvancementProvider.java @@ -1,6 +1,7 @@ package com.atsuishio.superbwarfare.datagen; import com.atsuishio.superbwarfare.Mod; +import com.atsuishio.superbwarfare.advancement.criteria.OttoSprintTrigger; import com.atsuishio.superbwarfare.advancement.criteria.RPGMeleeExplosionTrigger; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModTags; @@ -110,6 +111,11 @@ public class ModAdvancementProvider implements DataProvider { .type(ModAdvancement.Type.SECRET_CHALLENGE) .parent(MAIN_ROOT)), + RUSH_RUSH_RUN = advancement("rush_rush_run", builder -> builder.icon(ModItems.ELECTRIC_BATON.get()) + .externalTrigger(OttoSprintTrigger.TriggerInstance.get()) + .type(ModAdvancement.Type.SECRET_CHALLENGE) + .parent(MAIN_ROOT)), + END = null; diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/WheelChairEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/WheelChairEntity.java index e3e1048f2..76533a35b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/WheelChairEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/WheelChairEntity.java @@ -4,7 +4,9 @@ import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.config.server.ExplosionConfig; import com.atsuishio.superbwarfare.config.server.VehicleConfig; import com.atsuishio.superbwarfare.entity.vehicle.base.MobileVehicleEntity; +import com.atsuishio.superbwarfare.init.ModCriteriaTriggers; import com.atsuishio.superbwarfare.init.ModDamageTypes; +import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.tools.CustomExplosion; import com.atsuishio.superbwarfare.tools.ParticleTool; @@ -128,6 +130,18 @@ public class WheelChairEntity extends MobileVehicleEntity implements GeoEntity { } } + @Override + protected void addPassenger(@NotNull Entity newPassenger) { + super.addPassenger(newPassenger); + + if (newPassenger instanceof ServerPlayer player + && (player.getMainHandItem().getItem() == ModItems.ELECTRIC_BATON.get() + || player.getOffhandItem().getItem() == ModItems.ELECTRIC_BATON.get()) + ) { + ModCriteriaTriggers.OTTO_SPRINT.get().trigger(player); + } + } + @Override public void travel() { Entity passenger = this.getFirstPassenger(); diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModCriteriaTriggers.java b/src/main/java/com/atsuishio/superbwarfare/init/ModCriteriaTriggers.java index 549093d31..492b290fa 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModCriteriaTriggers.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModCriteriaTriggers.java @@ -1,6 +1,7 @@ package com.atsuishio.superbwarfare.init; import com.atsuishio.superbwarfare.Mod; +import com.atsuishio.superbwarfare.advancement.criteria.OttoSprintTrigger; import com.atsuishio.superbwarfare.advancement.criteria.RPGMeleeExplosionTrigger; import net.minecraft.advancements.CriterionTrigger; import net.minecraft.core.registries.Registries; @@ -13,4 +14,5 @@ public class ModCriteriaTriggers { public static final DeferredRegister> REGISTRY = DeferredRegister.create(Registries.TRIGGER_TYPE, Mod.MODID); public static final Supplier RPG_MELEE_EXPLOSION = REGISTRY.register("rpg_melee_explosion", RPGMeleeExplosionTrigger::new); + public static final Supplier OTTO_SPRINT = REGISTRY.register("otto_sprint", OttoSprintTrigger::new); } diff --git a/src/main/resources/assets/superbwarfare/lang/en_us.json b/src/main/resources/assets/superbwarfare/lang/en_us.json index 27d34e0ec..987df5d4b 100644 --- a/src/main/resources/assets/superbwarfare/lang/en_us.json +++ b/src/main/resources/assets/superbwarfare/lang/en_us.json @@ -672,6 +672,8 @@ "superbwarfare.advancement.main.enclave.des": "Where is the pendulum?", "superbwarfare.advancement.main.boomstick_melee": "This is my Boomstick!", "superbwarfare.advancement.main.boomstick_melee.des": "Who said RPGs can't be baseball bats?", + "superbwarfare.advancement.main.rush_rush_run": "Rush♿Rush♿Run", + "superbwarfare.advancement.main.rush_rush_run.des": "The electric baton has to be paired with a wheelchair to deal damage, making it look as weak as a terminal superb soldier.", "warning.title.example": "[SuperbWarfare Mod Warning]", "warning.content.example": "This mod is Free And Open-Source, No Commercial Use\nCode: GPL-3.0 License; Asserts: Private (No Commercialization)\nBan on paid downloads or EULA-breaking purchases\nReport violations by submitting an issue in the mod's repository", "warning.check.example": "I have read and agreed to the content. Do not show this message again", diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index e3816a285..5b83bf93a 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -672,6 +672,8 @@ "superbwarfare.advancement.main.enclave.des": "钟摆在哪?", "superbwarfare.advancement.main.boomstick_melee": "跟你爆了", "superbwarfare.advancement.main.boomstick_melee.des": "谁说RPG不能当棒球棒用?", + "superbwarfare.advancement.main.rush_rush_run": "冲刺♿冲刺♿冲", + "superbwarfare.advancement.main.rush_rush_run.des": "电棍得配轮椅才能打得出伤害,搞的跟卓越晚期一样", "warning.title.example": "【卓越前线 警示声明】", "warning.content.example": "== 本模组完全免费开源,禁止用于任何商业行为 ==\n本模组代码采用GPL-3协议开源,美术资源私有禁止商用\n禁止付费下载、充值获取道具等违反协议和Mojang EULA的行为\n如遇以上行为,请到本模组仓库处提交Issue进行举报", "warning.check.example": "我已阅读并同意,不再显示此警告", @@ -726,5 +728,6 @@ "superbwarfare.page.vehicle.ah_61": "$(thing)AH-6 小鸟直升机$()是一款轻型直升机,可搭载4人,装甲防护较为贫弱。携带4发可干扰制导锁定的热诱弹,每隔一段时间自动逐发补充。", "superbwarfare.page.vehicle.ah_62": "需要至少 5 x 5 x 3 的空间放置。", "superbwarfare.page.vehicle.ah_63": "$(l)基础属性:$()$(p)耐久值 - 250$(br)最大乘员数 - 4$(br)最大能量 - 500,000FE$(br)能耗 - 64 ~ 128FE/tick", - "superbwarfare.page.vehicle.ah_64": "$(l)武器属性:$()$(p)1号位:$(p)(1) 20mm机炮$(br)射速 - 500RPM$(br)直击伤害 - 25$(br)爆炸伤害 - 13$(br)爆炸半径 - 4m$(br)弹药 - $(item)小口径炮弹$()$(br)(2) 70mm火箭弹$(br)直击伤害 - 80$(br)爆炸伤害 - 40$(br)爆炸半径 - 5m$(br)弹药 - $(item)70mm火箭弹$()" + "superbwarfare.page.vehicle.ah_64": "$(l)武器属性:$()$(p)1号位:$(p)(1) 20mm机炮$(br)射速 - 500RPM$(br)直击伤害 - 25$(br)爆炸伤害 - 13$(br)爆炸半径 - 4m$(br)弹药 - $(item)小口径炮弹$()$(br)(2) 70mm火箭弹$(br)直击伤害 - 80$(br)爆炸伤害 - 40$(br)爆炸半径 - 5m$(br)弹药 - $(item)70mm火箭弹$()", + "des.superbwarfare.charging_station": "Charge nearby entities and adjacent blocks" } \ No newline at end of file