Advertisement
Guest User

Main

a guest
May 27th, 2016
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.59 KB | None | 0 0
  1.  
  2. import java.util.ArrayList;
  3. import java.util.List;
  4.  
  5. import org.bukkit.Bukkit;
  6. import org.bukkit.ChatColor;
  7. import org.bukkit.Location;
  8. import org.bukkit.World;
  9. import org.bukkit.block.Block;
  10. import org.bukkit.command.Command;
  11. import org.bukkit.command.CommandSender;
  12. import org.bukkit.entity.ArmorStand;
  13. import org.bukkit.entity.Minecart;
  14. import org.bukkit.entity.Player;
  15. import org.bukkit.event.EventHandler;
  16. import org.bukkit.event.HandlerList;
  17. import org.bukkit.event.Listener;
  18. import org.bukkit.event.block.Action;
  19. import org.bukkit.event.player.PlayerArmorStandManipulateEvent;
  20. import org.bukkit.event.player.PlayerInteractEvent;
  21. import org.bukkit.event.vehicle.VehicleCollisionEvent;
  22. import org.bukkit.event.vehicle.VehicleEnterEvent;
  23. import org.bukkit.event.vehicle.VehicleEntityCollisionEvent;
  24. import org.bukkit.event.vehicle.VehicleExitEvent;
  25. import org.bukkit.plugin.PluginManager;
  26. import org.bukkit.plugin.java.JavaPlugin;
  27. import org.bukkit.scheduler.BukkitRunnable;
  28. import org.bukkit.util.Vector;
  29.  
  30. import com.bergerkiller.bukkit.common.entity.CommonEntity;
  31.  
  32. public class Frisbee extends JavaPlugin implements Listener {
  33. Ride RF = new Ride(this);
  34. Fence CF = new Fence(this);
  35. ArrayList listenForPlayers = new ArrayList();
  36. ArrayList playersInCart = new ArrayList();
  37. String rideName;
  38. String rideStartName;
  39. int rideIsJoining = 0;
  40. int rideHasStarted = 0;
  41. int runnableID;
  42. Location rideLocation;
  43. boolean delete = false;
  44.  
  45.  
  46. private static final HandlerList handlers = new HandlerList();
  47. public HandlerList getHandlers() {
  48. return handlers;
  49. }
  50. public static HandlerList getHandlerList() {
  51. return handlers;
  52. }
  53.  
  54. public void onEnable() {
  55. PluginManager pm = Bukkit.getServer().getPluginManager();
  56. pm.registerEvents(this, this);
  57. loadConfiguration();
  58. reloadConfig();
  59. if(delete){RFdelete();
  60. delete=false;}
  61. }
  62.  
  63. public void onDisable() {
  64. if(RF != null){
  65. Bukkit.getScheduler().cancelTask(runnableID);
  66. delete = true;
  67. RFdelete();
  68. RFdelete();}
  69. saveDefaultConfig();
  70. }
  71.  
  72. private void RFdelete() {
  73. RF.delete();
  74. rideHasStarted = 0;
  75. CF.getBlocksOpen(rideLocation, 10);
  76. }
  77. public void loadConfiguration() {
  78. getConfig().options().copyDefaults(true);
  79. saveDefaultConfig();
  80. }
  81.  
  82. @Override
  83. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
  84. Player player = (Player) sender;
  85. if (player.hasPermission("frisbee.admin")) {
  86. if (cmd.getName().equalsIgnoreCase("frisbee")) {
  87. reloadConfig();
  88. if (args.length == 0) {
  89. }
  90. if (args.length == 2) {
  91. if (args[0].equalsIgnoreCase("set")) {
  92. if (!(listenForPlayers.contains(player.getName()))) {
  93. listenForPlayers.add(player.getName());
  94. player.sendMessage(ChatColor.AQUA + "" + ChatColor.BOLD + "[Frisbee]" + ChatColor.GOLD
  95. + " Right click the center floor block of the middle pole.");
  96. rideName = args[1];
  97. }
  98. }
  99. if (args[0].equalsIgnoreCase("delete")) {
  100. Bukkit.getScheduler().cancelTask(runnableID);
  101. rideHasStarted = 0;
  102. RF.delete();
  103. }
  104. if (args[0].equalsIgnoreCase("start")) {
  105. if (rideHasStarted != 1) {
  106. if (rideHasStarted != 2) {
  107. rideName = args[1];
  108. loadConfiguration();
  109. rideHasStarted = 1;
  110. List rideLocationList = getConfig().getList("Frisbees." + rideName);
  111.  
  112. double x = Integer.parseInt(String.valueOf(rideLocationList.get(0))) + 0.5;
  113. double y = Integer.parseInt(String.valueOf(rideLocationList.get(1))) + 1;
  114. double z = Integer.parseInt(String.valueOf(rideLocationList.get(2))) + 0.5;
  115. World worldName = Bukkit.getWorld(String.valueOf(rideLocationList.get(3)));
  116.  
  117. rideLocation = new Location(worldName, x, y, z);
  118. CF.getBlocksOpen(rideLocation, 5);
  119.  
  120. RF = new Ride(rideLocation);
  121. RF.spawn();
  122.  
  123. reloadConfig();
  124. List<Double> heightList = (List<Double>) getConfig().getList("Heights");
  125. List<Double> spinList = (List<Double>) getConfig().getList("Spins");
  126. final double[] heightPercentArray = new double[heightList.size()];
  127. final double[] spinArray = new double[heightList.size()];
  128. for (int i = 0; i < heightList.size(); i++) {
  129. heightPercentArray[i] = heightList.get(i);
  130. spinArray[i] = spinList.get(i);
  131. }
  132.  
  133. new BukkitRunnable() {
  134. int spin = 0;
  135. int swing = 0;
  136.  
  137. int stage = 0;
  138.  
  139. @Override
  140. public void run() {
  141. runnableID = this.getTaskId();
  142. swing %= 360;
  143. if(swing == 0 || swing == 180){
  144. stage += 1;
  145. stage %= heightPercentArray.length;
  146. if(stage == 0){
  147. Bukkit.getScheduler().cancelTask(this.getTaskId());
  148. RF.delete();
  149. rideHasStarted = 0;
  150. return;
  151. }
  152. }
  153. double pendulum = Math.sin(Math.toRadians(swing)) * 90;
  154. pendulum *= heightPercentArray[stage];
  155. RF.animate(pendulum, spin, 0);
  156. spin += spinArray[stage];
  157. swing++;
  158. if (heightPercentArray[stage] > 0){
  159. CF.getBlocksClose(rideLocation, 5);
  160. }
  161.  
  162. }
  163. }.runTaskTimer(this, 0, 1);
  164. }
  165. }
  166. }
  167. } else {
  168. player.sendMessage(
  169. ChatColor.AQUA + "" + "[Frisbee]" + ChatColor.GOLD + " Incorrect Format");
  170. }
  171. }
  172. } else {
  173. player.sendMessage(ChatColor.AQUA + "" + "[Frisbee]" + ChatColor.RED + " No Permission!");
  174. }
  175. return true;
  176. }
  177.  
  178. @EventHandler
  179. public void blockClick(PlayerInteractEvent e) {
  180. reloadConfig();
  181. Player p = e.getPlayer();
  182. if (listenForPlayers.contains(p.getName())) {
  183. if (e.getAction() == Action.RIGHT_CLICK_BLOCK) {
  184. Block b = e.getClickedBlock();
  185. ArrayList<String> locationList = new ArrayList<String>();
  186. locationList.add(String.valueOf(b.getLocation().getBlockX()));
  187. locationList.add(String.valueOf(b.getLocation().getBlockY()));
  188. locationList.add(String.valueOf(b.getLocation().getBlockZ()));
  189. locationList.add(String.valueOf(b.getLocation().getWorld().getName()));
  190. getConfig().set("Frisbees." + (rideName), locationList);
  191. saveConfig();
  192. listenForPlayers.remove(p.getName());
  193. p.sendMessage(ChatColor.AQUA + "" + "[Frisbee]" + ChatColor.GOLD
  194. + " Successfully added the ride '" + ChatColor.AQUA + "" + ChatColor.BOLD + rideName
  195. + ChatColor.RESET + "" + ChatColor.GOLD + "'!");
  196. }
  197. }
  198. }
  199.  
  200. @EventHandler
  201. public void onVehicleEntityCollision(VehicleEntityCollisionEvent event) {
  202. if (event.getVehicle().getCustomName() != null) {
  203. if (event.getVehicle().getCustomName().toLowerCase().startsWith("frisbeeminecart")) {
  204. event.setCollisionCancelled(true);
  205. event.setCancelled(true);
  206. }
  207. }
  208. }
  209.  
  210. @EventHandler
  211. public void onVehicleExit(VehicleExitEvent event) {
  212. if (event.getVehicle().getCustomName() != null) {
  213. if (event.getVehicle().getCustomName().toLowerCase()
  214. .startsWith("frisbeeminecart")) {
  215. event.setCancelled(true);
  216. }
  217. }
  218. }
  219.  
  220. @EventHandler
  221. public void armorStandHeadRemove(PlayerArmorStandManipulateEvent event) {
  222. if (event.getArmorStandItem().getAmount() == 2) {
  223. event.setCancelled(true);
  224. }
  225. }
  226. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement