diff --git a/src/main/java/codechicken/nei/NEIController.java b/src/main/java/codechicken/nei/NEIController.java index 110b7c28..dd44a08c 100644 --- a/src/main/java/codechicken/nei/NEIController.java +++ b/src/main/java/codechicken/nei/NEIController.java @@ -11,16 +11,21 @@ import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Slot; import net.minecraft.inventory.SlotCrafting; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.ClientCommandHandler; +import codechicken.core.CommonUtils; import codechicken.nei.api.API; import codechicken.nei.api.GuiInfo; import codechicken.nei.api.IInfiniteItemHandler; import codechicken.nei.api.INEIGuiHandler; import codechicken.nei.api.ItemInfo; +import codechicken.nei.commands.CommandBookmarkAdd; import codechicken.nei.guihook.GuiContainerManager; import codechicken.nei.guihook.IContainerInputHandler; import codechicken.nei.guihook.IContainerSlotClickHandler; import codechicken.nei.recipe.GuiRecipe; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; public class NEIController implements IContainerSlotClickHandler, IContainerInputHandler { @@ -39,6 +44,8 @@ public class NEIController implements IContainerSlotClickHandler, IContainerInpu public static void load() { GuiContainerManager.addSlotClickHandler(instance); GuiContainerManager.addInputHandler(instance); + + if (CommonUtils.isClient()) registerClientCommands(); } public static void load(GuiContainer gui) { @@ -56,6 +63,11 @@ public class NEIController implements IContainerSlotClickHandler, IContainerInpu return gui.field_147007_t && gui.field_147008_s.size() > 1; } + @SideOnly(Side.CLIENT) + public static void registerClientCommands() { + ClientCommandHandler.instance.registerCommand(new CommandBookmarkAdd()); + } + public static void updateUnlimitedItems(InventoryPlayer inventory) { if (!NEIClientConfig.canPerformAction("item") || !NEIClientConfig.hasSMPCounterPart()) return; diff --git a/src/main/java/codechicken/nei/NEIServerUtils.java b/src/main/java/codechicken/nei/NEIServerUtils.java index 2655c207..4f57c6ea 100644 --- a/src/main/java/codechicken/nei/NEIServerUtils.java +++ b/src/main/java/codechicken/nei/NEIServerUtils.java @@ -17,6 +17,7 @@ import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.event.ClickEvent; import net.minecraft.inventory.Slot; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -87,7 +88,11 @@ public class NEIServerUtils { new ChatComponentTranslation( "nei.chat.item_link.text", sender.getDisplayName(), - stackover.func_151000_E())); + stackover.func_151000_E().setChatStyle( + stackover.func_151000_E().getChatStyle().setChatClickEvent( + new ClickEvent( + ClickEvent.Action.RUN_COMMAND, + "/nei_bookmark " + stackover.writeToNBT(new NBTTagCompound())))))); } public static long getTime(World world) { diff --git a/src/main/java/codechicken/nei/commands/CommandBookmarkAdd.java b/src/main/java/codechicken/nei/commands/CommandBookmarkAdd.java new file mode 100644 index 00000000..190d04d5 --- /dev/null +++ b/src/main/java/codechicken/nei/commands/CommandBookmarkAdd.java @@ -0,0 +1,49 @@ +package codechicken.nei.commands; + +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.JsonToNBT; +import net.minecraft.nbt.NBTException; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; + +import codechicken.nei.ItemPanels; + +public class CommandBookmarkAdd extends CommandBase implements ICommand { + + @Override + public String getCommandName() { + return "nei_bookmark"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/nei_bookmark "; + } + + @Override + public int getRequiredPermissionLevel() { + return 0; + } + + @Override + public void processCommand(ICommandSender sender, String[] args) { + + if (args.length < 1 || args[0].length() < 3) { + sender.addChatMessage(new ChatComponentText("§c/nei_bookmark ")); + return; + } + + try { + ItemPanels.bookmarkPanel.addItem( + ItemStack.loadItemStackFromNBT((NBTTagCompound) JsonToNBT.func_150315_a(String.join(" ", args)))); + sender.addChatMessage(new ChatComponentTranslation("nei.chat.bookmark_added.text")); + } catch (NBTException e) { + sender.addChatMessage(new ChatComponentText(e.toString())); + } + } + +} diff --git a/src/main/resources/assets/nei/lang/en_US.lang b/src/main/resources/assets/nei/lang/en_US.lang index 117eb4ec..9b81b45e 100644 --- a/src/main/resources/assets/nei/lang/en_US.lang +++ b/src/main/resources/assets/nei/lang/en_US.lang @@ -135,7 +135,8 @@ nei.chat.chunkoverlay.0=Chunk Overlay: Off nei.chat.chunkoverlay.1=Chunk Overlay: Chunk Corners nei.chat.chunkoverlay.2=Chunk Overlay: Chunks nei.chat.chunkoverlay.3=Chunk Overlay: GT Ore Veins -nei.chat.item_link.text=<%s> Check this out: %s +nei.chat.item_link.text=<%s> §6Click to add bookmark: %s +nei.chat.bookmark_added.text=Bookmark added! nei.options=NEI Options nei.options.back=Back diff --git a/src/main/resources/assets/nei/lang/ru_RU.lang b/src/main/resources/assets/nei/lang/ru_RU.lang index 97bd5ab1..54eb5d8b 100644 --- a/src/main/resources/assets/nei/lang/ru_RU.lang +++ b/src/main/resources/assets/nei/lang/ru_RU.lang @@ -101,7 +101,8 @@ nei.chat.chunkoverlay.0=Отображение чанков: Выключено nei.chat.chunkoverlay.1=Отображение чанков: Углы чанков nei.chat.chunkoverlay.2=Отображение чанков: Чанки nei.chat.chunkoverlay.3=Отображение чанков: Жилы руды GT -nei.chat.item_link.text=<%s> Взгляни на это: %s +nei.chat.item_link.text=<%s> §6Нажми чтобы добавить закладку: %s +nei.chat.bookmark_added.text=Закладка добавлена! nei.options=Настройки NEI nei.options.back=Назад