public void dropNew() {
		// Get all available items
		String[] playerItems = player.getInventory().getItemTexts();
		if (playerItems.length == 0) {
			log.println("You have nothing to drop.");
		} else {
			JPanel panel = new JPanel();
			panel.setLayout(new GridLayout(0, 1));
			final JCheckBox[] checkBoxes = new JCheckBox[playerItems.length];
			final String idsString = descriptionsToIDString(playerItems);
			ButtonGroup buttons = new ButtonGroup();
			// Set up actions for every ID to toggle the appropriate checkbox
			Action charAction = new AbstractAction() {
				public void actionPerformed(ActionEvent e) {
					int index = idsString.indexOf(e.getActionCommand());
					if (index != -1) {
						JCheckBox box = checkBoxes[index];
						box.setSelected(!box.isSelected());
					} else {
						println(e.getActionCommand() + " is not a valid ID, do you have capslock on?");
					}
				}
			};
			int itemCount = 0;
			panel.add(new JLabel("INVENTORY"));
			for (String f : playerItems) {
				JCheckBox newBox = new JCheckBox(f);
				newBox.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(idsString.substring(itemCount, itemCount+1).toUpperCase()), f);
				newBox.getActionMap().put(f, charAction);
				checkBoxes[itemCount] = newBox;
				panel.add(newBox);
				itemCount++;
			}
			JOptionPane.showMessageDialog(null, panel, "What would you like to drop?", JOptionPane.PLAIN_MESSAGE);
			for (JCheckBox box : checkBoxes) {
				if (box.isSelected()) {
					// Get the selected item
					Character id = box.getText().charAt(0);
					Holdable item;
					try {
						item = player.getInventory().getItem(id);
						if (item.isStackable())
							item = player.getInventory().removeStackedItem(id, 1);
						else
							item = player.getInventory().removeItem(id);
						player.getLocation().addItem(item);
						println("You drop the " + item.properName() + " on the floor.");
					} catch (InvalidKeyException e) {
						log.println("The item you picked was invalid");
					}
				}
			}
		}
		updateTile(player.getLocation().getColumn(), player.getLocation().getRow());
	}