package joshie.harvest.player.command; import joshie.harvest.api.npc.NPC; 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.relationships.RelationshipDataServer; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.command.WrongUsageException; 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 HFCommandRelationship extends CommandBase { @Override @Nonnull public String getCommandName() { return "relationship"; } @Override @Nonnull public String getCommandUsage(@Nonnull ICommandSender sender) { return "/hf relationship [player] <npc|all> <value>"; } @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 == 2 || parameters.length == 3) { EntityPlayerMP player = parameters.length == 2 ? CommandBase.getCommandSenderAsPlayer(sender) : CommandBase.getPlayer(server, sender, parameters[0]); RelationshipDataServer relationships = HFTrackers.<PlayerTrackerServer>getPlayerTrackerFromPlayer(player).getRelationships(); String npc = parameters[parameters.length - 2]; int value = Integer.parseInt(parameters[parameters.length - 1]); switch (npc) { case "all": NPC.REGISTRY.values().stream().forEach(npcz -> relationships.affectRelationship(npcz, value)); break; case "clear": NPC.REGISTRY.values().stream().forEachOrdered(npcz -> relationships.affectRelationship(npcz, -relationships.getRelationship(npcz))); break; default: if (!npc.contains(":")) npc = "harvestfestival:" + npc; NPC theNPC = NPC.REGISTRY.get(new ResourceLocation(npc)); if (theNPC == null) return; else { relationships.affectRelationship(theNPC, value); return; } } } else throw new WrongUsageException(getCommandUsage(sender)); } }