Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package be.arcaniax.crossbow;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.logging.Logger;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Material;
- import org.bukkit.Server;
- import org.bukkit.Sound;
- import org.bukkit.entity.Arrow;
- 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.player.PlayerInteractEvent;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.ShapedRecipe;
- import org.bukkit.inventory.meta.ItemMeta;
- import org.bukkit.plugin.PluginDescriptionFile;
- import org.bukkit.plugin.java.JavaPlugin;
- import org.bukkit.potion.PotionEffect;
- import org.bukkit.potion.PotionEffectType;
- public class Main extends JavaPlugin implements Listener {
- public final Logger logger = Logger.getLogger("Minecraft");
- Server server = Bukkit.getServer();
- public static Main plugin;
- public void onDisable()
- {
- PluginDescriptionFile pdfFile = getDescription();
- this.logger.info("Unloaded " + pdfFile.getName());
- }
- public void onEnable() {
- server.getPluginManager().registerEvents(this, this);
- PluginDescriptionFile pdfFile = getDescription();
- this.logger.info("Loaded up " + pdfFile.getName() + " v. " + pdfFile.getVersion());
- this.AddRecipe();
- this.saveDefaultConfig();
- this.logger.info("Added Crossbow recipe!");
- }
- private void AddRecipe() {
- ItemStack is = new ItemStack(Material.IRON_PICKAXE, 1);
- ItemMeta im = is.getItemMeta();
- List<String> CraftLore = new ArrayList<String>();
- CraftLore.add(ChatColor.AQUA + "Left Click to load" + ChatColor.GOLD + " | " + ChatColor.AQUA + "Right Click to shoot");
- CraftLore.add(ChatColor.RESET + "");
- im.setLore(CraftLore);
- im.setDisplayName(ChatColor.GRAY + "Crossbow");
- is.setItemMeta(im);
- ShapedRecipe rec = new ShapedRecipe(is);
- rec.shape("ICI",
- "ABA",
- "ASA");
- rec.setIngredient('C', Material.IRON_BLOCK);
- rec.setIngredient('I', Material.IRON_PLATE);
- rec.setIngredient('B', Material.BOW);
- rec.setIngredient('S', Material.STICK);
- this.getServer().addRecipe(rec);
- }
- @EventHandler(priority=EventPriority.HIGH)
- private void onPlayerUse(final PlayerInteractEvent event){
- final Player p = event.getPlayer();
- if(p.getItemInHand().getType() == Material.IRON_PICKAXE && p.getItemInHand().hasItemMeta() && p.getItemInHand().getItemMeta().hasDisplayName() && p.getItemInHand().getItemMeta().getDisplayName().equals(ChatColor.GRAY + "Crossbow")){
- event.setCancelled(true);
- if(event.getAction().equals(Action.RIGHT_CLICK_AIR) || event.getAction().equals(Action.RIGHT_CLICK_BLOCK)){
- List<String> loreList = new ArrayList<String>();
- loreList.add(ChatColor.AQUA + "Left Click to load" + ChatColor.GOLD + " | " + ChatColor.AQUA + "Right Click to shoot");
- loreList.add(ChatColor.GOLD + "Loaded");
- if(p.getItemInHand().getItemMeta().hasLore() && p.getItemInHand().getItemMeta().getLore().equals(loreList)){
- p.playSound(p.getLocation(), Sound.SHOOT_ARROW, 10, (float) 0.8);
- Arrow arrow = p.launchProjectile(Arrow.class);
- arrow.setVelocity(p.getEyeLocation().getDirection().multiply(4.5));
- ItemStack is2 = p.getItemInHand();
- ItemMeta im2 = is2.getItemMeta();
- List<String> loreList1 = new ArrayList<String>();
- loreList1.add(ChatColor.AQUA + "Left Click to load" + ChatColor.GOLD + " | " + ChatColor.AQUA + "Right Click to shoot");
- loreList1.add(ChatColor.RESET + "");
- im2.setLore(loreList1);
- is2.setItemMeta(im2);
- p.updateInventory();
- }
- }
- else if(event.getAction().equals(Action.LEFT_CLICK_AIR) || event.getAction().equals(Action.LEFT_CLICK_BLOCK)){
- List<String> loreList1 = new ArrayList<String>();
- loreList1.add(ChatColor.AQUA + "Left Click to load" + ChatColor.GOLD + " | " + ChatColor.AQUA + "Right Click to shoot");
- loreList1.add(ChatColor.GOLD + "Loaded");
- if(!(p.getItemInHand().getItemMeta().hasLore() && p.getItemInHand().getItemMeta().getLore().equals(loreList1))){
- ItemStack item = new ItemStack(Material.ARROW);
- ItemStack removeitem = new ItemStack(Material.ARROW, 1);
- if(p.getInventory().containsAtLeast(item, 1)){
- p.getInventory().removeItem(removeitem);
- p.updateInventory();
- p.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_DIGGING, 40, 10));
- final int TimesLoop = getConfig().getInt("LoadTime") * 2 + 1;
- p.sendMessage("Starting Loop");
- for(int Loop = 1; Loop < TimesLoop; Loop++){
- p.sendMessage("Inside Loop");
- if(Loop == TimesLoop) {
- int Wait = Loop * 10;
- p.sendMessage("Limit");
- Bukkit.getScheduler().runTaskLater(plugin, new Runnable(){
- public void run() {
- Player p5 = event.getPlayer();
- if(!(p5.getItemInHand().getType() == Material.IRON_PICKAXE && p5.getItemInHand().hasItemMeta() && p5.getItemInHand().getItemMeta().hasDisplayName() && p5.getItemInHand().getItemMeta().getDisplayName().equals(ChatColor.GRAY + "Crossbow"))){
- p5.getInventory().addItem(new ItemStack(Material.ARROW, 1));
- p5.playSound(p5.getLocation(), Sound.STEP_STONE, 2, (float) 0.8);
- }
- else {
- ItemStack is1 = p5.getItemInHand();
- List<String> loreList2 = new ArrayList<String>();
- loreList2.add(ChatColor.AQUA + "Left Click to load" + ChatColor.GOLD + " | " + ChatColor.AQUA + "Right Click to shoot");
- loreList2.add(ChatColor.GOLD + "Loaded");
- ItemMeta im1 = is1.getItemMeta();
- im1.setLore(loreList2);
- is1.setItemMeta(im1);
- p5.updateInventory();
- p5.playSound(p5.getLocation(), Sound.CLICK, 2, (float) 0.8);
- }
- }
- }, Wait);
- }
- else {
- int Wait = Loop * 10;
- p.sendMessage("looping...");
- Bukkit.getScheduler().runTaskLater(plugin, new Runnable(){
- public void run() {
- Player p2 = event.getPlayer();
- if(!(p2.getItemInHand().getType() == Material.IRON_PICKAXE && p2.getItemInHand().hasItemMeta() && p2.getItemInHand().getItemMeta().hasDisplayName() && p2.getItemInHand().getItemMeta().getDisplayName().equals(ChatColor.GRAY + "Crossbow"))){
- p2.getInventory().addItem(new ItemStack(Material.ARROW, 1));
- p2.playSound(p2.getLocation(), Sound.STEP_STONE, 2, (float) 0.8);
- }
- else {
- p2.playSound(p2.getLocation(), Sound.CLICK, 2, (float) 1.5);
- }
- }
- }, Wait);}
- }
- }
- }
- }} }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement