diff --git a/2006Scape Server/src/main/java/com/rs2/game/npcs/drops/NPCDropsHandler.java b/2006Scape Server/src/main/java/com/rs2/game/npcs/drops/NPCDropsHandler.java
index 3542999c4..7218793c4 100644
--- a/2006Scape Server/src/main/java/com/rs2/game/npcs/drops/NPCDropsHandler.java	
+++ b/2006Scape Server/src/main/java/com/rs2/game/npcs/drops/NPCDropsHandler.java	
@@ -14,6 +14,7 @@
  */
 
 public class NPCDropsHandler {
+
     private static NpcDrop[] npcDrops;
 
     /*public static int // found on http://runescape.wikia.com/wiki/Drop rate
@@ -63,4 +64,8 @@ public static int r(int max) {
         return Misc.random(max);
     }
 
+    public static NpcDrop[] getNpcDrops() {
+        return npcDrops;
+    }
+
 }
diff --git a/2006Scape Server/src/main/java/com/rs2/net/packets/impl/Commands.java b/2006Scape Server/src/main/java/com/rs2/net/packets/impl/Commands.java
index 6b7617936..ce1626f67 100644
--- a/2006Scape Server/src/main/java/com/rs2/net/packets/impl/Commands.java	
+++ b/2006Scape Server/src/main/java/com/rs2/net/packets/impl/Commands.java	
@@ -1,5 +1,6 @@
 package com.rs2.net.packets.impl;
 
+import static com.rs2.game.npcs.drops.NPCDropsHandler.*;
 import static com.rs2.util.GameLogger.writeLog;
 
 import java.util.*;
@@ -10,13 +11,17 @@
 import com.rs2.game.bots.BotHandler;
 import com.rs2.game.npcs.NPCDefinition;
 import com.rs2.game.npcs.NpcHandler;
+import com.rs2.game.npcs.drops.ItemDrop;
+import com.rs2.game.npcs.drops.NPCDropsHandler;
 import com.rs2.game.players.*;
 import com.rs2.game.players.antimacro.AntiSpam;
 import com.rs2.integrations.discord.JavaCord;
 import com.rs2.net.Packet;
 import com.rs2.net.packets.PacketType;
 import com.rs2.util.Misc;
+import com.rs2.util.NpcDrop;
 import com.rs2.world.clip.Region;
+import org.apollo.cache.def.ItemDefinition;
 
 import java.util.Calendar;
 import java.util.GregorianCalendar;
@@ -48,6 +53,80 @@ public void processPacket(Player player, Packet packet) {
 
     public static void playerCommands(Player player, String playerCommand, String[] arguments) {
         switch (playerCommand.toLowerCase()) {
+            case "npcdrops":
+            case "searchdrops":
+            case "searchnpcdrops":
+            case "drops": // Possible usage: ::drops scim
+                boolean found = false;
+            
+                // Check if arguments are provided (item ID or name)
+                if (arguments.length < 1) {
+                    player.getPacketSender().sendMessage("Please provide an item ID or name.");
+                    break;
+                }
+            
+                // If the argument can be parsed as an integer, treat it as an item ID
+                try {
+                    int itemId = Integer.parseInt(arguments[0]);
+                    
+                    // Search by item ID
+                    for (NpcDrop npcDrop : NPCDropsHandler.getNpcDrops()) {
+                        for (ItemDrop itemDrop : npcDrop.getItems()) {
+                            if (itemDrop.item_id == itemId) {  // Check if the item ID matches
+                                // Get NPC info
+                                String npcName = NPCDefinition.forId(npcDrop.getId()).getName();
+                                int npcCombatLevel = NPCDefinition.forId(npcDrop.getId()).getCombat();
+                                if (npcCombatLevel > 0) {
+                                    // Display NPC details with println
+                                    System.out.println("NPC ID: " + npcDrop.getId() + 
+                                                       " | Name: " + npcName + 
+                                                       " | Combat Level: " + npcCombatLevel +
+                                                       " | Item ID: " + itemDrop.item_id +
+                                                       " | Drop Chance: " + itemDrop.chance);
+                                    found = true;
+                                }
+                            }
+                        }
+                    }
+            
+                } catch (NumberFormatException e) {
+                    // If the argument is not a valid integer, assume it's an item name and search by name
+                    String itemName = arguments[0].toLowerCase();
+            
+                    // Search by item name
+                    for (NpcDrop npcDrop : NPCDropsHandler.getNpcDrops()) {
+                        for (ItemDrop itemDrop : npcDrop.getItems()) {
+                            if (ItemDefinition.forId(itemDrop.item_id) == null || ItemDefinition.forId(itemDrop.item_id).getName() == null) { // Check if the item is null, since there can be placeholder items in the cache
+                                System.out.println("Skipping null item ID: " + itemDrop.item_id);
+                                continue;
+                            }
+                            String dropItemName = ItemDefinition.forId(itemDrop.item_id).getName().toLowerCase();
+                            if (dropItemName.contains(itemName)) {  // Check if the name matches (case insensitive)
+                                // Get NPC info
+                                String npcName = NPCDefinition.forId(npcDrop.getId()).getName();
+                                int npcCombatLevel = NPCDefinition.forId(npcDrop.getId()).getCombat();
+                                if (npcCombatLevel > 0) {
+                                    // Display NPC details with println
+                                    System.out.println("NPC ID: " + npcDrop.getId() + 
+                                                       " | Name: " + npcName + 
+                                                       " | Combat Level: " + npcCombatLevel +
+                                                       " | Item ID: " + itemDrop.item_id +
+                                                       " | Item Name: " + dropItemName +
+                                                       " | Drop Chance: " + itemDrop.chance);
+                                    found = true;
+                                }
+                            }
+                        }
+                    }
+                }
+            
+                if (!found) {
+                    player.getPacketSender().sendMessage("No NPCs found with the specified item ID or name.");
+                }
+                // Print message indicating drops info was sent
+                player.getPacketSender().sendMessage("Sent drops info");
+            
+                break;
             case "stuck":
                 if(JavaCord.token != null) {
                     if (JavaCord.api != null && JavaCord.api.getTextChannelById(JavaCord.logChannelId).isPresent())
diff --git a/2006Scape Server/src/main/java/org/apollo/cache/def/ItemDefinition.java b/2006Scape Server/src/main/java/org/apollo/cache/def/ItemDefinition.java
index b20b38ae0..9d3163171 100644
--- a/2006Scape Server/src/main/java/org/apollo/cache/def/ItemDefinition.java	
+++ b/2006Scape Server/src/main/java/org/apollo/cache/def/ItemDefinition.java	
@@ -98,6 +98,18 @@ public static ItemDefinition lookup(int id) {
 		}
 		return definitions[id];
 	}
+	
+	/**
+	 * Alias for lookup(id)
+	 * Gets the item definition for the specified id.
+	 *
+	 * @param id The id.
+	 * @return The definition.
+	 * @throws IndexOutOfBoundsException If the id is out of bounds.
+	 */
+	public static ItemDefinition forId(int id) {
+		return lookup(id);
+	}
 
 	/**
 	 * Converts a noted id to the normal item id.