Skip to content

Instantly share code, notes, and snippets.

@heinrichquirit
Created November 24, 2013 04:51
Show Gist options
  • Save heinrichquirit/7623454 to your computer and use it in GitHub Desktop.
Save heinrichquirit/7623454 to your computer and use it in GitHub Desktop.
package main.java.net.bigbadcraft.dropmoney;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
public class DropCommand implements CommandExecutor {
private final ChatColor GREEN = ChatColor.GREEN;
private final ChatColor RED = ChatColor.RED;
@Override
public boolean onCommand(CommandSender s, Command c, String l, String[] a) {
if (s instanceof Player) {
Player player = (Player) s;
if (c.getName().equalsIgnoreCase("dropmoney")) {
return command(player, a);
}
}
return true;
}
private boolean command(Player player, String[] a) {
if (a.length == 0) {
player.sendMessage(RED + "Incorrect syntax, usage: /dropmoney <amount>");
return true;
} else if (a.length == 1) {
try {
int amount = Integer.parseInt(a[0]);
player.getWorld().dropItem(player.getLocation(), getPaper(amount));
player.sendMessage(GREEN + "Dropped: $" + amount);
} catch (NumberFormatException e) {
player.sendMessage(RED + "Please enter a number for your second argument.");
}
}
return true;
}
private ItemStack getPaper(int amount) {
ItemStack paper = new ItemStack(Material.PAPER, 1);
ItemMeta meta = paper.getItemMeta();
meta.setDisplayName("$" + amount);
paper.setItemMeta(meta);
return paper;
}
}
package main.java.net.bigbadcraft.dropmoney;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
public class InventoryClickListener implements Listener {
MoneyPlugin plugin;
public InventoryClickListener(MoneyPlugin plugin) {
this.plugin = plugin;
}
@EventHandler
public void onClick(InventoryClickEvent event) {
final Player player = (Player) event.getWhoClicked();
if (event.getView().getType() == InventoryType.ANVIL) {
if (event.getRawSlot() == 2) {
if (event.getView().getItem(0).getType() == Material.PAPER && isMoney(event.getView().getItem(2))) {
event.setCancelled(true);
player.sendMessage(ChatColor.RED + "Do not even attempt to exploit DropMoney.");
}
}
}
}
private boolean isMoney(ItemStack i) {
if (i != null) {
ItemMeta meta = i.getItemMeta();
if (meta != null) {
String name = meta.getDisplayName();
return name != null && name.startsWith("$");
}
}
return false;
}
}
package main.java.net.bigbadcraft.dropmoney;
import java.util.logging.Level;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.Bukkit;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;
public class MoneyPlugin extends JavaPlugin {
public static Economy economy = null;
@Override
public void onEnable() {
if (!setupEconomy()) {
Bukkit.getLogger().log(Level.SEVERE, "Vault not found, disabling DropMoney");
getServer().getPluginManager().disablePlugin(this);
} else {
setupEconomy();
}
getCommand("dropmoney").setExecutor(new DropCommand());
getServer().getPluginManager().registerEvents(new PlayerInteractListener(this), this);
getServer().getPluginManager().registerEvents(new InventoryClickListener(this), this);
}
private boolean setupEconomy() {
RegisteredServiceProvider<Economy> economyProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class);
if (economyProvider != null) {
economy = economyProvider.getProvider();
}
return (economy != null);
}
}
package main.java.net.bigbadcraft.dropmoney;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
public class PlayerInteractListener implements Listener {
MoneyPlugin plugin;
public PlayerInteractListener(MoneyPlugin plugin) {
this.plugin = plugin;
}
@EventHandler
public void onInteract(PlayerInteractEvent event) {
final Player player = event.getPlayer();
if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
if (player.getItemInHand().getType() == Material.PAPER) {
String display_name = player.getItemInHand().getItemMeta().getDisplayName();
if (display_name != null && display_name.startsWith("$")) {
int cost_amount = Integer.parseInt(display_name.substring(1, display_name.length()));
int player_balance = (int) Math.round(MoneyPlugin.economy.getBalance(player.getName()));
MoneyPlugin.economy.depositPlayer(player.getName(), cost_amount);
player.sendMessage(ChatColor.GREEN + "Deposited: $" + cost_amount + " into your account. (Total: $" + player_balance + ")");
if (player.getItemInHand().getAmount() > 1) {
player.getItemInHand().setAmount(player.getItemInHand().getAmount() - 1);
} else {
player.setItemInHand(null);
}
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment