Small config changes

- Make FlwCommands more readable
 - EmptyArgumentSerializer for EngineArgument
This commit is contained in:
Jozufozu 2021-12-22 22:29:52 -08:00
parent c3bc231d0a
commit 39439d6335
4 changed files with 36 additions and 54 deletions

View file

@ -9,6 +9,7 @@ import com.jozufozu.flywheel.config.FlwConfig;
import com.jozufozu.flywheel.config.FlwPackets; import com.jozufozu.flywheel.config.FlwPackets;
import net.minecraft.commands.synchronization.ArgumentTypes; import net.minecraft.commands.synchronization.ArgumentTypes;
import net.minecraft.commands.synchronization.EmptyArgumentSerializer;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
@ -41,6 +42,6 @@ public class Flywheel {
private void setup(final FMLCommonSetupEvent event) { private void setup(final FMLCommonSetupEvent event) {
FlwPackets.registerPackets(); FlwPackets.registerPackets();
ArgumentTypes.register("flywheel:engine", EngineArgument.class, EngineArgument.SERIALIZER); ArgumentTypes.register("flywheel:engine", EngineArgument.class, new EmptyArgumentSerializer<>(EngineArgument::getInstance));
} }
} }

View file

@ -2,9 +2,7 @@ package com.jozufozu.flywheel.config;
import java.util.Collection; import java.util.Collection;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.stream.Stream;
import com.google.gson.JsonObject;
import com.mojang.brigadier.StringReader; import com.mojang.brigadier.StringReader;
import com.mojang.brigadier.arguments.ArgumentType; import com.mojang.brigadier.arguments.ArgumentType;
import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.context.CommandContext;
@ -14,16 +12,14 @@ import com.mojang.brigadier.suggestion.Suggestions;
import com.mojang.brigadier.suggestion.SuggestionsBuilder; import com.mojang.brigadier.suggestion.SuggestionsBuilder;
import net.minecraft.commands.SharedSuggestionProvider; import net.minecraft.commands.SharedSuggestionProvider;
import net.minecraft.commands.synchronization.ArgumentSerializer;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.network.chat.TranslatableComponent;
public class EngineArgument implements ArgumentType<FlwEngine> { public class EngineArgument implements ArgumentType<FlwEngine> {
public static final EngineArgument INSTANCE = new EngineArgument(); private static final EngineArgument INSTANCE = new EngineArgument();
public static final Serializer SERIALIZER = new Serializer();
private static final Dynamic2CommandExceptionType INVALID = new Dynamic2CommandExceptionType((found, constants) -> { private static final Dynamic2CommandExceptionType INVALID = new Dynamic2CommandExceptionType((found, constants) -> {
// TODO: don't steal lang
return new TranslatableComponent("commands.forge.arguments.enum.invalid", constants, found); return new TranslatableComponent("commands.forge.arguments.enum.invalid", constants, found);
}); });
@ -52,18 +48,7 @@ public class EngineArgument implements ArgumentType<FlwEngine> {
return FlwEngine.validNames(); return FlwEngine.validNames();
} }
public static class Serializer implements ArgumentSerializer<EngineArgument> { public static EngineArgument getInstance() {
private Serializer() { return INSTANCE;
}
public void serializeToNetwork(EngineArgument argument, FriendlyByteBuf buffer) {
}
public EngineArgument deserializeFromNetwork(FriendlyByteBuf buffer) {
return INSTANCE;
}
public void serializeToJson(EngineArgument argument, JsonObject json) {
}
} }
} }

View file

@ -1,32 +0,0 @@
package com.jozufozu.flywheel.config;
import com.mojang.brigadier.Command;
import com.mojang.brigadier.builder.ArgumentBuilder;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.server.level.ServerPlayer;
import net.minecraftforge.network.PacketDistributor;
import net.minecraftforge.server.command.EnumArgument;
public class EngineConfigCommand {
public static ArgumentBuilder<CommandSourceStack, ?> register() {
return Commands.literal("backend")
.executes(context -> {
ServerPlayer player = context.getSource()
.getPlayerOrException();
FlwPackets.channel.send(PacketDistributor.PLAYER.with(() -> player), new SConfigureEnginePacket());
return Command.SINGLE_SUCCESS;
})
.then(Commands.argument("type", EngineArgument.INSTANCE)
.executes(context -> {
FlwEngine type = context.getArgument("type", FlwEngine.class);
ServerPlayer player = context.getSource()
.getPlayerOrException();
FlwPackets.channel.send(PacketDistributor.PLAYER.with(() -> player), new SConfigureEnginePacket(type));
return Command.SINGLE_SUCCESS;
}));
}
}

View file

@ -1,11 +1,15 @@
package com.jozufozu.flywheel.config; package com.jozufozu.flywheel.config;
import com.mojang.brigadier.Command;
import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.builder.ArgumentBuilder;
import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands; import net.minecraft.commands.Commands;
import net.minecraft.server.level.ServerPlayer;
import net.minecraftforge.event.server.ServerStartingEvent; import net.minecraftforge.event.server.ServerStartingEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.network.PacketDistributor;
public class FlwCommands { public class FlwCommands {
@SubscribeEvent @SubscribeEvent
@ -15,8 +19,32 @@ public class FlwCommands {
.getDispatcher(); .getDispatcher();
dispatcher.register(Commands.literal("flywheel") dispatcher.register(Commands.literal("flywheel")
.then(new BooleanConfigCommand("debugNormals", BooleanConfig.NORMAL_OVERLAY).register()) .then(debugCommand())
.then(EngineConfigCommand.register()) .then(backendCommand())
); );
} }
private static ArgumentBuilder<CommandSourceStack, ?> debugCommand() {
return new BooleanConfigCommand("debugNormals", BooleanConfig.NORMAL_OVERLAY).register();
}
private static ArgumentBuilder<CommandSourceStack, ?> backendCommand() {
return Commands.literal("backend")
.executes(context -> {
ServerPlayer player = context.getSource()
.getPlayerOrException();
FlwPackets.channel.send(PacketDistributor.PLAYER.with(() -> player), new SConfigureEnginePacket());
return Command.SINGLE_SUCCESS;
})
.then(Commands.argument("type", EngineArgument.getInstance())
.executes(context -> {
FlwEngine type = context.getArgument("type", FlwEngine.class);
ServerPlayer player = context.getSource()
.getPlayerOrException();
FlwPackets.channel.send(PacketDistributor.PLAYER.with(() -> player), new SConfigureEnginePacket(type));
return Command.SINGLE_SUCCESS;
}));
}
} }