From d64198049c5ebe742573f0355f4ae696f9ad3470 Mon Sep 17 00:00:00 2001 From: MelanX Date: Fri, 4 Aug 2023 17:43:57 +0200 Subject: [PATCH] fix mob yoinker with increased stack size closes #45 --- mod.properties | 4 ++-- .../java/de/melanx/utilitix/util/MobUtil.java | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/mod.properties b/mod.properties index c0902c5..7238532 100644 --- a/mod.properties +++ b/mod.properties @@ -4,8 +4,8 @@ group=de.melanx base_version=0.8 # dependencies -forge_version=1.20.1-47.0.19 -#mappings=sugarcane_2022.12.12-1.19.2 +forge_version=1.20.1-47.1.28 +mappings=sugarcane_2023.07.30-1.20.1 # Upload properties upload_versions=1.20.1 diff --git a/src/main/java/de/melanx/utilitix/util/MobUtil.java b/src/main/java/de/melanx/utilitix/util/MobUtil.java index 7768d1d..b745b57 100644 --- a/src/main/java/de/melanx/utilitix/util/MobUtil.java +++ b/src/main/java/de/melanx/utilitix/util/MobUtil.java @@ -28,7 +28,7 @@ public class MobUtil { public static boolean storeEntityData(Player player, InteractionHand hand, LivingEntity entity, ResourceList denylist, boolean typeKeyOnly) { String entityKey = entity.getEncodeId(); ItemStack stack = player.getItemInHand(hand); - CompoundTag nbt = stack.getOrCreateTag(); + CompoundTag nbt = stack.getOrCreateTag().copy(); if (entityKey == null || entityKey.equals(nbt.getString(MobUtil.ENTITY_TYPE_TAG))) { return false; } @@ -42,7 +42,18 @@ public static boolean storeEntityData(Player player, InteractionHand hand, Livin if (!typeKeyOnly) { nbt.put(MobUtil.ENTITY_DATA_TAG, entity.saveWithoutId(new CompoundTag())); } - player.setItemInHand(hand, stack); + + if (stack.getCount() > 1) { + stack.shrink(1); + ItemStack copyStack = stack.copy(); + copyStack.setCount(1); + copyStack.setTag(nbt); + player.addItem(copyStack); + } else { + stack.setTag(nbt); + player.setItemInHand(hand, stack); + } + player.displayClientMessage(MobUtil.getCurrentMob(entity.getType()), true); return true; }