/* * Copyright (C) 2022 NotEnoughUpdates contributors * * This file is part of NotEnoughUpdates. * * NotEnoughUpdates is free software: you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, either * version 3 of the License, or (at your option) any later version. * * NotEnoughUpdates is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with NotEnoughUpdates. If not, see . */ package io.github.moulberry.notenoughupdates.commands.dev; import io.github.moulberry.notenoughupdates.NotEnoughUpdates; import io.github.moulberry.notenoughupdates.commands.ClientCommandBase; import io.github.moulberry.notenoughupdates.miscfeatures.CrystalMetalDetectorSolver; import io.github.moulberry.notenoughupdates.miscfeatures.CrystalWishingCompassSolver; import io.github.moulberry.notenoughupdates.options.customtypes.NEUDebugFlag; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; public class DiagCommand extends ClientCommandBase { public DiagCommand() { super("neudiag"); } private static final String USAGE_TEXT = EnumChatFormatting.WHITE + "Usage: /neudiag \n\n" + "/neudiag metal Metal Detector Solver diagnostics\n" + " Show current solution diags\n" + " center= Disable / enable using center\n" + "/neudiag wishing Wishing Compass Solver diagnostics\n" + "/neudiag debug\n" + " Show all enabled flags\n" + " Show all flags\n"+ " Enable/disable flag\n"; private void showUsage(ICommandSender sender) { sender.addChatMessage(new ChatComponentText(USAGE_TEXT)); } @Override public void processCommand(ICommandSender sender, String[] args) throws CommandException { if (args.length == 0) { showUsage(sender); return; } String command = args[0].toLowerCase(); switch (command) { case "metal": if (args.length == 1) { CrystalMetalDetectorSolver.logDiagnosticData(true); return; } String subCommand = args[1].toLowerCase(); if (subCommand.equals("center=off")) { CrystalMetalDetectorSolver.setDebugDoNotUseCenter(true); sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Center coordinates-based solutions disabled")); } else if (subCommand.equals("center=on")) { CrystalMetalDetectorSolver.setDebugDoNotUseCenter(false); sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Center coordinates-based solutions enabled")); } else { showUsage(sender); return; } break; case "wishing": CrystalWishingCompassSolver.getInstance().logDiagnosticData(true); break; case "debug": if (args.length > 1) { boolean enablingFlag = true; String action = args[1]; switch (action) { case "list": sender.addChatMessage(new ChatComponentText( EnumChatFormatting.YELLOW + "Here are all flags:\n" + NEUDebugFlag.getFlagList())); return; case "disable": enablingFlag = false; // falls through case "enable": if (args.length != 3) { sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "You must specify a flag:\n" + NEUDebugFlag.getFlagList())); return; } String flagName = args[2].toUpperCase(); try { NEUDebugFlag debugFlag = NEUDebugFlag.valueOf(flagName); if (enablingFlag) { NotEnoughUpdates.INSTANCE.config.hidden.debugFlags.add(debugFlag); } else { NotEnoughUpdates.INSTANCE.config.hidden.debugFlags.remove(debugFlag); } } catch (IllegalArgumentException e) { sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + flagName + " is invalid. Valid flags are:\n" + NEUDebugFlag.getFlagList())); return; } break; default: showUsage(sender); return; } } sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Effective debug flags: \n" + NEUDebugFlag.getEnabledFlags())); break; default: showUsage(sender); return; } } }