Хороша ли идея реализовать эту функциональность с помощью Mixin? Я думаю, что проверка каждого используемого предмета на предмет того, не является ли это углем, неоптимальна.
Код: Выделить всё
package com.shelldy.testmod.mixin;
import net.minecraft.core.BlockPos;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Blocks;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(Item.class)
public class CoalMixin {
@Inject(method = "useOn", at = @At("HEAD"))
void useOnClick(UseOnContext context, CallbackInfoReturnable cir) {
final String itemDescription = context.getItemInHand().getDescriptionId();
final BlockPlaceContext blockContext = new BlockPlaceContext(context);
final Level level = blockContext.getLevel();
final BlockPos offsetPos = blockContext.getClickedPos();
if (itemDescription.equals("item.minecraft.coal")) {
level.setBlock(offsetPos, Blocks.COAL_BLOCK.defaultBlockState(), 11);
}
}
}
Я также нашел статью Microsoft о компоненте элемента «minecraft:block_placer», но он был добавлен в MC 1.20.10.
P.S. Размещение блока намеренно упрощено.
Подробнее здесь: https://stackoverflow.com/questions/791 ... ault-items