Attenpts to mitigate an NPC's entity becoming unavailable
All checks were successful
EpicKnarvik97/Blacksmith/pipeline/head This commit looks good
All checks were successful
EpicKnarvik97/Blacksmith/pipeline/head This commit looks good
This commit is contained in:
@@ -15,13 +15,13 @@ import org.bukkit.Sound;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.EntityEquipment;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Random;
|
||||
|
||||
import static net.knarcraft.blacksmith.formatting.BlacksmithStringFormatter.sendNPCMessage;
|
||||
@@ -107,10 +107,15 @@ public class ReforgeSession extends Session implements Runnable {
|
||||
playSound(success ? Sound.BLOCK_ANVIL_USE : Sound.ENTITY_VILLAGER_NO);
|
||||
|
||||
//Stop the reforged item from displaying in the blacksmith's hand
|
||||
if (this.npc.getEntity() instanceof Player) {
|
||||
((Player) this.npc.getEntity()).getInventory().setItemInMainHand(null);
|
||||
} else {
|
||||
Objects.requireNonNull(((LivingEntity) this.npc.getEntity()).getEquipment()).setItemInMainHand(null);
|
||||
if (this.entity instanceof Player playerNPC) {
|
||||
playerNPC.getInventory().setItemInMainHand(null);
|
||||
} else if (this.entity instanceof LivingEntity) {
|
||||
EntityEquipment equipment = ((LivingEntity) this.entity).getEquipment();
|
||||
if (equipment != null) {
|
||||
equipment.setItemInMainHand(null);
|
||||
} else {
|
||||
BlacksmithPlugin.warn("Failed to clear Blacksmith item, as its equipment was irretrievable.");
|
||||
}
|
||||
}
|
||||
|
||||
//Give the item back to the player
|
||||
@@ -129,8 +134,7 @@ public class ReforgeSession extends Session implements Runnable {
|
||||
* Gives the reforged item back to the player
|
||||
*/
|
||||
private void giveReforgedItem() {
|
||||
giveResultingItem(this.config.getMaxReforgeDelay() > 0, this.config.getDropItem(), this.npc,
|
||||
this.itemToReforge);
|
||||
giveResultingItem(this.config.getMaxReforgeDelay() > 0, this.config.getDropItem(), this.itemToReforge);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -141,11 +145,11 @@ public class ReforgeSession extends Session implements Runnable {
|
||||
private boolean reforgeItem() {
|
||||
if (random.nextInt(100) < this.config.getFailChance()) {
|
||||
failReforge();
|
||||
BlacksmithPlugin.getInstance().callEvent(new BlacksmithReforgeFailEvent(this.npc, this.player));
|
||||
BlacksmithPlugin.getInstance().callEvent(new BlacksmithReforgeFailEvent(this.npc, this.entity, this.player));
|
||||
return false;
|
||||
} else {
|
||||
succeedReforge();
|
||||
BlacksmithPlugin.getInstance().callEvent(new BlacksmithReforgeSucceedEvent(this.npc, this.player));
|
||||
BlacksmithPlugin.getInstance().callEvent(new BlacksmithReforgeSucceedEvent(this.npc, this.entity, this.player));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user