Refactoring

This commit is contained in:
skippyall
2026-01-26 00:03:57 +01:00
parent 017b2ec590
commit 5bd7c08f83
47 changed files with 203 additions and 182 deletions
@@ -0,0 +1,14 @@
package io.github.skippyall.minions.clipboard;
import com.mojang.serialization.Codec;
import com.mojang.serialization.MapCodec;
import io.github.skippyall.minions.registration.MinionRegistries;
import net.minecraft.item.tooltip.TooltipAppender;
import java.util.function.Function;
public interface Clipboard extends TooltipAppender {
Codec<Clipboard> CODEC = MinionRegistries.CLIPBOARD_TYPES.getCodec().dispatch(Clipboard::getCodec, Function.identity());
MapCodec<? extends Clipboard> getCodec();
}
@@ -0,0 +1,43 @@
package io.github.skippyall.minions.clipboard;
import eu.pb4.polymer.core.api.item.PolymerItem;
import io.github.skippyall.minions.registration.MinionComponentTypes;
import io.github.skippyall.minions.registration.MinionItems;
import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.item.tooltip.TooltipType;
import net.minecraft.util.Identifier;
import org.jetbrains.annotations.Nullable;
import xyz.nucleoid.packettweaker.PacketContext;
public class ClipboardItem extends Item implements PolymerItem {
public ClipboardItem(Settings settings) {
super(settings);
}
@Override
public Item getPolymerItem(ItemStack itemStack, PacketContext context) {
return Items.PAPER;
}
@Override
public @Nullable Identifier getPolymerItemModel(ItemStack stack, PacketContext context) {
return null;
}
@Override
public ItemStack getPolymerItemStack(ItemStack itemStack, TooltipType tooltipType, PacketContext context) {
ItemStack stack = PolymerItem.super.getPolymerItemStack(itemStack, tooltipType, context);
stack.set(DataComponentTypes.ENCHANTMENT_GLINT_OVERRIDE, true);
return stack;
}
public static ItemStack createInstructionReference(MinionFakePlayer minion, String instructionName) {
ItemStack stack = new ItemStack(MinionItems.REFERENCE_ITEM);
stack.set(MinionComponentTypes.REFERENCE, new InstructionClipboard(minion.getUuid(), instructionName, minion.getGameProfile().getName()));
return stack;
}
}
@@ -0,0 +1,32 @@
package io.github.skippyall.minions.clipboard;
import com.mojang.serialization.Codec;
import com.mojang.serialization.MapCodec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.component.ComponentsAccess;
import net.minecraft.item.Item;
import net.minecraft.item.tooltip.TooltipType;
import net.minecraft.text.Text;
import net.minecraft.util.Uuids;
import java.util.UUID;
import java.util.function.Consumer;
public record InstructionClipboard(UUID selectedMinion, String selectedInstruction, String visualMinionName) implements Clipboard {
public static final MapCodec<InstructionClipboard> CODEC = RecordCodecBuilder.mapCodec(instance ->
instance.group(
Uuids.CODEC.fieldOf("selectedMinion").forGetter(InstructionClipboard::selectedMinion),
Codec.STRING.fieldOf("selectedInstruction").forGetter(InstructionClipboard::selectedInstruction),
Codec.STRING.fieldOf("visualMinionName").forGetter(InstructionClipboard::visualMinionName)
).apply(instance, InstructionClipboard::new));
@Override
public MapCodec<? extends Clipboard> getCodec() {
return CODEC;
}
@Override
public void appendTooltip(Item.TooltipContext context, Consumer<Text> textConsumer, TooltipType type, ComponentsAccess components) {
textConsumer.accept(Text.translatable("minions.reference.instruction.tooltip", selectedInstruction, visualMinionName));
}
}