package net.diamonddominion.esaych.global; import java.util.HashMap; import java.util.Map; import net.diamonddominion.esaych.CustomPlugin; import org.bukkit.Bukkit; import org.bukkit.Effect; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.block.Action; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.util.Vector; public class LaunchPad { private CustomPlugin plugin; private Map<Player, Integer> launched = new HashMap<Player, Integer>(); public LaunchPad(CustomPlugin plugin) { this.plugin = plugin; } public void enable() { // plugin.getServer().getPluginManager().registerEvents(this, plugin); log("Enabled"); } public void log(String info) { plugin.getLogger().info("<LaunchPad> " + info); } public void sendFlying(Block block, Player player) { Block u = block.getLocation().clone().add(0,-1,0).getBlock(); if (u.getType() != Material.OBSIDIAN) { return; } boolean n = block.getLocation().clone().add(0,-1,1).getBlock().getType() == Material.REDSTONE_LAMP_OFF; boolean s = block.getLocation().clone().add(0,-1,-1).getBlock().getType() == Material.REDSTONE_LAMP_OFF; boolean e = block.getLocation().clone().add(1,-1,0).getBlock().getType() == Material.REDSTONE_LAMP_OFF; boolean w = block.getLocation().clone().add(-1,-1,0).getBlock().getType() == Material.REDSTONE_LAMP_OFF; // player.setVelocity(new Vector(0, 1, 0)); int total = 0; if (n) total++; if (s) total++; if (e) total++; if (w) total++; if (total > 1) { return; } else if (total == 1) { block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, 80); } if (n) player.setVelocity(new Vector(0,1,10)); if (s) player.setVelocity(new Vector(0,1,-10)); if (e) player.setVelocity(new Vector(10,1,0)); if (w) player.setVelocity(new Vector(-10,1,0)); } // @EventHandler public void onPlayerInteractEvent(PlayerInteractEvent event) { if (event.getClickedBlock() != null) { if (event.getAction() == Action.PHYSICAL && event.getClickedBlock().getType() == Material.STONE_PLATE) { // Block b = event.getClickedBlock(); // int x = b.getLocation().getBlockX(); // int y = b.getLocation().getBlockY(); // int z = b.getLocation().getBlockZ(); // 247, 192, 258 // 271, 192, 258 // if (b.getWorld().getName().equals("Survival") && y == 192 && z == 258) { // if (x == 271) { // event.getPlayer().setVelocity(new Vector(-10, 1, 0)); // return; // } // if (x == 247) { // event.getPlayer().setVelocity(new Vector(10, 1, 0)); // return; // } // } //START SHOP SCRIPT if (event.getClickedBlock().getLocation().equals(new Location(Bukkit.getWorld("Survival"), 213, 68, 252))) { event.getPlayer().setVelocity(new Vector(-5.5, 2, -3.6)); launched.put(event.getPlayer(), (int) (System.currentTimeMillis()/1000)); } //END SHOP SCRIPT sendFlying(event.getClickedBlock(), event.getPlayer()); } } } // @EventHandler @SuppressWarnings("deprecation") public void onPlayerDamage(EntityDamageEvent event){ if (event.getEntity() instanceof Player){ if (event.getCause() == DamageCause.FALL){ Location l = event.getEntity().getLocation().add(0, -2, 0); Block block = l.getBlock(); //START SHOP SCRIPT if (block.getType() == Material.SPONGE) if (block.getData() == (byte) 5) event.setCancelled(true); Player player = (Player) event.getEntity(); if (launched.containsKey(player)) { if (System.currentTimeMillis()/1000 < launched.get(event.getEntity()) + 3) { event.setCancelled(true); if (!(block.getType() == Material.SPONGE && block.getData() == (byte) 5)) player.teleport(new Location(Bukkit.getWorld("Survival"), 184.5, 80, 227.5, player.getLocation().getYaw(), player.getLocation().getPitch())); else launched.remove(player); } else { launched.remove(player); } } //END SHOP SCRIPT l = event.getEntity().getLocation().add(0, -1, 0); block = l.getBlock(); if (block.getType() != Material.OBSIDIAN) { return; } boolean n = block.getLocation().clone().add(0,-1,1).getBlock().getType() == Material.REDSTONE_LAMP_OFF; boolean s = block.getLocation().clone().add(0,-1,-1).getBlock().getType() == Material.REDSTONE_LAMP_OFF; boolean e = block.getLocation().clone().add(1,-1,0).getBlock().getType() == Material.REDSTONE_LAMP_OFF; boolean w = block.getLocation().clone().add(-1,-1,0).getBlock().getType() == Material.REDSTONE_LAMP_OFF; // player.setVelocity(new Vector(0, 1, 0)); int total = 0; if (n) total++; if (s) total++; if (e) total++; if (w) total++; if (total > 1) { return; } event.setCancelled(true); } } } }