diff --git a/gradle.properties b/gradle.properties index a834143..ba462ed 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,20 +3,20 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://modmuss50.me/fabric.html - minecraft_version=1.21.6 + minecraft_version=1.21.7 loader_version=0.16.14 - yarn_mappings=1.21.6+build.1 + yarn_mappings=1.21.7+build.2 # Mod Properties - mod_version = 0.2.0-SNAPSHOT + mod_version = 0.2.1-SNAPSHOT maven_group = io.github.skippyall archives_base_name = Minions # Dependencies # check this on https://modmuss50.me/fabric.html - fabric_version=0.127.1+1.21.6 + fabric_version=0.128.1+1.21.7 - polymer_version=0.13.1+1.21.6 + polymer_version=0.13.3+1.21.6 sgui_version=1.10.0+1.21.6 server_translations_version=2.5.1+1.21.5 diff --git a/src/main/java/io/github/skippyall/minions/Minions.java b/src/main/java/io/github/skippyall/minions/Minions.java index 51fe052..88c9b90 100644 --- a/src/main/java/io/github/skippyall/minions/Minions.java +++ b/src/main/java/io/github/skippyall/minions/Minions.java @@ -21,10 +21,11 @@ public class Minions implements ModInitializer { MinionData.register(); PolymerEntityUtils.registerType(); ServerLifecycleEvents.SERVER_STARTED.register(server -> { + LOGGER.error("Initializing Minion data"); MinionPersistentState.create(server); MinionPersistentState.INSTANCE.getMinionData().forEach((uuid, data) -> { if(data.isSpawned()) { - MinionFakePlayer.spawnMinion(data, server.getOverworld(), null, null); + MinionFakePlayer.spawnMinion(data, server.getOverworld(), null, null, true); } }); }); diff --git a/src/main/java/io/github/skippyall/minions/command/ListSubcommand.java b/src/main/java/io/github/skippyall/minions/command/ListSubcommand.java new file mode 100644 index 0000000..6e84db2 --- /dev/null +++ b/src/main/java/io/github/skippyall/minions/command/ListSubcommand.java @@ -0,0 +1,25 @@ +package io.github.skippyall.minions.command; + +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import com.mojang.brigadier.context.CommandContext; +import io.github.skippyall.minions.minion.MinionData; +import io.github.skippyall.minions.minion.MinionPersistentState; +import net.minecraft.server.command.ServerCommandSource; +import net.minecraft.text.Text; + +import java.util.Collection; + +import static net.minecraft.server.command.CommandManager.literal; + +public class ListSubcommand { + public static final LiteralArgumentBuilder LIST = literal("list") + .executes(ListSubcommand::list); + + public static int list(CommandContext context) { + Collection minions = MinionPersistentState.INSTANCE.getMinionData().values(); + for (MinionData minion : minions) { + context.getSource().sendFeedback(() -> Text.literal(minion.name() + "(" + minion.uuid() + "):" + minion.isSpawned()), false); + } + return 0; + } +} diff --git a/src/main/java/io/github/skippyall/minions/command/MinionArgument.java b/src/main/java/io/github/skippyall/minions/command/MinionArgument.java index 559dd32..b4d2c68 100644 --- a/src/main/java/io/github/skippyall/minions/command/MinionArgument.java +++ b/src/main/java/io/github/skippyall/minions/command/MinionArgument.java @@ -1,8 +1,6 @@ package io.github.skippyall.minions.command; -import com.mojang.brigadier.Message; import com.mojang.brigadier.context.CommandContext; -import com.mojang.brigadier.exceptions.CommandExceptionType; import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; import com.mojang.brigadier.suggestion.SuggestionProvider; diff --git a/src/main/java/io/github/skippyall/minions/command/MinionsCommand.java b/src/main/java/io/github/skippyall/minions/command/MinionsCommand.java index 4c07d44..e8beb02 100644 --- a/src/main/java/io/github/skippyall/minions/command/MinionsCommand.java +++ b/src/main/java/io/github/skippyall/minions/command/MinionsCommand.java @@ -11,6 +11,7 @@ public class MinionsCommand { literal("minions") .then(SpawnSubcommand.SPAWN) .then(MobCapDebugSubcommand.MOB_CAP_DEBUG) + .then(ListSubcommand.LIST) ); } 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 7f2b4b4..bf8c1f6 100644 --- a/src/main/java/io/github/skippyall/minions/minion/MinionPersistentState.java +++ b/src/main/java/io/github/skippyall/minions/minion/MinionPersistentState.java @@ -1,16 +1,12 @@ package io.github.skippyall.minions.minion; import com.mojang.serialization.Codec; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtList; -import net.minecraft.registry.RegistryWrapper; +import io.github.skippyall.minions.Minions; import net.minecraft.server.MinecraftServer; import net.minecraft.world.PersistentState; import net.minecraft.world.PersistentStateType; import net.minecraft.world.World; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -68,6 +64,7 @@ public class MinionPersistentState extends PersistentState { } public static void create(MinecraftServer server) { + Minions.LOGGER.error("Creating Minion Persistent state"); INSTANCE = server.getWorld(World.OVERWORLD).getPersistentStateManager().getOrCreate(TYPE); } } diff --git a/src/main/java/io/github/skippyall/minions/mixins/PlayerListMixin.java b/src/main/java/io/github/skippyall/minions/mixins/PlayerListMixin.java index 8ff9d69..872015f 100644 --- a/src/main/java/io/github/skippyall/minions/mixins/PlayerListMixin.java +++ b/src/main/java/io/github/skippyall/minions/mixins/PlayerListMixin.java @@ -17,7 +17,9 @@ import net.minecraft.server.network.ConnectedClientData; import net.minecraft.server.network.ServerPlayNetworkHandler; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ServerWorld; +import net.minecraft.storage.ReadView; import net.minecraft.text.Text; +import net.minecraft.util.ErrorReporter; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -25,17 +27,18 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; @Mixin(PlayerManager.class) public class PlayerListMixin { @Inject(method = "loadPlayerData", at = @At(value = "RETURN", shift = At.Shift.BEFORE)) - private void fixStartingPos(ServerPlayerEntity serverPlayerEntity_1, CallbackInfoReturnable cir) + private void fixStartingPos(ServerPlayerEntity player, ErrorReporter errorReporter, CallbackInfoReturnable> cir) { - if (serverPlayerEntity_1 instanceof MinionFakePlayer) + if (player instanceof MinionFakePlayer) { - ((MinionFakePlayer) serverPlayerEntity_1).fixStartingPosition.run(); + ((MinionFakePlayer) player).fixStartingPosition.run(); } }