package joshie.harvest.player.command; import joshie.harvest.api.cooking.Recipe; import joshie.harvest.core.HFTrackers; import joshie.harvest.core.commands.CommandManager.CommandLevel; import joshie.harvest.core.commands.HFCommand; import joshie.harvest.player.PlayerTrackerServer; import joshie.harvest.player.tracking.TrackingServer; import net.minecraft.command.*; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.server.MinecraftServer; import net.minecraft.util.ResourceLocation; import javax.annotation.Nonnull; @HFCommand @SuppressWarnings("unused") public class HFCommandRecipe extends CommandBase { @Override @Nonnull public String getCommandName() { return "recipe"; } @Override @Nonnull public String getCommandUsage(@Nonnull ICommandSender sender) { return "/hf recipe [player] <value|all|clear>"; } @Override public int getRequiredPermissionLevel() { return CommandLevel.OP_AFFECT_GAMEPLAY.ordinal(); } @Override public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] parameters) throws CommandException { if (parameters.length == 1 || parameters.length == 2) { try { EntityPlayerMP player = parameters.length == 1? CommandBase.getCommandSenderAsPlayer(sender) : CommandBase.getPlayer(server, sender, parameters[0]); TrackingServer tracking = HFTrackers.<PlayerTrackerServer>getPlayerTrackerFromPlayer(player).getTracking(); String recipe = parameters[parameters.length - 1]; switch (recipe) { case "all": Recipe.REGISTRY.values().forEach(tracking::learnRecipe); tracking.sync(player); break; case "clear": tracking.learnRecipe(null); tracking.sync(player); break; default: if (!recipe.contains(":")) recipe = "harvestfestival:" + recipe; tracking.learnRecipe(Recipe.REGISTRY.get(new ResourceLocation(recipe))); tracking.sync(player); break; } } catch (NumberFormatException | PlayerNotFoundException ignored) {} } else throw new WrongUsageException(getCommandUsage(sender)); } }