Created
November 24, 2013 04:51
-
-
Save heinrichquirit/7623454 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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