Created
August 25, 2014 04:00
-
-
Save ScruffyRules/a51957a9c03fdd187cf4 to your computer and use it in GitHub Desktop.
This file contains hidden or 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 com.scruffyrules.lootcrate; | |
import java.util.Random; | |
import org.bukkit.ChatColor; | |
import org.bukkit.Material; | |
import org.bukkit.command.Command; | |
import org.bukkit.command.CommandSender; | |
import org.bukkit.configuration.file.FileConfiguration; | |
import org.bukkit.entity.Player; | |
import org.bukkit.inventory.Inventory; | |
import org.bukkit.inventory.ItemStack; | |
import org.bukkit.plugin.java.JavaPlugin; | |
import com.scruffyrules.lootcrate.util.Utility; | |
public class LootCrate extends JavaPlugin { | |
// TODO Random Items | |
// TODO Store in config | |
// TODO | |
// TODO | |
// TODO | |
// TODO | |
// TODO | |
public static FileConfiguration config; | |
public void onDisable() { | |
config = null; | |
} | |
public void onEnable() { | |
saveDefaultConfig(); | |
config = getConfig(); | |
getServer().getPluginManager().registerEvents(new LootCrateListener(), this); | |
getCommand("lootcrate"); | |
} | |
@Override | |
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { | |
if (!(sender instanceof Player)) {sender.sendMessage("Only a player can do this!");return true;} | |
Player player = (Player) sender; | |
ItemStack LootCrateItem = new ItemStack(Material.CHEST, 1); | |
Utility.nameItem(LootCrateItem, ChatColor.DARK_PURPLE + "LootCrate"); | |
player.getInventory().addItem(LootCrateItem); | |
return true; | |
} | |
public static String getRandomCrate() { | |
String hi = ""; | |
for (String str : config.getKeys(true)) { | |
hi += str + ";"; | |
} | |
return hi.split(";")[new Random().nextInt(hi.split(";").length)]; | |
} | |
public static ItemStack getItemFromCustomString(String string) { | |
String[] split = string.split(","); | |
String item = split[0]; | |
int min = Integer.parseInt(split[1]); | |
int max = Integer.parseInt(split[2]); | |
int amount = new Random().nextInt((max - min) + 1) + min; | |
if (amount == 0) { | |
return new ItemStack(Material.AIR); | |
} | |
return new ItemStack(Material.getMaterial(item), amount); | |
} | |
public static int getRandomInventorySlot(Inventory inventory) { | |
int random = new Random().nextInt(inventory.getSize()); | |
if (inventory.getItem(random) != null) { | |
getRandomInventorySlot(inventory); | |
} | |
return random; | |
} | |
public static void setCrateInventory(Inventory inventory) { | |
for (String string : config.getString(getRandomCrate()).substring(1).split("-")) { | |
inventory.setItem(getRandomInventorySlot(inventory), getItemFromCustomString(string.trim())); | |
} | |
} | |
} |
This file contains hidden or 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 com.scruffyrules.lootcrate; | |
import org.bukkit.Bukkit; | |
import org.bukkit.ChatColor; | |
import org.bukkit.Location; | |
import org.bukkit.Material; | |
import org.bukkit.block.Block; | |
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.block.BlockPlaceEvent; | |
import org.bukkit.event.inventory.InventoryCloseEvent; | |
import org.bukkit.event.inventory.InventoryType; | |
import org.bukkit.event.player.PlayerInteractEvent; | |
import org.bukkit.inventory.Inventory; | |
import org.bukkit.metadata.FixedMetadataValue; | |
public class LootCrateListener implements Listener { | |
@EventHandler | |
public void openCrate(PlayerInteractEvent event) { | |
if (!event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) return; | |
if (!event.getClickedBlock().hasMetadata("LootCrate")) return; | |
if (event.getClickedBlock().hasMetadata("LootCrate-Active")) return; | |
if (event.getPlayer().isSneaking()) return; | |
event.getClickedBlock().setMetadata("LootCrate-Active", new FixedMetadataValue(LootCrate.getPlugin(LootCrate.class), true)); | |
Player player = event.getPlayer(); | |
player.setMetadata("LootCrate-Block", new FixedMetadataValue(LootCrate.getPlugin(LootCrate.class), event.getClickedBlock().getLocation())); | |
Inventory inventory = Bukkit.createInventory(player, InventoryType.CHEST, ChatColor.DARK_PURPLE + "LootCrate"); | |
LootCrate.setCrateInventory(inventory); | |
player.openInventory(inventory); | |
} | |
@EventHandler | |
public void closeCrate(InventoryCloseEvent event) { | |
if (event.getInventory().getTitle() == null) return; | |
if (!event.getInventory().getTitle().equals(ChatColor.DARK_PURPLE + "LootCrate")) return; | |
if (!event.getPlayer().hasMetadata("LootCrate-Block")) return; | |
Block block = Bukkit.getWorld("world").getBlockAt((Location)event.getPlayer().getMetadata("LootCrate-Block").get(0).value()); | |
block.removeMetadata("LootCrate-Active", LootCrate.getPlugin(LootCrate.class)); | |
block.setType(Material.AIR); | |
event.getPlayer().removeMetadata("LootCrate-Block", LootCrate.getPlugin(LootCrate.class)); | |
} | |
@SuppressWarnings("deprecation") | |
@EventHandler | |
public void placeCrate(BlockPlaceEvent event) { | |
if (event.getItemInHand().getItemMeta().getDisplayName() == null) return; | |
if (!event.getItemInHand().getItemMeta().getDisplayName().equals(ChatColor.DARK_PURPLE + "LootCrate")) return; | |
event.getBlock().setType(Material.PISTON_BASE); | |
event.getBlock().setData((byte) 7); | |
event.getBlock().setMetadata("LootCrate", new FixedMetadataValue(LootCrate.getPlugin(LootCrate.class), true)); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment