From de93b24ba31b0d241079d5042a75411fc1e89ea6 Mon Sep 17 00:00:00 2001 From: Mitchell Skaggs Date: Thu, 13 Jan 2022 15:57:00 -0600 Subject: [PATCH] Check for entity owners in Hunt-type quests Closes #113 --- .../quests/component/HuntComponent.java | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/main/java/svenhjol/strange/module/quests/component/HuntComponent.java b/src/main/java/svenhjol/strange/module/quests/component/HuntComponent.java index c1494992d..620feb82d 100644 --- a/src/main/java/svenhjol/strange/module/quests/component/HuntComponent.java +++ b/src/main/java/svenhjol/strange/module/quests/component/HuntComponent.java @@ -6,6 +6,7 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.OwnableEntity; import net.minecraft.world.entity.player.Player; import svenhjol.strange.module.quests.IQuestComponent; import svenhjol.strange.module.quests.Quest; @@ -146,18 +147,21 @@ public boolean isSatisfied(Player player) { @Override public void entityKilled(LivingEntity entity, Entity attacker) { - if (!(attacker instanceof ServerPlayer player)) return; - - if (quest.getOwner().equals(player.getUUID())) { - ResourceLocation id = Registry.ENTITY_TYPE.getKey(entity.getType()); - - if (entities.containsKey(id)) { - int max = entities.get(id); - int count = killed.getOrDefault(id, 0); - killed.put(id, Math.min(max, count + 1)); - - quest.setDirty(); - quest.update(player); + if (attacker instanceof OwnableEntity owned) { + attacker = owned.getOwner(); + } + if (attacker instanceof ServerPlayer player) { + if (quest.getOwner().equals(player.getUUID())) { + ResourceLocation id = Registry.ENTITY_TYPE.getKey(entity.getType()); + + if (entities.containsKey(id)) { + int max = entities.get(id); + int count = killed.getOrDefault(id, 0); + killed.put(id, Math.min(max, count + 1)); + + quest.setDirty(); + quest.update(player); + } } } }