/* * This file is part of Matter Overdrive * Copyright (c) 2015., Simeon Radivoev, All rights reserved. * * Matter Overdrive is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Matter Overdrive 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Matter Overdrive. If not, see <http://www.gnu.org/licenses>. */ package matteroverdrive.commands; import matteroverdrive.MatterOverdrive; import matteroverdrive.handler.ConfigurationHandler; import matteroverdrive.init.MatterOverdriveMatter; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.item.ItemStack; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.oredict.OreDictionary; import java.util.ArrayList; import java.util.List; /** * Created by Simeon on 8/11/2015. */ public class MatterRegistryCommands extends CommandBase { @Override public String getCommandName() { return "matter_registry"; } public int getRequiredPermissionLevel() { return 2; } @Override public String getCommandUsage(ICommandSender p_71518_1_) { return "matter_registry <command> <value>"; } @Override public void processCommand(ICommandSender commandSender, String[] parameters) { if (parameters.length == 1) { if (parameters[0].equalsIgnoreCase("recalculate")) { MatterOverdrive.matterRegistry.getEntries().clear(); MatterOverdriveMatter.registerBasic(MatterOverdrive.configHandler); MatterOverdrive.matterRegistrationHandler.runCalculationThread(); } } else if (parameters.length == 2) { if (parameters[0].equalsIgnoreCase("blacklist")) { ItemStack stack; if (parameters.length >= 4) { stack = getPlayer(commandSender, parameters[3]).getCurrentEquippedItem(); } else { stack = getPlayer(commandSender,commandSender.getCommandSenderName()).getCurrentEquippedItem(); } String key; if (stack != null) { if (parameters[1].equalsIgnoreCase("itemstack")) { key = MatterOverdrive.matterRegistry.getKey(stack); } else if (parameters[1].equalsIgnoreCase("item")) { key = MatterOverdrive.matterRegistry.getKey(stack.getItem()); } else if (parameters[1].equalsIgnoreCase("ore")) { int[] orenames = OreDictionary.getOreIDs(stack); if (orenames != null && orenames.length > 0) { key = OreDictionary.getOreName(orenames[0]); } else { throw new CommandException("Could not find an ore dictionary entry", parameters[1]); } } else { throw new CommandException("Invalid type of item. Use either item, itemstack or ore."); } MatterOverdrive.matterRegistry.addToBlacklist(key); String[] oldBlacklist = MatterOverdrive.configHandler.getStringList(ConfigurationHandler.CATEGORY_MATTER, ConfigurationHandler.KEY_MBLACKLIST); String[] newBlacklist = new String[oldBlacklist != null ? oldBlacklist.length + 1 : 1]; newBlacklist[oldBlacklist.length] = key; MatterOverdrive.configHandler.config.get(ConfigurationHandler.CATEGORY_MATTER, ConfigurationHandler.KEY_MBLACKLIST, new String[]{}, "").set(newBlacklist); MatterOverdrive.configHandler.save(); commandSender.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD + "[" + key + "]" + EnumChatFormatting.RESET + " Added $s to matter blacklist and config.\nYou must recalculate the registry for changes to take effect.\nUse /matter_registry recalculate.")); } else { throw new CommandException("Player not holding any item", parameters[1]); } } } else if (parameters.length >= 3) { if (parameters[0].equalsIgnoreCase("register")) { int matter = parseInt(commandSender, parameters[2]); ItemStack stack; if (parameters.length >= 4) { stack = getPlayer(commandSender, parameters[3]).getCurrentEquippedItem(); } else { stack = getPlayer(commandSender,commandSender.getCommandSenderName()).getCurrentEquippedItem(); } if (stack != null) { String key; if (parameters[1].equalsIgnoreCase("itemstack")) { key = MatterOverdrive.matterRegistry.getKey(stack); } else if (parameters[1].equalsIgnoreCase("item")) { key = MatterOverdrive.matterRegistry.getKey(stack.getItem()); } else if (parameters[1].equalsIgnoreCase("ore")) { int[] oreNames = OreDictionary.getOreIDs(stack); if (oreNames != null && oreNames.length > 0) { key = OreDictionary.getOreName(oreNames[0]); }else { throw new CommandException("Could not find an ore dictionary entry!"); } } else { throw new CommandException("Invalid type of item. Use either item,itemstack or ore."); } MatterOverdrive.matterRegistry.register(key, matter); MatterOverdrive.configHandler.setInt(key, ConfigurationHandler.CATEGORY_NEW_ITEMS,matter); MatterOverdrive.configHandler.save(); commandSender.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD + "[" + key + "]"+ EnumChatFormatting.RESET +" Added $s to matter registry and config.\nYou can now recalculated the registry.\nUse /matter_registry recalculate.")); } else { throw new CommandException("player not holding any item", parameters[1]); } } } } @Override public List addTabCompletionOptions(ICommandSender commandSender, String[] parameters) { List<String> commands = new ArrayList<>(); if (parameters.length == 1) { commands.add("recalculate"); commands.add("register"); commands.add("blacklist"); } else if (parameters.length == 2 && (parameters[0].equalsIgnoreCase("register") || parameters[0].equalsIgnoreCase("blacklist"))) { commands.add("itemstack"); commands.add("item"); commands.add("ore"); } return commands; } }