implement more config options
This commit is contained in:
@@ -5,6 +5,7 @@ All notable changes since version 1.0.0 are documented in this file.
|
|||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
### Added
|
### 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 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.
|
- 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.
|
- 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.MinecraftServer;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.world.entity.player.Player;
|
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 {
|
public class KnockedbackAdvancements {
|
||||||
private static final String CRITERION = "triggered";
|
private static final String CRITERION = "triggered";
|
||||||
@@ -37,6 +41,14 @@ public class KnockedbackAdvancements {
|
|||||||
ResourceLocation.fromNamespaceAndPath(KnockedBack.MOD_ID, "carry_player_10");
|
ResourceLocation.fromNamespaceAndPath(KnockedBack.MOD_ID, "carry_player_10");
|
||||||
public static final ResourceLocation CARRY_PLAYER_50 =
|
public static final ResourceLocation CARRY_PLAYER_50 =
|
||||||
ResourceLocation.fromNamespaceAndPath(KnockedBack.MOD_ID, "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) {
|
public static void award(ServerPlayer player, ResourceLocation advancementId) {
|
||||||
MinecraftServer server = player.getServer();
|
MinecraftServer server = player.getServer();
|
||||||
@@ -74,6 +86,17 @@ public class KnockedbackAdvancements {
|
|||||||
awardAt(player, count, 50, CARRY_PLAYER_50);
|
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) {
|
private static void awardAt(ServerPlayer player, int count, int threshold, ResourceLocation advancementId) {
|
||||||
if (count >= threshold) {
|
if (count >= threshold) {
|
||||||
award(player, advancementId);
|
award(player, advancementId);
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ public final class NpcHelpUpHandler {
|
|||||||
helper.getNavigation().stop();
|
helper.getNavigation().stop();
|
||||||
KnockedManager.removeKnockedState(player);
|
KnockedManager.removeKnockedState(player);
|
||||||
player.heal(Config.COMMON.npcHelpUpHealAmount.get().floatValue());
|
player.heal(Config.COMMON.npcHelpUpHealAmount.get().floatValue());
|
||||||
|
KnockedbackAdvancements.recordNpcRescue(player, helper);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Mob findHelper(ServerPlayer player) {
|
private static Mob findHelper(ServerPlayer player) {
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
"advancements.knockedback.knocked.description": "Enter the knocked state.",
|
"advancements.knockedback.knocked.description": "Enter the knocked state.",
|
||||||
"advancements.knockedback.knocked_10.title": "Built Different",
|
"advancements.knockedback.knocked_10.title": "Built Different",
|
||||||
"advancements.knockedback.knocked_10.description": "Enter the knocked state 10 times.",
|
"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.knocked_50.description": "Enter the knocked state 50 times.",
|
||||||
"advancements.knockedback.execute_player.title": "Coup de Grace",
|
"advancements.knockedback.execute_player.title": "Coup de Grace",
|
||||||
"advancements.knockedback.execute_player.description": "Execute a knocked player.",
|
"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.title": "Evac Team",
|
||||||
"advancements.knockedback.carry_player_10.description": "Carry 10 knocked players.",
|
"advancements.knockedback.carry_player_10.description": "Carry 10 knocked players.",
|
||||||
"advancements.knockedback.carry_player_50.title": "Extraction Expert",
|
"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."
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user