diff --git a/gradle.properties b/gradle.properties index 5fdd6fe..48b088b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx1G yarn_mappings=1.21.3+build.2 # Mod Properties - mod_version = 0.0.1-SNAPSHOT + mod_version = 0.1.1-SNAPSHOT maven_group = io.github.skippyall archives_base_name = Minions diff --git a/src/main/java/io/github/skippyall/minions/Minions.java b/src/main/java/io/github/skippyall/minions/Minions.java index 7522d34..f0818b2 100644 --- a/src/main/java/io/github/skippyall/minions/Minions.java +++ b/src/main/java/io/github/skippyall/minions/Minions.java @@ -3,6 +3,7 @@ package io.github.skippyall.minions; import eu.pb4.polymer.core.api.entity.PolymerEntityUtils; import eu.pb4.polymer.core.api.item.SimplePolymerItem; import io.github.skippyall.minions.fakeplayer.MinionFakePlayer; +import io.github.skippyall.minions.minion.MinionData; import io.github.skippyall.minions.minion.MinionItem; import io.github.skippyall.minions.minion.MinionPersistentState; import io.github.skippyall.minions.module.Modules; @@ -11,8 +12,11 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; import net.minecraft.item.Item; import net.minecraft.item.Items; +import net.minecraft.registry.BuiltinRegistries; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; import net.minecraft.server.MinecraftServer; import net.minecraft.util.Identifier; import org.slf4j.Logger; @@ -23,8 +27,11 @@ import java.util.List; public class Minions implements ModInitializer { public static final String MOD_ID = "minions"; - public static final MinionItem MINION_ITEM = Registry.register(Registries.ITEM, Identifier.of(MOD_ID, "minion"), new MinionItem(false)); - public static final SimplePolymerItem BASIC_UPGRADE_BASE = Registry.register(Registries.ITEM, Identifier.of(MOD_ID, "basic_upgrade_base"), new SimplePolymerItem(new Item.Settings(), Items.NETHERITE_UPGRADE_SMITHING_TEMPLATE)); + + private static final Identifier MINION_ITEM_ID = Identifier.of(MOD_ID, "minion"); + public static final MinionItem MINION_ITEM = Registry.register(Registries.ITEM, Identifier.of(MOD_ID, "minion"), new MinionItem(new Item.Settings().registryKey(RegistryKey.of(RegistryKeys.ITEM, MINION_ITEM_ID)),false)); + private static final Identifier BASIC_UPGRADE_BASE_ID = Identifier.of(MOD_ID, "basic_upgrade_base"); + public static final SimplePolymerItem BASIC_UPGRADE_BASE = Registry.register(Registries.ITEM, BASIC_UPGRADE_BASE_ID, new SimplePolymerItem(new Item.Settings().registryKey(RegistryKey.of(RegistryKeys.ITEM, BASIC_UPGRADE_BASE_ID)), Items.NETHERITE_UPGRADE_SMITHING_TEMPLATE)); public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); @@ -32,12 +39,13 @@ public class Minions implements ModInitializer { @Override public void onInitialize() { + MinionData.register(); LOGGER.debug("Add Customthing"); PolymerEntityUtils.registerType(); ServerLifecycleEvents.SERVER_STARTED.register(server -> { MinionPersistentState.create(server); MinionPersistentState.INSTANCE.getMinionData().forEach(data -> { - System.out.println("spawn Minion " + data.name); + System.out.println("spawn Minion " + data.name()); MinionFakePlayer.spawnMinionAt(data, server.getOverworld(), null, null); }); }); diff --git a/src/main/java/io/github/skippyall/minions/fakeplayer/MinionFakePlayer.java b/src/main/java/io/github/skippyall/minions/fakeplayer/MinionFakePlayer.java index 9ac4520..cce156c 100644 --- a/src/main/java/io/github/skippyall/minions/fakeplayer/MinionFakePlayer.java +++ b/src/main/java/io/github/skippyall/minions/fakeplayer/MinionFakePlayer.java @@ -42,6 +42,7 @@ import net.minecraft.world.GameMode; import net.minecraft.world.TeleportTarget; import org.jetbrains.annotations.Nullable; +import java.util.Optional; import java.util.Set; import java.util.UUID; import java.util.concurrent.CompletableFuture; @@ -62,14 +63,14 @@ public class MinionFakePlayer extends ServerPlayerEntity { MinecraftServer server = level.getServer(); CompletableFuture future; - if(data.skinUuid != null) { - future = MinionProfileUtils.getSkinOwnerProfile(server, data.skinUuid); + if(data.skinUuid().isPresent()) { + future = MinionProfileUtils.getSkinOwnerProfile(server, data.skinUuid().get()); } else { - future = MinionProfileUtils.lookupSkinOwnerProfile(server, data.name); + future = MinionProfileUtils.lookupSkinOwnerProfile(server, data.name()); } future.thenAccept(skinProfile -> { - GameProfile profile = MinionProfileUtils.makeNewMinionProfile(null, data.name, skinProfile); + GameProfile profile = MinionProfileUtils.makeNewMinionProfile(null, data.name(), skinProfile); Minions.addExecuteOnNextTick(() -> { MinionFakePlayer instance = new MinionFakePlayer(server, level, profile, SyncedClientOptions.createDefault()); if(skinProfile != null) { @@ -98,19 +99,16 @@ public class MinionFakePlayer extends ServerPlayerEntity { MinecraftServer server = level.getServer(); CompletableFuture future; - if(data.skinUuid != null) { - future = MinionProfileUtils.getSkinOwnerProfile(server, data.skinUuid); + if(data.skinUuid().isPresent()) { + future = MinionProfileUtils.getSkinOwnerProfile(server, data.skinUuid().get()); } else { - future = MinionProfileUtils.lookupSkinOwnerProfile(server, data.name); + future = MinionProfileUtils.lookupSkinOwnerProfile(server, data.name()); } future.thenAccept((skinProfile) -> { - GameProfile profile = MinionProfileUtils.makeNewMinionProfile(data.uuid, data.name, skinProfile); + GameProfile profile = MinionProfileUtils.makeNewMinionProfile(data.uuid(), data.name(), skinProfile); Minions.addExecuteOnNextTick(() -> { MinionFakePlayer instance = new MinionFakePlayer(server, level, profile, SyncedClientOptions.createDefault()); - if (skinProfile != null) { - instance.skinUuid = skinProfile.getId(); - } if(pos != null && rot != null) { instance.fixStartingPosition = () -> instance.refreshPositionAndAngles(pos.x, pos.y, pos.z, rot.x, rot.y); } @@ -347,7 +345,7 @@ public class MinionFakePlayer extends ServerPlayerEntity { return getGameProfile().getName(); } - public UUID getSkinUuid() { - return skinUuid; + public Optional getSkinUuid() { + return Optional.ofNullable(skinUuid); } } \ No newline at end of file diff --git a/src/main/java/io/github/skippyall/minions/minion/MinionComponent.java b/src/main/java/io/github/skippyall/minions/minion/MinionComponent.java deleted file mode 100644 index ea5fe3d..0000000 --- a/src/main/java/io/github/skippyall/minions/minion/MinionComponent.java +++ /dev/null @@ -1,14 +0,0 @@ -package io.github.skippyall.minions.minion; - -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.component.ComponentType; - -public class MinionComponent { - /*public static final Codec CODEC = RecordCodecBuilder.create(instance -> - instance.group() - ); - public static final ComponentType TYPE = ComponentType.builder().codec(CODEC).build(); -*/ - -} diff --git a/src/main/java/io/github/skippyall/minions/minion/MinionData.java b/src/main/java/io/github/skippyall/minions/minion/MinionData.java index d16a267..b5347e3 100644 --- a/src/main/java/io/github/skippyall/minions/minion/MinionData.java +++ b/src/main/java/io/github/skippyall/minions/minion/MinionData.java @@ -1,45 +1,57 @@ package io.github.skippyall.minions.minion; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import eu.pb4.polymer.core.api.other.PolymerComponent; +import io.github.skippyall.minions.Minions; import io.github.skippyall.minions.fakeplayer.MinionFakePlayer; +import net.minecraft.component.ComponentType; import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.NbtOps; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.util.Identifier; +import net.minecraft.util.Uuids; +import org.jetbrains.annotations.NotNull; +import java.util.Optional; import java.util.UUID; -public class MinionData { - public UUID uuid; - public String name; - public UUID skinUuid; +public record MinionData(UUID uuid, String name, @NotNull Optional skinUuid) { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> + instance.group( + Uuids.CODEC.fieldOf("uuid").forGetter(MinionData::uuid), + Codec.STRING.fieldOf("name").forGetter(MinionData::name), + Uuids.CODEC.optionalFieldOf("skinUuid").orElse(Optional.empty()).forGetter(MinionData::skinUuid) + ).apply(instance, MinionData::new) + ); + public static final ComponentType COMPONENT = Registry.register(Registries.DATA_COMPONENT_TYPE, Identifier.of(Minions.MOD_ID, "minion_data"), ComponentType.builder().codec(CODEC).build()); - public MinionData(UUID uuid, String name, UUID skinUuid) { - this.uuid = uuid; - this.name = name; - this.skinUuid = skinUuid; + public MinionData withUuid(UUID uuid) { + return new MinionData(uuid, name, skinUuid); + } + + public MinionData withName(String name) { + return new MinionData(uuid, name, skinUuid); + } + + public MinionData withSkin(Optional skinUuid) { + return new MinionData(uuid, name, skinUuid); } public NbtCompound writeNbt() { - NbtCompound nbt = new NbtCompound(); - - nbt.putUuid("uuid", uuid); - nbt.putString("name", name); - if(skinUuid != null) { - nbt.putUuid("skinUuid", skinUuid); - } - - return nbt; + return (NbtCompound) MinionData.CODEC.encode(this, NbtOps.INSTANCE, null).getOrThrow(); } public static MinionData readNbt(NbtCompound nbt) { - UUID uuid = nbt.getUuid("uuid"); - String name = nbt.getString("name"); - UUID skinUuid = null; - if(nbt.contains("skinUuid")) { - skinUuid = nbt.getUuid("skinUuid"); - } - - return new MinionData(uuid, name, skinUuid); + return MinionData.CODEC.decode(NbtOps.INSTANCE, nbt).getOrThrow().getFirst(); } public static MinionData fromMinion(MinionFakePlayer minion) { return new MinionData(minion.getUuid(), minion.getMinionName(), minion.getSkinUuid()); } + + public static void register() { + PolymerComponent.registerDataComponent(COMPONENT); + } } diff --git a/src/main/java/io/github/skippyall/minions/minion/MinionItem.java b/src/main/java/io/github/skippyall/minions/minion/MinionItem.java index ef9330c..5b39cf8 100644 --- a/src/main/java/io/github/skippyall/minions/minion/MinionItem.java +++ b/src/main/java/io/github/skippyall/minions/minion/MinionItem.java @@ -10,9 +10,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUsageContext; import net.minecraft.item.Items; import net.minecraft.item.tooltip.TooltipType; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.registry.RegistryWrapper; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.ActionResult; @@ -20,11 +17,13 @@ import net.minecraft.util.math.Vec2f; import org.jetbrains.annotations.Nullable; import xyz.nucleoid.packettweaker.PacketContext; +import java.util.Optional; + public class MinionItem extends Item implements PolymerItem { private final boolean canProgram; - public MinionItem(boolean canProgram) { - super(new Item.Settings()); + public MinionItem(Settings settings, boolean canProgram) { + super(settings); this.canProgram = canProgram; } @@ -53,13 +52,13 @@ public class MinionItem extends Item implements PolymerItem { MinionData data = getData(context.getStack()); if(data == null) { - data = new MinionData(null, name, null); + data = new MinionData(null, name, Optional.empty()); } - if (data.uuid == null) { + if (data.uuid() == null) { MinionFakePlayer.createMinion(data, (ServerWorld) context.getWorld(), (ServerPlayerEntity) context.getPlayer(), canProgram, context.getBlockPos().toCenterPos().add(0,0.5,0), 0, 0); }else { - data.name = name; + data = data.withName(name); MinionFakePlayer.spawnMinionAt(data, (ServerWorld) context.getWorld(), context.getBlockPos().toCenterPos().add(0,0.5,0), new Vec2f(0, 0)); MinionPersistentState.INSTANCE.addMinion(data); } @@ -69,18 +68,12 @@ public class MinionItem extends Item implements PolymerItem { } public static void setData(MinionData data, ItemStack item) { - NbtCompound nbt = item.getOrDefault(DataComponentTypes.CUSTOM_DATA, NbtComponent.DEFAULT).copyNbt(); - nbt.put("data", data.writeNbt()); - item.set(DataComponentTypes.CUSTOM_DATA, NbtComponent.of(nbt)); + item.set(MinionData.COMPONENT, data); } @Nullable public static MinionData getData(ItemStack item) { - NbtCompound nbt = item.getOrDefault(DataComponentTypes.CUSTOM_DATA, NbtComponent.DEFAULT).copyNbt(); - if (nbt.getType("data") == NbtElement.COMPOUND_TYPE) { - return MinionData.readNbt(nbt.getCompound("data")); - } - return null; + return item.get(MinionData.COMPONENT); } public static boolean containsData(ItemStack item) { diff --git a/src/main/java/io/github/skippyall/minions/minion/MinionPersistentState.java b/src/main/java/io/github/skippyall/minions/minion/MinionPersistentState.java index 5b59b34..e92b036 100644 --- a/src/main/java/io/github/skippyall/minions/minion/MinionPersistentState.java +++ b/src/main/java/io/github/skippyall/minions/minion/MinionPersistentState.java @@ -18,7 +18,8 @@ public class MinionPersistentState extends PersistentState { public static MinionPersistentState INSTANCE; - private List minionData = new ArrayList<>(); + private final List minionData = new ArrayList<>(); + private final List minionUuids = new ArrayList<>(); @Override public NbtCompound writeNbt(NbtCompound nbt, RegistryWrapper.WrapperLookup registryLookup) { @@ -27,6 +28,14 @@ public class MinionPersistentState extends PersistentState { list.add(data.writeNbt()); } nbt.put("minions", list); + + NbtList uuids = new NbtList(); + for(UUID uuid : minionUuids) { + NbtCompound compound = new NbtCompound(); + compound.putUuid("uuid", uuid); + uuids.add(compound); + } + nbt.put("uuids", uuids); return nbt; } @@ -36,15 +45,26 @@ public class MinionPersistentState extends PersistentState { for(NbtElement element : list) { instance.addMinion(MinionData.readNbt((NbtCompound) element)); } + + NbtList uuids = compound.getList("uuids", NbtElement.COMPOUND_TYPE); + for(NbtElement element : list) { + instance.minionUuids.add(((NbtCompound) element).getUuid("uuid")); + } return instance; } + public void addMinionUUID(UUID uuid) { + if(!minionUuids.contains(uuid)) { + minionUuids.add(uuid); + } + } + public void addMinion(MinionFakePlayer minion) { addMinion(MinionData.fromMinion(minion)); } public void addMinion(MinionData data) { - System.out.println("add Minion " + data.name); + System.out.println("add Minion " + data.name()); minionData.add(data); markDirty(); } @@ -56,7 +76,7 @@ public class MinionPersistentState extends PersistentState { public void removeMinion(UUID minionUUID) { MinionData removal = null; for (MinionData data : minionData) { - if (data.uuid.equals(minionUUID)) { + if (data.uuid().equals(minionUUID)) { removal = data; } } @@ -70,6 +90,10 @@ public class MinionPersistentState extends PersistentState { return minionData; } + public boolean isMinion(UUID uuid) { + return minionUuids.contains(uuid); + } + public static void create(MinecraftServer server) { INSTANCE = server.getWorld(World.OVERWORLD).getPersistentStateManager().getOrCreate(TYPE, "minion"); } diff --git a/src/main/java/io/github/skippyall/minions/minion/MinionProfileUtils.java b/src/main/java/io/github/skippyall/minions/minion/MinionProfileUtils.java index e041dc7..d3c3e77 100644 --- a/src/main/java/io/github/skippyall/minions/minion/MinionProfileUtils.java +++ b/src/main/java/io/github/skippyall/minions/minion/MinionProfileUtils.java @@ -61,11 +61,20 @@ public class MinionProfileUtils { } public static GameProfile makeNewMinionProfile(@Nullable UUID uuidMinion, String username, @Nullable GameProfile skinProfile) { - GameProfile newProfile = new GameProfile(uuidMinion != null ? uuidMinion : UUID.randomUUID(), username); + if(uuidMinion == null) { + uuidMinion = UUID.randomUUID(); + } + MinionPersistentState.INSTANCE.addMinionUUID(uuidMinion); + + GameProfile newProfile = new GameProfile(uuidMinion, username); if (skinProfile != null) { newProfile.getProperties().putAll(skinProfile.getProperties()); } LOGGER.info("Minion Profile: {}", newProfile); return newProfile; } + + public static boolean isMinion(UUID uuid) { + return MinionPersistentState.INSTANCE.isMinion(uuid); + } } diff --git a/src/main/java/io/github/skippyall/minions/mixins/PlayerListEntryS2CPacket$EntryMixin.java b/src/main/java/io/github/skippyall/minions/mixins/PlayerListEntryS2CPacket$EntryMixin.java index 0fa50ff..be22fbb 100644 --- a/src/main/java/io/github/skippyall/minions/mixins/PlayerListEntryS2CPacket$EntryMixin.java +++ b/src/main/java/io/github/skippyall/minions/mixins/PlayerListEntryS2CPacket$EntryMixin.java @@ -10,7 +10,7 @@ import org.spongepowered.asm.mixin.injection.ModifyArg; @Mixin(PlayerListS2CPacket.Entry.class) public class PlayerListEntryS2CPacket$EntryMixin { - @ModifyArg(method = "(Lnet/minecraft/server/network/ServerPlayerEntity;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/packet/s2c/play/PlayerListS2CPacket$Entry;(Ljava/util/UUID;Lcom/mojang/authlib/GameProfile;ZILnet/minecraft/world/GameMode;Lnet/minecraft/text/Text;Lnet/minecraft/network/encryption/PublicPlayerSession$Serialized;)V")) + @ModifyArg(method = "(Lnet/minecraft/server/network/ServerPlayerEntity;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/packet/s2c/play/PlayerListS2CPacket$Entry;(Ljava/util/UUID;Lcom/mojang/authlib/GameProfile;ZILnet/minecraft/world/GameMode;Lnet/minecraft/text/Text;ILnet/minecraft/network/encryption/PublicPlayerSession$Serialized;)V")) private static boolean removeMinionFromTabList(boolean original, @Local(argsOnly = true) ServerPlayerEntity player) { if(player instanceof MinionFakePlayer) { return false; diff --git a/src/main/java/io/github/skippyall/minions/module/ChatModule.java b/src/main/java/io/github/skippyall/minions/module/ChatModule.java index 1f8dc86..6ea8d0c 100644 --- a/src/main/java/io/github/skippyall/minions/module/ChatModule.java +++ b/src/main/java/io/github/skippyall/minions/module/ChatModule.java @@ -13,10 +13,10 @@ import static io.github.skippyall.minions.module.Modules.register; public class ChatModule { public static final SimpleModuleItem CHAT_MODULE = register(Identifier.of(Minions.MOD_ID, "chat_module"), - new SimpleModuleItem(new ArrayList<>(), Arrays.asList( + new ArrayList<>(), Arrays.asList( new SimpleCommand(Text.of("Message"), Text.of("Send Message in Public Chat"), Items.PAPER, (player, minion) -> minion.getServer().getPlayerManager().broadcast(Text.of("message"), true)), new SimpleCommand(Text.of("Prvt-Message"), Text.of("Send Message to one Person"), Items.TRIAL_KEY, (player, minion) -> {}) - ), Items.PAPER)); + ), Items.PAPER); public static void registerMe() {} } diff --git a/src/main/java/io/github/skippyall/minions/module/InteractModule.java b/src/main/java/io/github/skippyall/minions/module/InteractModule.java new file mode 100644 index 0000000..d21d0b8 --- /dev/null +++ b/src/main/java/io/github/skippyall/minions/module/InteractModule.java @@ -0,0 +1,28 @@ +package io.github.skippyall.minions.module; + +import io.github.skippyall.minions.Minions; +import io.github.skippyall.minions.command.SimpleCommand; +import net.minecraft.item.Items; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; + +import java.util.List; + +import static io.github.skippyall.minions.module.Modules.register; + +public class InteractModule { + /*public static final SimpleCommand INTERACT_COMMAND = + new SimpleCommand( + Text.translatable() + ) + + public static final SimpleModuleItem INTERACT_MODULE = register( + Identifier.of(Minions.MOD_ID, "interact_module"), + new SimpleModuleItem( + List.of(), + List.of(), + Items.LEVER + ) + );*/ +} + diff --git a/src/main/java/io/github/skippyall/minions/module/MobSpawningModule.java b/src/main/java/io/github/skippyall/minions/module/MobSpawningModule.java index 038a1aa..8e1fbb3 100644 --- a/src/main/java/io/github/skippyall/minions/module/MobSpawningModule.java +++ b/src/main/java/io/github/skippyall/minions/module/MobSpawningModule.java @@ -13,7 +13,9 @@ public class MobSpawningModule { public static final SimpleModuleItem MOB_SPAWNING_MODULE = register( Identifier.of(Minions.MOD_ID, "mob_spawning_module"), - new SimpleModuleItem(List.of(), List.of(), Items.SPAWNER) + List.of(), + List.of(), + Items.SPAWNER ); public static boolean canMinionSpawnMobs(MinionFakePlayer minion) { diff --git a/src/main/java/io/github/skippyall/minions/module/Modules.java b/src/main/java/io/github/skippyall/minions/module/Modules.java index 568bf58..69eb425 100644 --- a/src/main/java/io/github/skippyall/minions/module/Modules.java +++ b/src/main/java/io/github/skippyall/minions/module/Modules.java @@ -1,10 +1,16 @@ package io.github.skippyall.minions.module; +import io.github.skippyall.minions.command.Command; +import io.github.skippyall.minions.program.block.CodeBlock; import net.minecraft.item.Item; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; import net.minecraft.util.Identifier; +import java.util.List; + public class Modules { public static void register() { ChatModule.registerMe(); @@ -16,4 +22,8 @@ public class Modules { public static T register(Identifier id, T item) { return Registry.register(Registries.ITEM, id, item); } + + public static SimpleModuleItem register(Identifier id, List> codeBlocks, List commands, Item vanillaItem) { + return Registry.register(Registries.ITEM, id, new SimpleModuleItem(codeBlocks, commands, new Item.Settings().registryKey(RegistryKey.of(RegistryKeys.ITEM, id)), vanillaItem)); + } } diff --git a/src/main/java/io/github/skippyall/minions/module/MountModule.java b/src/main/java/io/github/skippyall/minions/module/MountModule.java index edc8508..0ba460c 100644 --- a/src/main/java/io/github/skippyall/minions/module/MountModule.java +++ b/src/main/java/io/github/skippyall/minions/module/MountModule.java @@ -27,14 +27,12 @@ public class MountModule { public static final SimpleModuleItem MOUNT_MODULE = register(Identifier.of(Minions.MOD_ID, "mount_module"), - new SimpleModuleItem( - List.of(), - List.of( - MOUNT_COMMAND, - DISMOUNT_COMMAND - ), - Items.MINECART - ) + List.of(), + List.of( + MOUNT_COMMAND, + DISMOUNT_COMMAND + ), + Items.MINECART ); public static void registerMe() { diff --git a/src/main/java/io/github/skippyall/minions/module/MoveModule.java b/src/main/java/io/github/skippyall/minions/module/MoveModule.java index b1d2146..b3a2d0e 100644 --- a/src/main/java/io/github/skippyall/minions/module/MoveModule.java +++ b/src/main/java/io/github/skippyall/minions/module/MoveModule.java @@ -41,15 +41,13 @@ public class MoveModule { public static final SimpleModuleItem MOVE_MODULE = register(Identifier.of(Minions.MOD_ID, "move_module"), - new SimpleModuleItem( - List.of(), - List.of( - WALK_COMMAND, - TURN_RIGHT_COMMAND, - TURN_LEFT_COMMAND - ), - Items.IRON_BOOTS - ) + List.of(), + List.of( + WALK_COMMAND, + TURN_RIGHT_COMMAND, + TURN_LEFT_COMMAND + ), + Items.IRON_BOOTS ); public static void registerMe() {} diff --git a/src/main/java/io/github/skippyall/minions/module/SimpleModuleItem.java b/src/main/java/io/github/skippyall/minions/module/SimpleModuleItem.java index df83885..ad588cb 100644 --- a/src/main/java/io/github/skippyall/minions/module/SimpleModuleItem.java +++ b/src/main/java/io/github/skippyall/minions/module/SimpleModuleItem.java @@ -14,8 +14,8 @@ public class SimpleModuleItem extends Item implements PolymerItem, ModuleItem { private final List commands; private final Item vanillaItem; - public SimpleModuleItem(List> codeBlocks, List commands, Item vanillaItem) { - super(new Item.Settings().maxCount(1)); + public SimpleModuleItem(List> codeBlocks, List commands, Settings settings, Item vanillaItem) { + super(settings.maxCount(1)); this.codeBlocks = codeBlocks; this.commands = commands; this.vanillaItem = vanillaItem; diff --git a/src/main/resources/data/minions/recipe/basic_upgrade.json b/src/main/resources/data/minions/recipe/basic_upgrade.json index adf3a53..084fce7 100644 --- a/src/main/resources/data/minions/recipe/basic_upgrade.json +++ b/src/main/resources/data/minions/recipe/basic_upgrade.json @@ -6,15 +6,9 @@ "RGR" ], "key": { - "R": { - "item":"minecraft:redstone_block" - }, - "G": { - "item": "minecraft:gold_ingot" - }, - "D": { - "item": "minecraft:diamond_block" - } + "R": "minecraft:redstone_block", + "G": "minecraft:gold_ingot", + "D": "minecraft:diamond_block" }, "result": { "id": "minions:basic_upgrade_base", diff --git a/src/main/resources/data/minions/recipe/minion.json b/src/main/resources/data/minions/recipe/minion.json index 1bac50d..eeeca17 100644 --- a/src/main/resources/data/minions/recipe/minion.json +++ b/src/main/resources/data/minions/recipe/minion.json @@ -6,18 +6,10 @@ " L " ], "key": { - "H": { - "tag": "minecraft:skulls" - }, - "R": { - "item": "minecraft:redstone_torch" - }, - "A": { - "item": "minecraft:armor_stand" - }, - "L": { - "item":"minecraft:lodestone" - } + "H": "#minecraft:skulls", + "R": "minecraft:redstone_torch", + "A": "minecraft:armor_stand", + "L": "minecraft:lodestone" }, "result": { "id": "minions:minion", diff --git a/src/main/resources/data/minions/recipe/mount_upgrade.json b/src/main/resources/data/minions/recipe/mount_upgrade.json index d3c5327..5a8baf6 100644 --- a/src/main/resources/data/minions/recipe/mount_upgrade.json +++ b/src/main/resources/data/minions/recipe/mount_upgrade.json @@ -1,14 +1,8 @@ { "type": "minecraft:smithing_transform", - "base": { - "item": "minions:basic_upgrade_base" - }, - "addition": { - "item": "minecraft:minecart" - }, - "template": { - "item": "minecraft:netherite_upgrade_smithing_template" - }, + "base": "minions:basic_upgrade_base", + "addition": "minecraft:minecart", + "template": "minecraft:netherite_upgrade_smithing_template", "result": { "id": "minions:mount_module" } diff --git a/src/main/resources/data/minions/recipe/move_upgrade.json b/src/main/resources/data/minions/recipe/move_upgrade.json index 94d10b1..0ad1b6a 100644 --- a/src/main/resources/data/minions/recipe/move_upgrade.json +++ b/src/main/resources/data/minions/recipe/move_upgrade.json @@ -1,14 +1,8 @@ { "type": "minecraft:smithing_transform", - "base": { - "item": "minions:basic_upgrade_base" - }, - "addition": { - "item": "minecraft:iron_boots" - }, - "template": { - "item": "minecraft:netherite_upgrade_smithing_template" - }, + "base": "minions:basic_upgrade_base", + "addition": "minecraft:iron_boots", + "template": "minecraft:netherite_upgrade_smithing_template", "result": { "id": "minions:move_module" } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 5bef44e..9dbf788 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -28,7 +28,7 @@ "depends": { "fabricloader": "*", "fabric": "*", - "minecraft": "~1.21", + "minecraft": "~1.21.3", "polymer-core": "*" } }