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
public boolean shouldApplyMixin(String targetClassName, String mixinClassName) {
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;
}
@@ -2,21 +2,9 @@ package io.github.skippyall.minions;
import eu.pb4.polymer.resourcepack.api.PolymerResourcePackUtils;
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.MinionData;
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.MinionRegistries;
import io.github.skippyall.minions.util.PolymerUtil;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
@@ -31,21 +19,6 @@ public class Minions implements ModInitializer {
@Override
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();
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.Minions;
import io.github.skippyall.minions.minion.MinionPersistentState;
import io.github.skippyall.minions.reference.InstructionReference;
import io.github.skippyall.minions.reference.Reference;
import io.github.skippyall.minions.clipboard.InstructionClipboard;
import io.github.skippyall.minions.registration.MinionComponentTypes;
import io.github.skippyall.minions.util.PolymerUtil;
import net.minecraft.block.AbstractRedstoneGateBlock;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.BlockWithEntity;
import net.minecraft.block.Blocks;
import net.minecraft.block.ShapeContext;
import net.minecraft.block.SideShapeType;
import net.minecraft.block.entity.BlockEntity;
@@ -86,7 +85,7 @@ public class MinionTriggerBlock extends BlockWithEntity implements PolymerBlock,
@Override
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 -> {
be.setInstruction(instruction.selectedMinion(), instruction.selectedInstruction());
player.playSoundToPlayer(SoundEvents.BLOCK_NOTE_BLOCK_CHIME.value(), SoundCategory.BLOCKS, 1, 1);
@@ -148,7 +147,7 @@ public class MinionTriggerBlock extends BlockWithEntity implements PolymerBlock,
@Override
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
@@ -1,6 +1,6 @@
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.minion.MinionRuntime;
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.codecs.RecordCodecBuilder;
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.registration.MinionBlocks;
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 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;
@@ -12,8 +13,8 @@ import net.minecraft.util.Identifier;
import org.jetbrains.annotations.Nullable;
import xyz.nucleoid.packettweaker.PacketContext;
public class ReferenceItem extends Item implements PolymerItem {
public ReferenceItem(Settings settings) {
public class ClipboardItem extends Item implements PolymerItem {
public ClipboardItem(Settings settings) {
super(settings);
}
@@ -36,7 +37,7 @@ public class ReferenceItem extends Item implements PolymerItem {
public static ItemStack createInstructionReference(MinionFakePlayer minion, String instructionName) {
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;
}
}
@@ -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.MapCodec;
@@ -12,16 +12,16 @@ import net.minecraft.util.Uuids;
import java.util.UUID;
import java.util.function.Consumer;
public record InstructionReference(UUID selectedMinion, String selectedInstruction, String visualMinionName) implements Reference {
public static final MapCodec<InstructionReference> CODEC = RecordCodecBuilder.mapCodec(instance ->
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(InstructionReference::selectedMinion),
Codec.STRING.fieldOf("selectedInstruction").forGetter(InstructionReference::selectedInstruction),
Codec.STRING.fieldOf("visualMinionName").forGetter(InstructionReference::visualMinionName)
).apply(instance, InstructionReference::new));
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 Reference> getCodec() {
public MapCodec<? extends Clipboard> getCodec() {
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.program.instruction.ConfiguredInstruction;
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.screen.ScreenHandlerType;
import net.minecraft.server.network.ServerPlayerEntity;
@@ -61,7 +61,7 @@ public class ConfigureInstructionGui extends InstructionBoundSimpleGui {
.setName(Text.translatable("minions.gui.instruction.configure.copy"))
.addLoreLine(Text.translatable("minions.gui.instruction.configure.copy.description"))
.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);
})
);
@@ -3,7 +3,6 @@ package io.github.skippyall.minions.gui;
import com.mojang.authlib.properties.PropertyMap;
import com.mojang.serialization.Codec;
import io.github.skippyall.minions.registration.MinionRegistries;
import io.github.skippyall.minions.Minions;
import io.github.skippyall.minions.util.TranslationUtil;
import it.unimi.dsi.fastutil.objects.ReferenceSortedSets;
import net.minecraft.component.DataComponentTypes;
@@ -141,11 +140,4 @@ public interface GuiDisplay {
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.gui.SimpleGui;
import io.github.skippyall.minions.registration.MinionComponentTypes;
import io.github.skippyall.minions.registration.MinionRegistries;
import io.github.skippyall.minions.gui.input.Result;
import io.github.skippyall.minions.gui.input.TextInput;
@@ -171,7 +172,7 @@ public class InstructionGui {
for (int i = 0; i < minion.getModuleInventory().size(); 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()) {
gui.addSlot(new GuiElementBuilder(moduleItem)
.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.MinionProfileUtils;
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.type.ProfileComponent;
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.fakeplayer.EntityPlayerActionPack;
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 net.minecraft.storage.ReadView;
import net.minecraft.storage.WriteView;
@@ -1,5 +1,5 @@
//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.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.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.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.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 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.program.supplier.ValueSupplierList;
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 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.program.supplier.Parameter;
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.Vec2f;
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.program.instruction.InstructionExecution;
import io.github.skippyall.minions.program.supplier.Parameter;
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.storage.ReadView;
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.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.serialization.Codec;
@@ -1,4 +1,4 @@
package io.github.skippyall.minions.util;
package io.github.skippyall.minions.listener;
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 net.minecraft.registry.Registry;
@@ -3,15 +3,9 @@ package io.github.skippyall.minions.minion;
import com.mojang.authlib.properties.PropertyMap;
import com.mojang.serialization.Codec;
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.Minions;
import io.github.skippyall.minions.util.SerializableListenerManager;
import net.minecraft.component.ComponentType;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import io.github.skippyall.minions.listener.SerializableListenerManager;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.Identifier;
import net.minecraft.util.Uuids;
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)
);
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) {
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) {
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 io.github.skippyall.minions.gui.MinionLookGui;
import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer;
import io.github.skippyall.minions.registration.MinionComponentTypes;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.TooltipDisplayComponent;
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) {
item.set(MinionData.COMPONENT, data.uuid());
item.set(MinionComponentTypes.MINION_DATA, data.uuid());
MinionPersistentState.get(server).updateMinionData(data);
}
@Nullable
public static MinionData getData(MinecraftServer server, ItemStack item) {
if(item.contains(MinionData.COMPONENT)) {
return MinionPersistentState.get(server).getMinionData(item.get(MinionData.COMPONENT));
if(item.contains(MinionComponentTypes.MINION_DATA)) {
return MinionPersistentState.get(server).getMinionData(item.get(MinionComponentTypes.MINION_DATA));
}
return null;
}
@@ -100,6 +101,6 @@ public class MinionItem extends Item implements PolymerItem {
}
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.program.instruction.ConfiguredInstruction;
import io.github.skippyall.minions.util.SerializableListenerManager;
import io.github.skippyall.minions.listener.SerializableListenerManager;
import org.jetbrains.annotations.Nullable;
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.MinionProfileUtils;
import io.github.skippyall.minions.module.ModuleInventory;
import io.github.skippyall.minions.module.SpecialAbilities;
import io.github.skippyall.minions.util.SerializableListenerManager;
import io.github.skippyall.minions.registration.SpecialAbilities;
import io.github.skippyall.minions.listener.SerializableListenerManager;
import net.minecraft.block.BlockState;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EquipmentSlot;
@@ -2,15 +2,9 @@ package io.github.skippyall.minions.module;
import com.mojang.serialization.Codec;
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.Minions;
import io.github.skippyall.minions.minion.MinionRuntime;
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;
@@ -22,8 +16,6 @@ public record MinionModule(List<InstructionType<MinionRuntime>> instructions, Li
).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 MinionModule(List<InstructionType<MinionRuntime>> instructions) {
@@ -34,9 +26,4 @@ public record MinionModule(List<InstructionType<MinionRuntime>> instructions, Li
this.instructions = List.copyOf(instructions);
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.fakeplayer.MinionFakePlayer;
import io.github.skippyall.minions.program.instruction.InstructionType;
import io.github.skippyall.minions.registration.MinionComponentTypes;
import net.minecraft.inventory.Inventories;
import net.minecraft.inventory.SimpleInventory;
import net.minecraft.item.ItemStack;
@@ -41,7 +42,7 @@ public class ModuleInventory extends SimpleInventory {
@Override
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
@@ -59,7 +60,7 @@ public class ModuleInventory extends SimpleInventory {
instructions.clear();
specialAbilities.clear();
for (ItemStack heldStack : heldStacks) {
MinionModule module = heldStack.get(MinionModule.COMPONENT_TYPE);
MinionModule module = heldStack.get(MinionComponentTypes.MODULE);
if(module != null) {
modules.add(module);
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.ValueSupplierList;
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.WriteView;
import org.jetbrains.annotations.Nullable;
@@ -1,7 +1,7 @@
package io.github.skippyall.minions.program.instruction;
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 {
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.minion.MinionRuntime;
import io.github.skippyall.minions.minion.fakeplayer.EntityPlayerActionPack;
import io.github.skippyall.minions.program.instruction.execution.ActionExecution;
import io.github.skippyall.minions.program.instruction.execution.MineBlockExecution;
import io.github.skippyall.minions.program.instruction.execution.move.ContinuousWalkExecution;
import io.github.skippyall.minions.program.instruction.execution.move.TurnExecution;
import io.github.skippyall.minions.program.instruction.execution.move.TurnVectorExecution;
import io.github.skippyall.minions.program.instruction.execution.move.WalkExecution;
import io.github.skippyall.minions.instruction.ActionExecution;
import io.github.skippyall.minions.instruction.MineBlockExecution;
import io.github.skippyall.minions.instruction.move.ContinuousWalkExecution;
import io.github.skippyall.minions.instruction.move.TurnExecution;
import io.github.skippyall.minions.instruction.move.TurnVectorExecution;
import io.github.skippyall.minions.instruction.move.WalkExecution;
import io.github.skippyall.minions.program.supplier.Parameter;
import net.minecraft.registry.Registry;
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.MinionRuntime;
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.program.instruction.InstructionType;
import io.github.skippyall.minions.program.instruction.Instructions;
import io.github.skippyall.minions.reference.ReferenceItem;
import io.github.skippyall.minions.clipboard.ClipboardItem;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.DamageResistantComponent;
import net.minecraft.entity.damage.DamageType;
@@ -78,7 +76,7 @@ public class MinionItems {
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) {
T item = constructor.apply(settings.registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier)));
@@ -96,7 +94,7 @@ public class MinionItems {
return registerItem(
identifier,
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;
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 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.consumer.ValueConsumerType;
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.FabricRegistryBuilder;
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 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<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 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 net.minecraft.registry.Registry;
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.minion.MinionRuntime;
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 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.gui.input.ChoiceInput;
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.server.network.ServerPlayerEntity;
import net.minecraft.text.Text;