Возврат метода "TypedActionResult<ItemStack> use" возвращает ItemStack.Count к исходному состоянию.

Версия Minecraft
1.17.1
API
Fabric
2
0
Добрый день!

Я скорее всего что-то упускаю. Не могу разобраться почему при возврате функции " TypedActionResult<ItemStack> use ", свойство ItemStack.Count приходит в исходное состояние. При чём если меняю именно сущность Item - оно меняет. А вот количество выбрасывает в прежнее состояние.
Вот самый простой пример кода, что пытается изменить количество. Если присмотреться в самом клиенте майнкрафте - то видно как сначала предмет становится в количество 34, а затем снова в исходное, например, 2.

Тело виртуального метода - пример:
@Override
    public TypedActionResult<ItemStack> use (World world, PlayerEntity playerEntity, Hand hand){
        System.out.println("Сообщалка: Клиент? - " + world.isClient);

        //Присваиваю ссылку
        ItemStack itemStack = playerEntity.getStackInHand(hand);

        //Хочу поставить определённое количество в стак
        System.out.println("Сообщалка: Count до - " + itemStack.getCount());
        itemStack.setCount(34);
        System.out.println("Сообщалка: Count после - " + itemStack.getCount());

        return new TypedActionResult<>(ActionResult.SUCCESS, itemStack);
    }
1641636635963.png

Что я мог упустить?
 

Icosider

Kotliner
Администратор
3,603
99
664
Так и что тебя не устраивает? В начале у тебя серверный поток обрабатывает нажатие, потом клиентский и по сути твой стак изменил своё количество. Изменяй количество на серверной стороне
 
2
0
Так и что тебя не устраивает? В начале у тебя серверный поток обрабатывает нажатие, потом клиентский и по сути твой стак изменил своё количество. Изменяй количество на серверной стороне
Как я писал выше - меня не устраивает, что после возврата - количество в стаке возвращается в исходное. То есть Вот я написал, что должно быть 34, оно поставило 34, но после возврата резко снова ставит количество 2.
Для наглядности добавил модернизировал тело функции основного Item, который теперь изменяет количество только если мир не на клиенте, а так же в точке входа main я объявил объект ItemStack для ссылки, в которую помещу объект ItemStack, количество которого хочу изменить, чтобы при использовании другого айтема в консоль писалось сколько количество сейчас у данного объекта ItemStack

Модернизированная функция + полностью её объект Item:
public class MyFirstItem extends Item {
    public String ItemName = "item_myfirstitem";

    public MyFirstItem(Settings Settings) {
        super(Settings);
    }

    @Override
    public TypedActionResult<ItemStack> use (World world, PlayerEntity playerEntity, Hand hand) {
        //Присваиваю ссылку
        ItemStack itemStack = playerEntity.getStackInHand(hand);
        if(world.isClient() == false) {
            System.out.println("Сообщалка: Клиент? - " + world.isClient);

            //Хочу поставить определённое количество в стак
            System.out.println("Сообщалка: Count до - " + itemStack.getCount());
            itemStack.setCount(34);
            System.out.println("Сообщалка: Count после - " + itemStack.getCount());
           
            //Добавляю объект в ссылку в точке входа Main
            Snoyartifact.itemStackInHand = itemStack;
            System.out.println("Сообщалка: ItemStackInHand.Count до = " + Snoyartifact.itemStackInHand.getCount());
        }
        return new TypedActionResult<>(ActionResult.SUCCESS, itemStack );
    }
}

Второй объект, что просто читает количество из ссылки на объект стака:
public class ITEM_COUNT_VISIBLE extends Item {
    public String ItemName = "item_cv";

    public ITEM_COUNT_VISIBLE(Settings Settings) {
        super(Settings);
    }

    @Override
    public TypedActionResult<ItemStack> use(World world, PlayerEntity playerEntity, Hand hand) {

        //Показываю с сервака количество item теперь
        System.out.println("Сообщалка: ItemStackInHand.Count после = " + Snoyartifact.itemStackInHand.getCount());

        return new TypedActionResult<>(ActionResult.SUCCESS, playerEntity.getStackInHand(hand));
    }
}
1641659359343.png
На скрине в логах чётко видно, что сначала в теле функции первого item'a, изумруда, количество в стаке изменилось до 34. Однако при использовании второго айтема, безтекстурного, из чтения того же ItemStack - количество снова пришло в исходное значение "7". Мне не нужно, чтобы оно снова становилось в исходное значение. При этом если я впринципе буду создавать новый объект ItemStack, в котором засуну другой " Item " и пропишу для него " setCount(34) ", то Item станет новым, а вот количество снова придёт в исходное значение.
 
Сверху