implement more config options

This commit is contained in:
2026-07-21 18:55:50 +02:00
parent 19a7187bae
commit f515819369
4 changed files with 35 additions and 2 deletions
+1
View File
@@ -5,6 +5,7 @@ All notable changes since version 1.0.0 are documented in this file.
## Unreleased
### Added
- Added achievements for being rescued by an NPC, owned pet, friendly villager, or iron golem.
- Added separate configuration for mob execution time, executor movement, and knocked-player movement.
- Added configurable NPC help-up behavior for owned pets, friendly villagers, golems, and allowlisted modded NPCs.
- NPC helpers only begin a rescue when they have no hostile target and no living threats remain nearby.
@@ -6,6 +6,10 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.entity.Mob;
import net.minecraft.world.entity.TamableAnimal;
import net.minecraft.world.entity.animal.IronGolem;
import net.minecraft.world.entity.npc.Villager;
public class KnockedbackAdvancements {
private static final String CRITERION = "triggered";
@@ -37,6 +41,14 @@ public class KnockedbackAdvancements {
ResourceLocation.fromNamespaceAndPath(KnockedBack.MOD_ID, "carry_player_10");
public static final ResourceLocation CARRY_PLAYER_50 =
ResourceLocation.fromNamespaceAndPath(KnockedBack.MOD_ID, "carry_player_50");
public static final ResourceLocation NPC_RESCUE =
ResourceLocation.fromNamespaceAndPath(KnockedBack.MOD_ID, "npc_rescue");
public static final ResourceLocation PET_RESCUE =
ResourceLocation.fromNamespaceAndPath(KnockedBack.MOD_ID, "pet_rescue");
public static final ResourceLocation VILLAGER_RESCUE =
ResourceLocation.fromNamespaceAndPath(KnockedBack.MOD_ID, "villager_rescue");
public static final ResourceLocation GOLEM_RESCUE =
ResourceLocation.fromNamespaceAndPath(KnockedBack.MOD_ID, "golem_rescue");
public static void award(ServerPlayer player, ResourceLocation advancementId) {
MinecraftServer server = player.getServer();
@@ -74,6 +86,17 @@ public class KnockedbackAdvancements {
awardAt(player, count, 50, CARRY_PLAYER_50);
}
public static void recordNpcRescue(ServerPlayer player, Mob helper) {
award(player, NPC_RESCUE);
if (helper instanceof TamableAnimal) {
award(player, PET_RESCUE);
} else if (helper instanceof Villager) {
award(player, VILLAGER_RESCUE);
} else if (helper instanceof IronGolem) {
award(player, GOLEM_RESCUE);
}
}
private static void awardAt(ServerPlayer player, int count, int threshold, ResourceLocation advancementId) {
if (count >= threshold) {
award(player, advancementId);
@@ -87,6 +87,7 @@ public final class NpcHelpUpHandler {
helper.getNavigation().stop();
KnockedManager.removeKnockedState(player);
player.heal(Config.COMMON.npcHelpUpHealAmount.get().floatValue());
KnockedbackAdvancements.recordNpcRescue(player, helper);
}
private static Mob findHelper(ServerPlayer player) {
@@ -36,7 +36,7 @@
"advancements.knockedback.knocked.description": "Enter the knocked state.",
"advancements.knockedback.knocked_10.title": "Built Different",
"advancements.knockedback.knocked_10.description": "Enter the knocked state 10 times.",
"advancements.knockedback.knocked_50.title": "Refuses to Stay Down",
"advancements.knockedback.knocked_50.title": "I Refuse to Stay Down",
"advancements.knockedback.knocked_50.description": "Enter the knocked state 50 times.",
"advancements.knockedback.execute_player.title": "Coup de Grace",
"advancements.knockedback.execute_player.description": "Execute a knocked player.",
@@ -57,5 +57,13 @@
"advancements.knockedback.carry_player_10.title": "Evac Team",
"advancements.knockedback.carry_player_10.description": "Carry 10 knocked players.",
"advancements.knockedback.carry_player_50.title": "Extraction Expert",
"advancements.knockedback.carry_player_50.description": "Carry 50 knocked players."
"advancements.knockedback.carry_player_50.description": "Carry 50 knocked players.",
"advancements.knockedback.npc_rescue.title": "Help from an Unexpected Place",
"advancements.knockedback.npc_rescue.description": "Be helped up by a friendly NPC.",
"advancements.knockedback.pet_rescue.title": "Who's a Good Medic?",
"advancements.knockedback.pet_rescue.description": "Be helped up by one of your loyal pets.",
"advancements.knockedback.villager_rescue.title": "Reputation Pays",
"advancements.knockedback.villager_rescue.description": "Be helped up by a villager who thinks highly of you.",
"advancements.knockedback.golem_rescue.title": "Artificial Support",
"advancements.knockedback.golem_rescue.description": "Be helped up by an iron golem."
}