Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.PrintStream;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import net.milkbowl.vault.economy.Economy;
- import net.milkbowl.vault.economy.EconomyResponse;
- import org.bukkit.ChatColor;
- import org.bukkit.Material;
- import org.bukkit.Server;
- import org.bukkit.block.Block;
- import org.bukkit.block.BlockState;
- import org.bukkit.block.CreatureSpawner;
- import org.bukkit.block.Sign;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.command.ConsoleCommandSender;
- import org.bukkit.configuration.ConfigurationSection;
- import org.bukkit.configuration.file.FileConfiguration;
- import org.bukkit.configuration.file.FileConfigurationOptions;
- import org.bukkit.entity.EntityType;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.EventPriority;
- import org.bukkit.event.Listener;
- import org.bukkit.event.block.Action;
- import org.bukkit.event.block.BlockBreakEvent;
- import org.bukkit.event.block.BlockPlaceEvent;
- import org.bukkit.event.player.PlayerInteractEvent;
- import org.bukkit.event.player.PlayerLoginEvent;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.PlayerInventory;
- import org.bukkit.inventory.meta.ItemMeta;
- import org.bukkit.plugin.PluginManager;
- import org.bukkit.plugin.RegisteredServiceProvider;
- import org.bukkit.plugin.ServicesManager;
- import org.bukkit.plugin.java.JavaPlugin;
- public class SpawnerRankup
- extends JavaPlugin
- implements Listener
- {
- HashMap<String, Integer> level = new HashMap();
- static ArrayList<EntityType> mobs = new ArrayList();
- String s = "";
- Economy econ = null;
- public void onEnable()
- {
- getServer().getPluginManager().registerEvents(this, this);
- getConfig().options().copyDefaults(true);
- saveDefaultConfig();
- if (!setupEconomy())
- {
- getServer().getConsoleSender().sendMessage(this.s + "�c�lSetupEconomy FAILED -- You need Vault AND an Economy Plugin for this plugin to work");
- getServer().getPluginManager().disablePlugin(this);
- }
- if (getConfig().getConfigurationSection("Player-Levels") != null) {
- for (String s : getConfig().getConfigurationSection("Player-Levels").getValues(true).keySet()) {
- this.level.put(s, Integer.valueOf(getConfig().getConfigurationSection("Player-Levels").getInt(s)));
- }
- }
- for (Player p : getServer().getOnlinePlayers()) {
- if (!this.level.containsKey(p.getName())) {
- this.level.put(p.getName(), Integer.valueOf(1));
- }
- }
- for (int i = 1; i < 11; i++) {
- mobs.add(EntityType.fromName(getConfig().getString("level-" + i)));
- }
- }
- public void onDisable()
- {
- if (getConfig().getConfigurationSection("Player-Levels") == null) {
- getConfig().createSection("Player-Levels", this.level);
- } else {
- getConfig().set("Player-Levels", this.level);
- }
- saveConfig();
- }
- boolean setupEconomy()
- {
- if (getServer().getPluginManager().getPlugin("Vault") == null) {
- return false;
- }
- RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
- if (rsp == null) {
- return false;
- }
- this.econ = ((Economy)rsp.getProvider());
- return this.econ != null;
- }
- boolean isInt(String s)
- {
- try
- {
- Integer.parseInt(s);return true;
- }
- catch (NumberFormatException e) {}
- return false;
- }
- @EventHandler
- public void login(PlayerLoginEvent e)
- {
- if (!this.level.containsKey(e.getPlayer().getName())) {
- this.level.put(e.getPlayer().getName(), Integer.valueOf(1));
- }
- }
- @EventHandler(priority=EventPriority.HIGHEST)
- public void blockBreak(BlockBreakEvent e)
- {
- if (e.isCancelled()) {
- return;
- }
- if (getConfig().getBoolean("all-spawners"))
- {
- if (e.getBlock().getType() != Material.MOB_SPAWNER) {
- return;
- }
- if (!(e.getBlock().getState() instanceof CreatureSpawner)) {
- return;
- }
- CreatureSpawner state = (CreatureSpawner)e.getBlock().getState();
- EntityType et = state.getSpawnedType();
- if (!mobs.subList(0, ((Integer)this.level.get(e.getPlayer().getName())).intValue()).contains(et))
- {
- e.setCancelled(true);
- e.getPlayer().sendMessage(this.s + "�cYou are not allowed to break that type of spawner!");
- }
- }
- }
- @EventHandler(priority=EventPriority.HIGHEST)
- public void blockPlace(BlockPlaceEvent e)
- {
- if (e.isCancelled()) {
- return;
- }
- if (e.getBlock().getType() != Material.MOB_SPAWNER) {
- return;
- }
- if (!(e.getBlock().getState() instanceof CreatureSpawner)) {
- return;
- }
- ItemStack item = e.getItemInHand();
- ItemMeta itemMeta = item.getItemMeta();
- if (!item.hasItemMeta()) {
- item.setItemMeta(itemMeta);
- }
- if (!itemMeta.hasDisplayName()) {
- itemMeta.setDisplayName("�e" + EntityType.fromId(((CreatureSpawner)e.getBlock().getState()).getTypeId()) + " �fSpawner");
- }
- item.setItemMeta(itemMeta);
- CreatureSpawner state = (CreatureSpawner)e.getBlock().getState();
- EntityType et = state.getSpawnedType();
- String name = itemMeta.getDisplayName();
- if (EntityType.fromName(ChatColor.stripColor(name.substring(0, name.length() - 10))) != null) {
- state.setSpawnedType(EntityType.fromName(ChatColor.stripColor(name.substring(0, name.length() - 10))));
- } else {
- state.setSpawnedType(EntityType.PIG);
- }
- if ((getConfig().getBoolean("all-spawners")) && (!mobs.subList(0, ((Integer)this.level.get(e.getPlayer().getName())).intValue()).contains(et)))
- {
- e.setCancelled(true);
- e.getPlayer().sendMessage(this.s + "�cYou are not allowed to place that type of spawner!");
- return;
- }
- e.getBlock().setData((byte)et.getTypeId());
- e.getBlock().getState().update();
- }
- @EventHandler
- public void sign(PlayerInteractEvent e)
- {
- Player p = e.getPlayer();
- if ((e.getAction() == Action.RIGHT_CLICK_BLOCK) &&
- ((e.getClickedBlock().getState() instanceof Sign)))
- {
- Sign sign = (Sign)e.getClickedBlock().getState();
- int length = 1;
- String one = ChatColor.translateAlternateColorCodes('&', sign.getLine(0));
- String config = ChatColor.translateAlternateColorCodes('&', getConfig().getString("Sign-Line-1"));
- if (ChatColor.stripColor(sign.getLine(3)).equals("10")) {
- length = 2;
- }
- if ((one.equalsIgnoreCase(config)) &&
- (EntityType.valueOf(ChatColor.stripColor(sign.getLine(1).toUpperCase())) != null) &&
- (isInt(ChatColor.stripColor(sign.getLine(2).replaceAll("[$,]", "")))) &&
- (isInt(ChatColor.stripColor(sign.getLine(3).substring(sign.getLine(3).length() - 1)))))
- {
- if (((Integer)this.level.get(p.getName())).intValue() >= Integer.parseInt(ChatColor.stripColor(sign.getLine(3))
- .substring(ChatColor.stripColor(sign.getLine(3)).length() - length).replaceAll("[ A-Za-z]", "")))
- {
- EconomyResponse t = this.econ.withdrawPlayer(p, Integer.parseInt(ChatColor.stripColor(sign.getLine(2).replaceAll("[$,]", ""))));
- if (p.getInventory().firstEmpty() != -1)
- {
- if (t.transactionSuccess())
- {
- ItemStack item = new ItemStack(Material.MOB_SPAWNER);
- ItemMeta meta = item.getItemMeta();
- item.setDurability(EntityType.valueOf(ChatColor.stripColor(sign.getLine(1).toUpperCase())).getTypeId());
- meta.setDisplayName("�e" + ChatColor.stripColor(sign.getLine(1).substring(0, 1).toUpperCase()) +
- ChatColor.stripColor(sign.getLine(1).substring(1, sign.getLine(1).length())) + " �fSpawner");
- item.setItemMeta(meta);
- p.sendMessage(this.s + "�aBought a �e" + sign.getLine(1) + " �aspawner for �6" + sign.getLine(2));
- p.getInventory().addItem(new ItemStack[] { item });
- p.updateInventory();
- }
- else
- {
- p.sendMessage(this.s + "�cNot enough money!");
- }
- }
- else {
- p.sendMessage(this.s + "�cNot enough inventory space!");
- }
- }
- else
- {
- p.sendMessage(this.s + "�cYou are not high enough level to purchase that spawner!");
- }
- }
- else if ((sign.getLine(0).equalsIgnoreCase(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Sign-Line-1")))) &&
- (EntityType.valueOf(sign.getLine(1).toUpperCase()) == null) && (e.getPlayer().isOp()) &&
- (isInt(ChatColor.stripColor(sign.getLine(2).replaceAll("[$,]", "")))) &&
- (isInt(sign.getLine(3).substring(sign.getLine(3).length() - 1))))
- {
- p.sendMessage(this.s + "�a" + sign.getLine(1).toUpperCase() + " �cis not a valid Mob type");
- p.sendMessage(this.s + "�cList of Entities: �ehttps://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/EntityType.html");
- }
- }
- }
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
- {
- if ((sender instanceof Player))
- {
- Player p = (Player)sender;
- if (label.equalsIgnoreCase("rankup"))
- {
- if (!this.level.containsKey(p.getName())) {
- this.level.put(p.getName(), Integer.valueOf(1));
- }
- if (((Integer)this.level.get(p.getName())).intValue() < 10)
- {
- if (p.getLevel() >= getConfig().getInt("rankup-level-cost-" + (((Integer)this.level.get(p.getName())).intValue() + 1)))
- {
- p.setLevel(p.getLevel() - getConfig().getInt("rankup-level-cost-" + (((Integer)this.level.get(p.getName())).intValue() + 1)));
- this.level.put(p.getName(), Integer.valueOf(((Integer)this.level.get(p.getName())).intValue() + 1));
- getServer().broadcastMessage(this.s + "�a" + p.getDisplayName() + " ranked up to Level " + this.level.get(p.getName()));
- }
- else
- {
- p.sendMessage(this.s + "�cNot enough exp to rankup! You need " + getConfig().getInt(new StringBuilder("rankup-level-cost-")
- .append(((Integer)this.level.get(p.getName())).intValue() + 1).toString()) + " exp levels to rankup!");
- }
- }
- else {
- p.sendMessage(this.s + "�cYou are the max level!");
- }
- }
- else if (label.equalsIgnoreCase("checklevel"))
- {
- if (!this.level.containsKey(p.getName())) {
- this.level.put(p.getName(), Integer.valueOf(1));
- }
- p.sendMessage(this.s + "�aYou are currently level: �e" + this.level.get(p.getName()));
- }
- }
- else
- {
- System.out.println(this.s + "�eYou can only send commands in-game!");
- }
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement