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
@@ -22,7 +22,7 @@ public class MinionMixinConfigPlugin implements IMixinConfigPlugin {
@Override @Override
public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { public boolean shouldApplyMixin(String targetClassName, String mixinClassName) {
if(mixinClassName.startsWith("io.github.skippyall.mixins.compat.universal_graves.")) { if(mixinClassName.startsWith("io.github.skippyall.mixins.compat.universal_graves.")) {
return FabricLoader.getInstance().isModLoaded("universal-universal_graves"); return FabricLoader.getInstance().isModLoaded("universal-graves");
} }
return true; return true;
} }
@@ -2,21 +2,9 @@ package io.github.skippyall.minions;
import eu.pb4.polymer.resourcepack.api.PolymerResourcePackUtils; import eu.pb4.polymer.resourcepack.api.PolymerResourcePackUtils;
import io.github.skippyall.minions.command.MinionsCommand; import io.github.skippyall.minions.command.MinionsCommand;
import io.github.skippyall.minions.gui.GuiDisplay;
import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer; import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer;
import io.github.skippyall.minions.minion.MinionData;
import io.github.skippyall.minions.minion.MinionPersistentState; import io.github.skippyall.minions.minion.MinionPersistentState;
import io.github.skippyall.minions.minion.skin.SkinProviders;
import io.github.skippyall.minions.module.MinionModule;
import io.github.skippyall.minions.program.instruction.Instructions;
import io.github.skippyall.minions.program.supplier.ValueSuppliers;
import io.github.skippyall.minions.program.value.ValueTypes;
import io.github.skippyall.minions.reference.Reference;
import io.github.skippyall.minions.registration.MinionBlocks;
import io.github.skippyall.minions.registration.MinionCreativeTab;
import io.github.skippyall.minions.registration.MinionItems;
import io.github.skippyall.minions.registration.MinionRegistration; import io.github.skippyall.minions.registration.MinionRegistration;
import io.github.skippyall.minions.registration.MinionRegistries;
import io.github.skippyall.minions.util.PolymerUtil; import io.github.skippyall.minions.util.PolymerUtil;
import net.fabricmc.api.ModInitializer; import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
@@ -31,21 +19,6 @@ public class Minions implements ModInitializer {
@Override @Override
public void onInitialize() { public void onInitialize() {
MinionRegistries.register();
Instructions.register();
ValueSuppliers.register();
ValueTypes.register();
SkinProviders.register();
GuiDisplay.register();
MinionData.register();
MinionModule.register();
Reference.register();
MinionBlocks.register();
MinionItems.register();
MinionCreativeTab.registerGroup();
MinionRegistration.register(); MinionRegistration.register();
PolymerUtil.register(); PolymerUtil.register();
@@ -11,14 +11,13 @@ import eu.pb4.polymer.virtualentity.api.elements.ItemDisplayElement;
import io.github.skippyall.minions.registration.MinionBlocks; import io.github.skippyall.minions.registration.MinionBlocks;
import io.github.skippyall.minions.Minions; import io.github.skippyall.minions.Minions;
import io.github.skippyall.minions.minion.MinionPersistentState; import io.github.skippyall.minions.minion.MinionPersistentState;
import io.github.skippyall.minions.reference.InstructionReference; import io.github.skippyall.minions.clipboard.InstructionClipboard;
import io.github.skippyall.minions.reference.Reference; import io.github.skippyall.minions.registration.MinionComponentTypes;
import io.github.skippyall.minions.util.PolymerUtil; import io.github.skippyall.minions.util.PolymerUtil;
import net.minecraft.block.AbstractRedstoneGateBlock; import net.minecraft.block.AbstractRedstoneGateBlock;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.block.BlockWithEntity; import net.minecraft.block.BlockWithEntity;
import net.minecraft.block.Blocks;
import net.minecraft.block.ShapeContext; import net.minecraft.block.ShapeContext;
import net.minecraft.block.SideShapeType; import net.minecraft.block.SideShapeType;
import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.entity.BlockEntity;
@@ -86,7 +85,7 @@ public class MinionTriggerBlock extends BlockWithEntity implements PolymerBlock,
@Override @Override
protected ActionResult onUseWithItem(ItemStack stack, BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { protected ActionResult onUseWithItem(ItemStack stack, BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) {
if(stack.get(Reference.COMPONENT_TYPE) instanceof InstructionReference instruction) { if(stack.get(MinionComponentTypes.REFERENCE) instanceof InstructionClipboard instruction) {
world.getBlockEntity(pos, MinionBlocks.MINION_TRIGGER_BE_TYPE).ifPresent(be -> { world.getBlockEntity(pos, MinionBlocks.MINION_TRIGGER_BE_TYPE).ifPresent(be -> {
be.setInstruction(instruction.selectedMinion(), instruction.selectedInstruction()); be.setInstruction(instruction.selectedMinion(), instruction.selectedInstruction());
player.playSoundToPlayer(SoundEvents.BLOCK_NOTE_BLOCK_CHIME.value(), SoundCategory.BLOCKS, 1, 1); player.playSoundToPlayer(SoundEvents.BLOCK_NOTE_BLOCK_CHIME.value(), SoundCategory.BLOCKS, 1, 1);
@@ -148,7 +147,7 @@ public class MinionTriggerBlock extends BlockWithEntity implements PolymerBlock,
@Override @Override
public BlockState getPolymerBlockState(BlockState state, PacketContext context) { public BlockState getPolymerBlockState(BlockState state, PacketContext context) {
return PolymerUtil.isOnClient(context) ? state : Blocks.COMPARATOR.getDefaultState().with(AbstractRedstoneGateBlock.POWERED, state.get(POWERED)); return PolymerUtil.isOnClient(context) ? state : net.minecraft.block.Blocks.COMPARATOR.getDefaultState().with(AbstractRedstoneGateBlock.POWERED, state.get(POWERED));
} }
@Override @Override
@@ -1,6 +1,6 @@
package io.github.skippyall.minions.block.miniontrigger; package io.github.skippyall.minions.block.miniontrigger;
import io.github.skippyall.minions.block.BlockEntityMinionListener; import io.github.skippyall.minions.listener.BlockEntityMinionListener;
import io.github.skippyall.minions.registration.MinionBlocks; import io.github.skippyall.minions.registration.MinionBlocks;
import io.github.skippyall.minions.minion.MinionRuntime; import io.github.skippyall.minions.minion.MinionRuntime;
import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer; import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer;
@@ -3,7 +3,7 @@ package io.github.skippyall.minions.block.miniontrigger;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import io.github.skippyall.minions.Minions; import io.github.skippyall.minions.Minions;
import io.github.skippyall.minions.block.BlockEntityMinionInstructionListener; import io.github.skippyall.minions.listener.BlockEntityMinionInstructionListener;
import io.github.skippyall.minions.minion.MinionRuntime; import io.github.skippyall.minions.minion.MinionRuntime;
import io.github.skippyall.minions.registration.MinionBlocks; import io.github.skippyall.minions.registration.MinionBlocks;
import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer; import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer;
@@ -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();
}
@@ -1,6 +1,7 @@
package io.github.skippyall.minions.reference; package io.github.skippyall.minions.clipboard;
import eu.pb4.polymer.core.api.item.PolymerItem; 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.registration.MinionItems;
import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer; import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer;
import net.minecraft.component.DataComponentTypes; import net.minecraft.component.DataComponentTypes;
@@ -12,8 +13,8 @@ import net.minecraft.util.Identifier;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import xyz.nucleoid.packettweaker.PacketContext; import xyz.nucleoid.packettweaker.PacketContext;
public class ReferenceItem extends Item implements PolymerItem { public class ClipboardItem extends Item implements PolymerItem {
public ReferenceItem(Settings settings) { public ClipboardItem(Settings settings) {
super(settings); super(settings);
} }
@@ -36,7 +37,7 @@ public class ReferenceItem extends Item implements PolymerItem {
public static ItemStack createInstructionReference(MinionFakePlayer minion, String instructionName) { public static ItemStack createInstructionReference(MinionFakePlayer minion, String instructionName) {
ItemStack stack = new ItemStack(MinionItems.REFERENCE_ITEM); ItemStack stack = new ItemStack(MinionItems.REFERENCE_ITEM);
stack.set(Reference.COMPONENT_TYPE, new InstructionReference(minion.getUuid(), instructionName, minion.getGameProfile().getName())); stack.set(MinionComponentTypes.REFERENCE, new InstructionClipboard(minion.getUuid(), instructionName, minion.getGameProfile().getName()));
return stack; return stack;
} }
} }
@@ -1,4 +1,4 @@
package io.github.skippyall.minions.reference; package io.github.skippyall.minions.clipboard;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import com.mojang.serialization.MapCodec; import com.mojang.serialization.MapCodec;
@@ -12,16 +12,16 @@ import net.minecraft.util.Uuids;
import java.util.UUID; import java.util.UUID;
import java.util.function.Consumer; import java.util.function.Consumer;
public record InstructionReference(UUID selectedMinion, String selectedInstruction, String visualMinionName) implements Reference { public record InstructionClipboard(UUID selectedMinion, String selectedInstruction, String visualMinionName) implements Clipboard {
public static final MapCodec<InstructionReference> CODEC = RecordCodecBuilder.mapCodec(instance -> public static final MapCodec<InstructionClipboard> CODEC = RecordCodecBuilder.mapCodec(instance ->
instance.group( instance.group(
Uuids.CODEC.fieldOf("selectedMinion").forGetter(InstructionReference::selectedMinion), Uuids.CODEC.fieldOf("selectedMinion").forGetter(InstructionClipboard::selectedMinion),
Codec.STRING.fieldOf("selectedInstruction").forGetter(InstructionReference::selectedInstruction), Codec.STRING.fieldOf("selectedInstruction").forGetter(InstructionClipboard::selectedInstruction),
Codec.STRING.fieldOf("visualMinionName").forGetter(InstructionReference::visualMinionName) Codec.STRING.fieldOf("visualMinionName").forGetter(InstructionClipboard::visualMinionName)
).apply(instance, InstructionReference::new)); ).apply(instance, InstructionClipboard::new));
@Override @Override
public MapCodec<? extends Reference> getCodec() { public MapCodec<? extends Clipboard> getCodec() {
return CODEC; return CODEC;
} }
@@ -6,7 +6,7 @@ import io.github.skippyall.minions.minion.MinionRuntime;
import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer; import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer;
import io.github.skippyall.minions.program.instruction.ConfiguredInstruction; import io.github.skippyall.minions.program.instruction.ConfiguredInstruction;
import io.github.skippyall.minions.program.supplier.Parameter; import io.github.skippyall.minions.program.supplier.Parameter;
import io.github.skippyall.minions.reference.ReferenceItem; import io.github.skippyall.minions.clipboard.ClipboardItem;
import net.minecraft.item.Items; import net.minecraft.item.Items;
import net.minecraft.screen.ScreenHandlerType; import net.minecraft.screen.ScreenHandlerType;
import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerEntity;
@@ -61,7 +61,7 @@ public class ConfigureInstructionGui extends InstructionBoundSimpleGui {
.setName(Text.translatable("minions.gui.instruction.configure.copy")) .setName(Text.translatable("minions.gui.instruction.configure.copy"))
.addLoreLine(Text.translatable("minions.gui.instruction.configure.copy.description")) .addLoreLine(Text.translatable("minions.gui.instruction.configure.copy.description"))
.setCallback(() -> { .setCallback(() -> {
player.getInventory().offer(ReferenceItem.createInstructionReference(minion, name), true); player.getInventory().offer(ClipboardItem.createInstructionReference(minion, name), true);
player.playSoundToPlayer(SoundEvents.BLOCK_NOTE_BLOCK_CHIME.value(), SoundCategory.BLOCKS, 1, 1); player.playSoundToPlayer(SoundEvents.BLOCK_NOTE_BLOCK_CHIME.value(), SoundCategory.BLOCKS, 1, 1);
}) })
); );
@@ -3,7 +3,6 @@ package io.github.skippyall.minions.gui;
import com.mojang.authlib.properties.PropertyMap; import com.mojang.authlib.properties.PropertyMap;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import io.github.skippyall.minions.registration.MinionRegistries; import io.github.skippyall.minions.registration.MinionRegistries;
import io.github.skippyall.minions.Minions;
import io.github.skippyall.minions.util.TranslationUtil; import io.github.skippyall.minions.util.TranslationUtil;
import it.unimi.dsi.fastutil.objects.ReferenceSortedSets; import it.unimi.dsi.fastutil.objects.ReferenceSortedSets;
import net.minecraft.component.DataComponentTypes; import net.minecraft.component.DataComponentTypes;
@@ -141,11 +140,4 @@ public interface GuiDisplay {
return CODEC; return CODEC;
} }
} }
static void register() {
Registry.register(MinionRegistries.GUI_DISPLAY_TYPE, Identifier.of(Minions.MOD_ID, "item"), ItemBased.CODEC);
Registry.register(MinionRegistries.GUI_DISPLAY_TYPE, Identifier.of(Minions.MOD_ID, "model"), ModelBased.CODEC);
Registry.register(MinionRegistries.GUI_DISPLAY_TYPE, Identifier.of(Minions.MOD_ID, "head"), HeadBased.CODEC);
Registry.register(MinionRegistries.GUI_DISPLAY_TYPE, Identifier.of(Minions.MOD_ID, "stack"), StackBased.CODEC);
}
} }
@@ -2,6 +2,7 @@ package io.github.skippyall.minions.gui;
import eu.pb4.sgui.api.elements.GuiElementBuilder; import eu.pb4.sgui.api.elements.GuiElementBuilder;
import eu.pb4.sgui.api.gui.SimpleGui; import eu.pb4.sgui.api.gui.SimpleGui;
import io.github.skippyall.minions.registration.MinionComponentTypes;
import io.github.skippyall.minions.registration.MinionRegistries; import io.github.skippyall.minions.registration.MinionRegistries;
import io.github.skippyall.minions.gui.input.Result; import io.github.skippyall.minions.gui.input.Result;
import io.github.skippyall.minions.gui.input.TextInput; import io.github.skippyall.minions.gui.input.TextInput;
@@ -171,7 +172,7 @@ public class InstructionGui {
for (int i = 0; i < minion.getModuleInventory().size(); i++) { for (int i = 0; i < minion.getModuleInventory().size(); i++) {
ItemStack moduleItem = minion.getModuleInventory().getStack(i); ItemStack moduleItem = minion.getModuleInventory().getStack(i);
MinionModule module = moduleItem.get(MinionModule.COMPONENT_TYPE); MinionModule module = moduleItem.get(MinionComponentTypes.MODULE);
if (module != null && !module.instructions().isEmpty()) { if (module != null && !module.instructions().isEmpty()) {
gui.addSlot(new GuiElementBuilder(moduleItem) gui.addSlot(new GuiElementBuilder(moduleItem)
.setCallback(() -> selectInstructionMenu(module, minion, player) .setCallback(() -> selectInstructionMenu(module, minion, player)
@@ -8,7 +8,7 @@ import io.github.skippyall.minions.minion.MinionData;
import io.github.skippyall.minions.minion.MinionItem; import io.github.skippyall.minions.minion.MinionItem;
import io.github.skippyall.minions.minion.MinionProfileUtils; import io.github.skippyall.minions.minion.MinionProfileUtils;
import io.github.skippyall.minions.minion.skin.SkinProvider; import io.github.skippyall.minions.minion.skin.SkinProvider;
import io.github.skippyall.minions.minion.skin.SkinProviders; import io.github.skippyall.minions.registration.SkinProviders;
import net.minecraft.component.DataComponentTypes; import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.ProfileComponent; import net.minecraft.component.type.ProfileComponent;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -1,8 +1,9 @@
package io.github.skippyall.minions.program.instruction.execution; package io.github.skippyall.minions.instruction;
import io.github.skippyall.minions.minion.MinionRuntime; import io.github.skippyall.minions.minion.MinionRuntime;
import io.github.skippyall.minions.minion.fakeplayer.EntityPlayerActionPack; import io.github.skippyall.minions.minion.fakeplayer.EntityPlayerActionPack;
import io.github.skippyall.minions.program.consumer.ValueConsumerList; import io.github.skippyall.minions.program.consumer.ValueConsumerList;
import io.github.skippyall.minions.program.instruction.execution.ContinuousInstructionExecution;
import io.github.skippyall.minions.program.supplier.ValueSupplierList; import io.github.skippyall.minions.program.supplier.ValueSupplierList;
import net.minecraft.storage.ReadView; import net.minecraft.storage.ReadView;
import net.minecraft.storage.WriteView; import net.minecraft.storage.WriteView;
@@ -1,5 +1,5 @@
//partially code from https://github.com/gnembon/fabric-carpet (EntityPlayerActionPack) //partially code from https://github.com/gnembon/fabric-carpet (EntityPlayerActionPack)
package io.github.skippyall.minions.program.instruction.execution; package io.github.skippyall.minions.instruction;
import io.github.skippyall.minions.minion.MinionRuntime; import io.github.skippyall.minions.minion.MinionRuntime;
import io.github.skippyall.minions.minion.fakeplayer.EntityPlayerActionPack; import io.github.skippyall.minions.minion.fakeplayer.EntityPlayerActionPack;
@@ -1,4 +1,4 @@
package io.github.skippyall.minions.program.instruction.execution.inventory; package io.github.skippyall.minions.instruction.inventory;
import io.github.skippyall.minions.minion.MinionRuntime; import io.github.skippyall.minions.minion.MinionRuntime;
import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer; import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer;
@@ -1,4 +1,4 @@
package io.github.skippyall.minions.program.instruction.execution.move; package io.github.skippyall.minions.instruction.move;
import io.github.skippyall.minions.minion.MinionRuntime; import io.github.skippyall.minions.minion.MinionRuntime;
import io.github.skippyall.minions.program.instruction.InstructionExecution; import io.github.skippyall.minions.program.instruction.InstructionExecution;
@@ -1,4 +1,4 @@
package io.github.skippyall.minions.program.instruction.execution.move; package io.github.skippyall.minions.instruction.move;
import io.github.skippyall.minions.minion.MinionRuntime; import io.github.skippyall.minions.minion.MinionRuntime;
import io.github.skippyall.minions.program.instruction.InstructionExecution; import io.github.skippyall.minions.program.instruction.InstructionExecution;
@@ -1,4 +1,4 @@
package io.github.skippyall.minions.program.instruction.execution.move; package io.github.skippyall.minions.instruction.move;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import io.github.skippyall.minions.gui.Displayable; import io.github.skippyall.minions.gui.Displayable;
@@ -1,9 +1,9 @@
package io.github.skippyall.minions.program.instruction.execution.move; package io.github.skippyall.minions.instruction.move;
import io.github.skippyall.minions.minion.MinionRuntime; import io.github.skippyall.minions.minion.MinionRuntime;
import io.github.skippyall.minions.program.supplier.ValueSupplierList; import io.github.skippyall.minions.program.supplier.ValueSupplierList;
import io.github.skippyall.minions.program.supplier.Parameter; import io.github.skippyall.minions.program.supplier.Parameter;
import io.github.skippyall.minions.program.value.ValueTypes; import io.github.skippyall.minions.registration.ValueTypes;
public class TurnExecution extends AbstractTurnExecution { public class TurnExecution extends AbstractTurnExecution {
public static final Parameter<Double> ANGLE = new Parameter<>("maxAngle", ValueTypes.DOUBLE); public static final Parameter<Double> ANGLE = new Parameter<>("maxAngle", ValueTypes.DOUBLE);
@@ -1,9 +1,9 @@
package io.github.skippyall.minions.program.instruction.execution.move; package io.github.skippyall.minions.instruction.move;
import io.github.skippyall.minions.minion.MinionRuntime; import io.github.skippyall.minions.minion.MinionRuntime;
import io.github.skippyall.minions.program.supplier.Parameter; import io.github.skippyall.minions.program.supplier.Parameter;
import io.github.skippyall.minions.program.supplier.ValueSupplierList; import io.github.skippyall.minions.program.supplier.ValueSupplierList;
import io.github.skippyall.minions.program.value.ValueTypes; import io.github.skippyall.minions.registration.ValueTypes;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec2f; import net.minecraft.util.math.Vec2f;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
@@ -1,10 +1,10 @@
package io.github.skippyall.minions.program.instruction.execution.move; package io.github.skippyall.minions.instruction.move;
import io.github.skippyall.minions.minion.MinionRuntime; import io.github.skippyall.minions.minion.MinionRuntime;
import io.github.skippyall.minions.program.instruction.InstructionExecution; import io.github.skippyall.minions.program.instruction.InstructionExecution;
import io.github.skippyall.minions.program.supplier.Parameter; import io.github.skippyall.minions.program.supplier.Parameter;
import io.github.skippyall.minions.program.supplier.ValueSupplierList; import io.github.skippyall.minions.program.supplier.ValueSupplierList;
import io.github.skippyall.minions.program.value.ValueTypes; import io.github.skippyall.minions.registration.ValueTypes;
import net.minecraft.entity.MovementType; import net.minecraft.entity.MovementType;
import net.minecraft.storage.ReadView; import net.minecraft.storage.ReadView;
import net.minecraft.storage.WriteView; import net.minecraft.storage.WriteView;
@@ -1,4 +1,4 @@
package io.github.skippyall.minions.block; package io.github.skippyall.minions.listener;
import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer; import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer;
import io.github.skippyall.minions.program.instruction.ConfiguredInstructionListener; import io.github.skippyall.minions.program.instruction.ConfiguredInstructionListener;
@@ -1,4 +1,4 @@
package io.github.skippyall.minions.block; package io.github.skippyall.minions.listener;
import com.mojang.datafixers.util.Function3; import com.mojang.datafixers.util.Function3;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
@@ -1,4 +1,4 @@
package io.github.skippyall.minions.util; package io.github.skippyall.minions.listener;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@@ -1,4 +1,4 @@
package io.github.skippyall.minions.util; package io.github.skippyall.minions.listener;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import net.minecraft.registry.Registry; import net.minecraft.registry.Registry;
@@ -3,15 +3,9 @@ package io.github.skippyall.minions.minion;
import com.mojang.authlib.properties.PropertyMap; import com.mojang.authlib.properties.PropertyMap;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import eu.pb4.polymer.core.api.other.PolymerComponent;
import io.github.skippyall.minions.registration.MinionRegistries; import io.github.skippyall.minions.registration.MinionRegistries;
import io.github.skippyall.minions.Minions; import io.github.skippyall.minions.listener.SerializableListenerManager;
import io.github.skippyall.minions.util.SerializableListenerManager;
import net.minecraft.component.ComponentType;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraft.util.Identifier;
import net.minecraft.util.Uuids; import net.minecraft.util.Uuids;
import net.minecraft.util.dynamic.Codecs; import net.minecraft.util.dynamic.Codecs;
@@ -32,8 +26,6 @@ public record MinionData(UUID uuid, String name, Optional<PropertyMap> skin, boo
).apply(instance, MinionData::new) ).apply(instance, MinionData::new)
); );
public static final ComponentType<UUID> COMPONENT = Registry.register(Registries.DATA_COMPONENT_TYPE, Identifier.of(Minions.MOD_ID, "minion_data"), ComponentType.<UUID>builder().codec(Uuids.CODEC).build());
public static MinionData createDefault(MinecraftServer server) { public static MinionData createDefault(MinecraftServer server) {
return new MinionData(UUID.randomUUID(), MinionProfileUtils.newDefaultMinionName(server), Optional.empty(), false, new SerializableListenerManager<>(MinionRegistries.MINION_LISTENER_CODECS)); return new MinionData(UUID.randomUUID(), MinionProfileUtils.newDefaultMinionName(server), Optional.empty(), false, new SerializableListenerManager<>(MinionRegistries.MINION_LISTENER_CODECS));
} }
@@ -49,8 +41,4 @@ public record MinionData(UUID uuid, String name, Optional<PropertyMap> skin, boo
public MinionData withSpawned(boolean isSpawned) { public MinionData withSpawned(boolean isSpawned) {
return new MinionData(uuid, name, skin, isSpawned, listeners); return new MinionData(uuid, name, skin, isSpawned, listeners);
} }
public static void register() {
PolymerComponent.registerDataComponent(COMPONENT);
}
} }
@@ -4,6 +4,7 @@ import eu.pb4.polymer.core.api.item.PolymerItem;
import eu.pb4.polymer.core.api.item.PolymerItemUtils; import eu.pb4.polymer.core.api.item.PolymerItemUtils;
import io.github.skippyall.minions.gui.MinionLookGui; import io.github.skippyall.minions.gui.MinionLookGui;
import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer; import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer;
import io.github.skippyall.minions.registration.MinionComponentTypes;
import net.minecraft.component.DataComponentTypes; import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.TooltipDisplayComponent; import net.minecraft.component.type.TooltipDisplayComponent;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
@@ -78,14 +79,14 @@ public class MinionItem extends Item implements PolymerItem {
} }
public static void setData(MinecraftServer server, MinionData data, ItemStack item) { public static void setData(MinecraftServer server, MinionData data, ItemStack item) {
item.set(MinionData.COMPONENT, data.uuid()); item.set(MinionComponentTypes.MINION_DATA, data.uuid());
MinionPersistentState.get(server).updateMinionData(data); MinionPersistentState.get(server).updateMinionData(data);
} }
@Nullable @Nullable
public static MinionData getData(MinecraftServer server, ItemStack item) { public static MinionData getData(MinecraftServer server, ItemStack item) {
if(item.contains(MinionData.COMPONENT)) { if(item.contains(MinionComponentTypes.MINION_DATA)) {
return MinionPersistentState.get(server).getMinionData(item.get(MinionData.COMPONENT)); return MinionPersistentState.get(server).getMinionData(item.get(MinionComponentTypes.MINION_DATA));
} }
return null; return null;
} }
@@ -100,6 +101,6 @@ public class MinionItem extends Item implements PolymerItem {
} }
public static boolean containsData(ItemStack item) { public static boolean containsData(ItemStack item) {
return item.contains(MinionData.COMPONENT); return item.contains(MinionComponentTypes.MINION_DATA);
} }
} }
@@ -2,7 +2,7 @@ package io.github.skippyall.minions.minion;
import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer; import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer;
import io.github.skippyall.minions.program.instruction.ConfiguredInstruction; import io.github.skippyall.minions.program.instruction.ConfiguredInstruction;
import io.github.skippyall.minions.util.SerializableListenerManager; import io.github.skippyall.minions.listener.SerializableListenerManager;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
public interface MinionListener extends SerializableListenerManager.SerializableListener { public interface MinionListener extends SerializableListenerManager.SerializableListener {
@@ -12,8 +12,8 @@ import io.github.skippyall.minions.minion.MinionItem;
import io.github.skippyall.minions.minion.MinionPersistentState; import io.github.skippyall.minions.minion.MinionPersistentState;
import io.github.skippyall.minions.minion.MinionProfileUtils; import io.github.skippyall.minions.minion.MinionProfileUtils;
import io.github.skippyall.minions.module.ModuleInventory; import io.github.skippyall.minions.module.ModuleInventory;
import io.github.skippyall.minions.module.SpecialAbilities; import io.github.skippyall.minions.registration.SpecialAbilities;
import io.github.skippyall.minions.util.SerializableListenerManager; import io.github.skippyall.minions.listener.SerializableListenerManager;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.EquipmentSlot;
@@ -2,15 +2,9 @@ package io.github.skippyall.minions.module;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import eu.pb4.polymer.core.api.other.PolymerComponent;
import io.github.skippyall.minions.registration.MinionRegistries; import io.github.skippyall.minions.registration.MinionRegistries;
import io.github.skippyall.minions.Minions;
import io.github.skippyall.minions.minion.MinionRuntime; import io.github.skippyall.minions.minion.MinionRuntime;
import io.github.skippyall.minions.program.instruction.InstructionType; import io.github.skippyall.minions.program.instruction.InstructionType;
import net.minecraft.component.ComponentType;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;
import java.util.List; import java.util.List;
@@ -22,8 +16,6 @@ public record MinionModule(List<InstructionType<MinionRuntime>> instructions, Li
).apply(instance, MinionModule::new) ).apply(instance, MinionModule::new)
); );
public static final ComponentType<MinionModule> COMPONENT_TYPE = ComponentType.<MinionModule>builder().codec(CODEC).build();
public static final MinionModule EMPTY = new MinionModule(List.of()); public static final MinionModule EMPTY = new MinionModule(List.of());
public MinionModule(List<InstructionType<MinionRuntime>> instructions) { public MinionModule(List<InstructionType<MinionRuntime>> instructions) {
@@ -34,9 +26,4 @@ public record MinionModule(List<InstructionType<MinionRuntime>> instructions, Li
this.instructions = List.copyOf(instructions); this.instructions = List.copyOf(instructions);
this.specialAbilities = List.copyOf(specialAbilities); this.specialAbilities = List.copyOf(specialAbilities);
} }
public static void register() {
Registry.register(Registries.DATA_COMPONENT_TYPE, Identifier.of(Minions.MOD_ID, "minion_module"), COMPONENT_TYPE);
PolymerComponent.registerDataComponent(COMPONENT_TYPE);
}
} }
@@ -3,6 +3,7 @@ package io.github.skippyall.minions.module;
import io.github.skippyall.minions.minion.MinionRuntime; import io.github.skippyall.minions.minion.MinionRuntime;
import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer; import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer;
import io.github.skippyall.minions.program.instruction.InstructionType; import io.github.skippyall.minions.program.instruction.InstructionType;
import io.github.skippyall.minions.registration.MinionComponentTypes;
import net.minecraft.inventory.Inventories; import net.minecraft.inventory.Inventories;
import net.minecraft.inventory.SimpleInventory; import net.minecraft.inventory.SimpleInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -41,7 +42,7 @@ public class ModuleInventory extends SimpleInventory {
@Override @Override
public boolean isValid(int slot, ItemStack stack) { public boolean isValid(int slot, ItemStack stack) {
return (stack.getCount() <= getMaxCountPerStack()) && stack.contains(MinionModule.COMPONENT_TYPE); return (stack.getCount() <= getMaxCountPerStack()) && stack.contains(MinionComponentTypes.MODULE);
} }
@Override @Override
@@ -59,7 +60,7 @@ public class ModuleInventory extends SimpleInventory {
instructions.clear(); instructions.clear();
specialAbilities.clear(); specialAbilities.clear();
for (ItemStack heldStack : heldStacks) { for (ItemStack heldStack : heldStacks) {
MinionModule module = heldStack.get(MinionModule.COMPONENT_TYPE); MinionModule module = heldStack.get(MinionComponentTypes.MODULE);
if(module != null) { if(module != null) {
modules.add(module); modules.add(module);
instructions.addAll(module.instructions()); instructions.addAll(module.instructions());
@@ -1,10 +0,0 @@
package io.github.skippyall.minions.module;
import io.github.skippyall.minions.registration.MinionRegistries;
import io.github.skippyall.minions.Minions;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;
public class SpecialAbilities {
public static final MobSpawningAbility MOB_SPAWNING = Registry.register(MinionRegistries.SPECIAL_ABILITIES, Identifier.of(Minions.MOD_ID, "mob_spawning"), new MobSpawningAbility());
}
@@ -6,7 +6,7 @@ import io.github.skippyall.minions.program.InstructionRuntime;
import io.github.skippyall.minions.program.supplier.Parameter; import io.github.skippyall.minions.program.supplier.Parameter;
import io.github.skippyall.minions.program.supplier.ValueSupplierList; import io.github.skippyall.minions.program.supplier.ValueSupplierList;
import io.github.skippyall.minions.program.consumer.ValueConsumerList; import io.github.skippyall.minions.program.consumer.ValueConsumerList;
import io.github.skippyall.minions.util.SerializableListenerManager; import io.github.skippyall.minions.listener.SerializableListenerManager;
import net.minecraft.storage.ReadView; import net.minecraft.storage.ReadView;
import net.minecraft.storage.WriteView; import net.minecraft.storage.WriteView;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@@ -1,7 +1,7 @@
package io.github.skippyall.minions.program.instruction; package io.github.skippyall.minions.program.instruction;
import io.github.skippyall.minions.program.supplier.Parameter; import io.github.skippyall.minions.program.supplier.Parameter;
import io.github.skippyall.minions.util.SerializableListenerManager; import io.github.skippyall.minions.listener.SerializableListenerManager;
public interface ConfiguredInstructionListener extends SerializableListenerManager.SerializableListener { public interface ConfiguredInstructionListener extends SerializableListenerManager.SerializableListener {
default void onRun(ConfiguredInstruction<?> instruction) {} default void onRun(ConfiguredInstruction<?> instruction) {}
@@ -1,31 +0,0 @@
package io.github.skippyall.minions.reference;
import com.mojang.serialization.Codec;
import com.mojang.serialization.MapCodec;
import eu.pb4.polymer.core.api.other.PolymerComponent;
import io.github.skippyall.minions.registration.MinionRegistries;
import io.github.skippyall.minions.Minions;
import net.fabricmc.fabric.api.item.v1.ComponentTooltipAppenderRegistry;
import net.minecraft.component.ComponentType;
import net.minecraft.item.tooltip.TooltipAppender;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;
import java.util.function.Function;
public interface Reference extends TooltipAppender {
Codec<Reference> CODEC = MinionRegistries.REFERENCE_CODEC.getCodec().dispatch(Reference::getCodec, Function.identity());
ComponentType<Reference> COMPONENT_TYPE = ComponentType.<Reference>builder().codec(CODEC).build();
MapCodec<? extends Reference> getCodec();
static void register() {
Registry.register(MinionRegistries.REFERENCE_CODEC, Identifier.of(Minions.MOD_ID, "instruction"), InstructionReference.CODEC);
Registry.register(Registries.DATA_COMPONENT_TYPE, Identifier.of(Minions.MOD_ID, "reference"), COMPONENT_TYPE);
PolymerComponent.registerDataComponent(COMPONENT_TYPE);
ComponentTooltipAppenderRegistry.addFirst(COMPONENT_TYPE);
}
}
@@ -0,0 +1,18 @@
package io.github.skippyall.minions.registration;
import com.mojang.serialization.MapCodec;
import io.github.skippyall.minions.Minions;
import io.github.skippyall.minions.clipboard.InstructionClipboard;
import io.github.skippyall.minions.clipboard.Clipboard;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;
public class ClipboardTypes {
private static void register(String id, MapCodec<? extends Clipboard> codec) {
Registry.register(MinionRegistries.CLIPBOARD_TYPES, Identifier.of(Minions.MOD_ID, id), codec);
}
static void register() {
register("instruction", InstructionClipboard.CODEC);
}
}
@@ -0,0 +1,15 @@
package io.github.skippyall.minions.registration;
import io.github.skippyall.minions.Minions;
import io.github.skippyall.minions.gui.GuiDisplay;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;
public class GuiDisplayTypes {
static void register() {
Registry.register(MinionRegistries.GUI_DISPLAY_TYPE, Identifier.of(Minions.MOD_ID, "item"), GuiDisplay.ItemBased.CODEC);
Registry.register(MinionRegistries.GUI_DISPLAY_TYPE, Identifier.of(Minions.MOD_ID, "model"), GuiDisplay.ModelBased.CODEC);
Registry.register(MinionRegistries.GUI_DISPLAY_TYPE, Identifier.of(Minions.MOD_ID, "head"), GuiDisplay.HeadBased.CODEC);
Registry.register(MinionRegistries.GUI_DISPLAY_TYPE, Identifier.of(Minions.MOD_ID, "stack"), GuiDisplay.StackBased.CODEC);
}
}
@@ -1,15 +1,16 @@
package io.github.skippyall.minions.program.instruction; package io.github.skippyall.minions.registration;
import io.github.skippyall.minions.registration.MinionRegistries; import io.github.skippyall.minions.program.instruction.InstructionExecution;
import io.github.skippyall.minions.program.instruction.InstructionType;
import io.github.skippyall.minions.Minions; import io.github.skippyall.minions.Minions;
import io.github.skippyall.minions.minion.MinionRuntime; import io.github.skippyall.minions.minion.MinionRuntime;
import io.github.skippyall.minions.minion.fakeplayer.EntityPlayerActionPack; import io.github.skippyall.minions.minion.fakeplayer.EntityPlayerActionPack;
import io.github.skippyall.minions.program.instruction.execution.ActionExecution; import io.github.skippyall.minions.instruction.ActionExecution;
import io.github.skippyall.minions.program.instruction.execution.MineBlockExecution; import io.github.skippyall.minions.instruction.MineBlockExecution;
import io.github.skippyall.minions.program.instruction.execution.move.ContinuousWalkExecution; import io.github.skippyall.minions.instruction.move.ContinuousWalkExecution;
import io.github.skippyall.minions.program.instruction.execution.move.TurnExecution; import io.github.skippyall.minions.instruction.move.TurnExecution;
import io.github.skippyall.minions.program.instruction.execution.move.TurnVectorExecution; import io.github.skippyall.minions.instruction.move.TurnVectorExecution;
import io.github.skippyall.minions.program.instruction.execution.move.WalkExecution; import io.github.skippyall.minions.instruction.move.WalkExecution;
import io.github.skippyall.minions.program.supplier.Parameter; import io.github.skippyall.minions.program.supplier.Parameter;
import net.minecraft.registry.Registry; import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
@@ -0,0 +1,30 @@
package io.github.skippyall.minions.registration;
import eu.pb4.polymer.core.api.other.PolymerComponent;
import io.github.skippyall.minions.Minions;
import io.github.skippyall.minions.module.MinionModule;
import io.github.skippyall.minions.clipboard.Clipboard;
import net.fabricmc.fabric.api.item.v1.ComponentTooltipAppenderRegistry;
import net.minecraft.component.ComponentType;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;
import net.minecraft.util.Uuids;
import java.util.UUID;
public class MinionComponentTypes {
public static final ComponentType<UUID> MINION_DATA = register("minion_data", ComponentType.<UUID>builder().codec(Uuids.CODEC).build());
public static final ComponentType<MinionModule> MODULE = register("minion_module", ComponentType.<MinionModule>builder().codec(MinionModule.CODEC).build());
public static final ComponentType<Clipboard> REFERENCE = ComponentType.<Clipboard>builder().codec(Clipboard.CODEC).build();
private static <T extends ComponentType<?>> T register(String name, T type) {
Registry.register(Registries.DATA_COMPONENT_TYPE, Identifier.of(Minions.MOD_ID, name), type);
PolymerComponent.registerDataComponent(type);
return type;
}
public static void register() {
ComponentTooltipAppenderRegistry.addFirst(MinionComponentTypes.REFERENCE);
}
}
@@ -6,11 +6,9 @@ import io.github.skippyall.minions.block.miniontrigger.MinionTriggerBlockItem;
import io.github.skippyall.minions.minion.MinionItem; import io.github.skippyall.minions.minion.MinionItem;
import io.github.skippyall.minions.minion.MinionRuntime; import io.github.skippyall.minions.minion.MinionRuntime;
import io.github.skippyall.minions.module.MinionModule; import io.github.skippyall.minions.module.MinionModule;
import io.github.skippyall.minions.module.SpecialAbilities;
import io.github.skippyall.minions.module.SpecialAbility; import io.github.skippyall.minions.module.SpecialAbility;
import io.github.skippyall.minions.program.instruction.InstructionType; import io.github.skippyall.minions.program.instruction.InstructionType;
import io.github.skippyall.minions.program.instruction.Instructions; import io.github.skippyall.minions.clipboard.ClipboardItem;
import io.github.skippyall.minions.reference.ReferenceItem;
import net.minecraft.component.DataComponentTypes; import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.DamageResistantComponent; import net.minecraft.component.type.DamageResistantComponent;
import net.minecraft.entity.damage.DamageType; import net.minecraft.entity.damage.DamageType;
@@ -78,7 +76,7 @@ public class MinionItems {
new Item.Settings().useBlockPrefixedTranslationKey() new Item.Settings().useBlockPrefixedTranslationKey()
); );
public static final ReferenceItem REFERENCE_ITEM = registerItem(Identifier.of(MOD_ID, "reference"), ReferenceItem::new); public static final ClipboardItem REFERENCE_ITEM = registerItem(Identifier.of(MOD_ID, "clipboard"), ClipboardItem::new);
public static <T extends Item> T registerItem(Identifier identifier, Function<Item.Settings, T> constructor, Item.Settings settings) { public static <T extends Item> T registerItem(Identifier identifier, Function<Item.Settings, T> constructor, Item.Settings settings) {
T item = constructor.apply(settings.registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier))); T item = constructor.apply(settings.registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier)));
@@ -96,7 +94,7 @@ public class MinionItems {
return registerItem( return registerItem(
identifier, identifier,
settings -> new SimplePolymerItem(settings, vanillaItem), settings -> new SimplePolymerItem(settings, vanillaItem),
new Item.Settings().component(MinionModule.COMPONENT_TYPE, new MinionModule(instructionTypes, specialAbilities)) new Item.Settings().component(MinionComponentTypes.MODULE, new MinionModule(instructionTypes, specialAbilities))
); );
} }
@@ -0,0 +1,12 @@
package io.github.skippyall.minions.registration;
import io.github.skippyall.minions.Minions;
import io.github.skippyall.minions.block.miniontrigger.MinionTriggerMinionListener;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;
public class MinionListeners {
public static void register() {
Registry.register(MinionRegistries.MINION_LISTENER_CODECS, Identifier.of(Minions.MOD_ID, "minion_trigger"), MinionTriggerMinionListener.CODEC);
}
}
@@ -1,13 +1,21 @@
package io.github.skippyall.minions.registration; package io.github.skippyall.minions.registration;
import io.github.skippyall.minions.Minions;
import io.github.skippyall.minions.block.miniontrigger.MinionTriggerMinionListener;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;
public class MinionRegistration { public class MinionRegistration {
public static void register() { public static void register() {
Registry.register(MinionRegistries.MINION_LISTENER_CODECS, Identifier.of(Minions.MOD_ID, "minion_trigger"), MinionTriggerMinionListener.CODEC); MinionRegistries.register();
ClipboardTypes.register();
GuiDisplayTypes.register();
Instructions.register();
MinionBlocks.register();
MinionComponentTypes.register();
MinionItems.register();
MinionListeners.register();
SkinProviders.register();
SpecialAbilities.register();
ValueSuppliers.register();
ValueTypes.register();
MinionCreativeTab.registerGroup();
} }
} }
@@ -14,7 +14,7 @@ import io.github.skippyall.minions.program.supplier.ValueSupplierType;
import io.github.skippyall.minions.program.instruction.InstructionType; import io.github.skippyall.minions.program.instruction.InstructionType;
import io.github.skippyall.minions.program.consumer.ValueConsumerType; import io.github.skippyall.minions.program.consumer.ValueConsumerType;
import io.github.skippyall.minions.program.value.ValueType; import io.github.skippyall.minions.program.value.ValueType;
import io.github.skippyall.minions.reference.Reference; import io.github.skippyall.minions.clipboard.Clipboard;
import net.fabricmc.fabric.api.event.registry.DynamicRegistries; import net.fabricmc.fabric.api.event.registry.DynamicRegistries;
import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder; import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder;
import net.fabricmc.fabric.api.event.registry.RegistryAttribute; import net.fabricmc.fabric.api.event.registry.RegistryAttribute;
@@ -31,7 +31,7 @@ public class MinionRegistries {
public static final Registry<Codec<? extends GuiDisplay>> GUI_DISPLAY_TYPE = registry("gui_display_type"); public static final Registry<Codec<? extends GuiDisplay>> GUI_DISPLAY_TYPE = registry("gui_display_type");
public static final Registry<Codec<? extends ConfiguredInstructionListener>> INSTRUCTION_LISTENER_CODECS = registry("instruction_listener_codec"); public static final Registry<Codec<? extends ConfiguredInstructionListener>> INSTRUCTION_LISTENER_CODECS = registry("instruction_listener_codec");
public static final Registry<Codec<? extends MinionListener>> MINION_LISTENER_CODECS = registry("minion_listener_codec"); public static final Registry<Codec<? extends MinionListener>> MINION_LISTENER_CODECS = registry("minion_listener_codec");
public static final Registry<MapCodec<? extends Reference>> REFERENCE_CODEC = registry("reference_codec"); public static final Registry<MapCodec<? extends Clipboard>> CLIPBOARD_TYPES = registry("clipboard_type");
public static final Registry<SpecialAbility> SPECIAL_ABILITIES = registry("special_ability"); public static final Registry<SpecialAbility> SPECIAL_ABILITIES = registry("special_ability");
public static final RegistryKey<Registry<GuiDisplay>> GUI_DISPLAY = key("gui_display"); public static final RegistryKey<Registry<GuiDisplay>> GUI_DISPLAY = key("gui_display");
@@ -1,6 +1,9 @@
package io.github.skippyall.minions.minion.skin; package io.github.skippyall.minions.registration;
import io.github.skippyall.minions.registration.MinionRegistries; import io.github.skippyall.minions.minion.skin.Base64SkinProvider;
import io.github.skippyall.minions.minion.skin.NameSkinProvider;
import io.github.skippyall.minions.minion.skin.SkinProvider;
import io.github.skippyall.minions.minion.skin.UUIDSkinProvider;
import io.github.skippyall.minions.Minions; import io.github.skippyall.minions.Minions;
import net.minecraft.registry.Registry; import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
@@ -0,0 +1,18 @@
package io.github.skippyall.minions.registration;
import io.github.skippyall.minions.module.MobSpawningAbility;
import io.github.skippyall.minions.Minions;
import io.github.skippyall.minions.module.SpecialAbility;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;
public class SpecialAbilities {
public static final MobSpawningAbility MOB_SPAWNING = register("mob_spawning", new MobSpawningAbility());
private static <T extends SpecialAbility> T register(String name, T type) {
Registry.register(MinionRegistries.SPECIAL_ABILITIES, Identifier.of(Minions.MOD_ID, name), type);
return type;
}
public static void register() {}
}
@@ -1,6 +1,7 @@
package io.github.skippyall.minions.program.supplier; package io.github.skippyall.minions.registration;
import io.github.skippyall.minions.registration.MinionRegistries; import io.github.skippyall.minions.program.supplier.FixedValueSupplierType;
import io.github.skippyall.minions.program.supplier.ValueSupplierType;
import io.github.skippyall.minions.Minions; import io.github.skippyall.minions.Minions;
import io.github.skippyall.minions.minion.MinionRuntime; import io.github.skippyall.minions.minion.MinionRuntime;
import net.minecraft.registry.Registry; import net.minecraft.registry.Registry;
@@ -1,11 +1,11 @@
package io.github.skippyall.minions.program.value; package io.github.skippyall.minions.registration;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import io.github.skippyall.minions.registration.MinionRegistries; import io.github.skippyall.minions.program.value.ValueType;
import io.github.skippyall.minions.Minions; import io.github.skippyall.minions.Minions;
import io.github.skippyall.minions.gui.input.ChoiceInput; import io.github.skippyall.minions.gui.input.ChoiceInput;
import io.github.skippyall.minions.gui.input.TextInput; import io.github.skippyall.minions.gui.input.TextInput;
import io.github.skippyall.minions.program.instruction.execution.move.TurnDirection; import io.github.skippyall.minions.instruction.move.TurnDirection;
import net.minecraft.registry.Registry; import net.minecraft.registry.Registry;
import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.Text; import net.minecraft.text.Text;