spenk

Untitled

Apr 7th, 2013
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 12.46 KB | None | 0 0
  1. import java.util.HashMap;
  2. import java.util.List;
  3.  
  4. public class CCListener extends PluginListener {
  5.    
  6.     CCProps props;
  7.     CanaryCars plugin;
  8.     BlockLocator locator = new BlockLocator();
  9.     CCUtils utils = new CCUtils(props);
  10.    
  11.     public void Boost(final double current, final double power, final long sleep, final String p){
  12.         new Thread() {
  13.              public void run() {
  14.                   World w = etc.getServer().getPlayer(p).getLocation().getWorld();
  15.                 w.playSound(etc.getServer().getPlayer(p).getLocation(), Sound.FIZZ, 10, -2);
  16.                 double speed = current + power;
  17.                 plugin.carBoosts.put(p, speed);
  18.                 try {
  19.                     Thread.sleep(sleep);
  20.                 } catch (InterruptedException e) {
  21.                     plugin.carBoosts.remove(p);
  22.                     return;
  23.                 }
  24.                 plugin.carBoosts.remove(p);
  25.                 return;
  26.              }
  27.         }.start();
  28.         }
  29.    
  30.     public CCListener(CCProps props, CanaryCars plugin){
  31.         this.props = props;
  32.         this.plugin = plugin;
  33.     }
  34.    
  35.     public boolean inACar(String playername) {
  36.         Player p = etc.getServer().getPlayer(playername);
  37.         if (p == null) {
  38.             return false;
  39.         }
  40.        
  41.         if (p.getRidingEntity() == null){
  42.             return false;
  43.         }
  44.        
  45.         if (!p.getRidingEntity().getName().equalsIgnoreCase("Minecartrideable")){
  46.             return false;
  47.         }
  48.        
  49.         Minecart m = new Minecart((OEntityMinecart) p.getRidingEntity().getEntity());
  50.         Location loc = m.getLocation();
  51.         float id = utils.getBlock(loc).getType();
  52.         if (id == 27 || id == 66 || id == 28 || id == 157) {
  53.             return false;
  54.         }
  55.         return true;
  56.     }
  57.    
  58.     public void ResetCarBoost(String playername, Minecart car,double defaultSpeed) {
  59.         String p = playername;
  60.         World w = etc.getServer().getPlayer(p).getLocation().getWorld();
  61.         w.playSound(etc.getServer().getPlayer(p).getLocation(),Sound.AMBIENT_CAVE, 10, -2);
  62.         if (plugin.carBoosts.containsKey(p)) {
  63.             plugin.carBoosts.remove(p);
  64.         }
  65.         return;
  66.     }
  67.  
  68.     public boolean carBoost(String playerName, double power, long lengthMillis, double defaultSpeed) {
  69.         final String p = playerName;
  70.         final double defMult = defaultSpeed;
  71.         double Cur = defMult;
  72.         if (plugin.carBoosts.containsKey(p)) {
  73.             Cur = plugin.carBoosts.get(p);
  74.         }
  75.         if (Cur > defMult) {
  76.             // Already boosting!
  77.             return false;
  78.         }
  79.         final double current = Cur;
  80.        
  81.         Boost(current, power, lengthMillis, playerName);
  82.         return true;
  83.     }
  84.    
  85.     public boolean isPlayerOnRoad(Block blockUnder){
  86.         int id = blockUnder.getType();
  87.         Boolean valid = true;
  88.         List<String> ids = props.roadBlocks;   
  89.         if (ids.contains(id+"") || ids.contains(id+":"+blockUnder.getData())){
  90.             valid = true;
  91.         }else{
  92.             valid = false;
  93.         }
  94.         return valid;
  95.     }
  96.    
  97.     public void onVehicleUpdate(BaseVehicle vehicle){
  98.         Location under = utils.locationAdd(vehicle.getLocation(), 0, -1, 0);
  99.         Block underblock = utils.getBlock(under);//cartlevel
  100.         Block underunderblock = utils.getBlock(utils.locationAdd(underblock.getLocation(), 0, -1, 0));//undercart
  101.         Location behind = locator.blockBack(underblock.getLocation()).getLocation();
  102.         Location before = locator.blockFront(underblock.getLocation()).getLocation();
  103.         Block blockBefore = locator.blockFront(underblock.getLocation());
  104.         Vector playerVelocity;
  105.         double defMultiplier = props.defSpeed;
  106.         List<String> ignoreJump = props.jumpIgnore;
  107.         HashMap<String, Integer> speedMod = props.idSpeed;
  108.         double multiplier = defMultiplier;
  109.         Location loc;
  110.         Minecart car;
  111.         Player player;
  112.         Player passenger = vehicle.getPassenger();
  113.         List<String> barriers = props.barriers;
  114.         int maxspeed = 5;
  115.        
  116.         if (!(passenger instanceof Player)) {
  117.             return;
  118.         }
  119.         if (vehicle instanceof Minecart) {
  120.             if (!props.cEnable) {
  121.                 return;
  122.             }
  123.            
  124.             player = (Player) passenger;
  125.             car = (Minecart) vehicle;
  126.             loc = car.getLocation();
  127.             playerVelocity = utils.getVelocity(player.getEntity());
  128.            
  129.             if (props.requireRoad) {
  130.                 if (!isPlayerOnRoad(underunderblock)){
  131.                     return;
  132.                     }
  133.             }
  134.            
  135.             if (utils.getBlock(loc).getType() == 27 || utils.getBlock(loc).getType() == 28 || utils.getBlock(loc).getType() == 66 || underblock.getType() == 28 || underblock.getType() == 27 || underblock.getType() == 66) {
  136.                 return;
  137.             }
  138.            
  139.             if ((player.getRidingEntity() == null)) {
  140.                 return;
  141.             }
  142.            
  143.             if (props.perms) {
  144.                 if (!player.canUseCommand(props.drivePerm)) {
  145.                     player.sendMessage(props.infoColor + "You don't have the permission ucars.cars required to drive a car!");
  146.                     return;
  147.                 }
  148.             }
  149.            
  150.             if (playerVelocity.getX() == 0 && playerVelocity.getZ() == 0) {
  151.                 return;
  152.             }
  153.            
  154.             if (plugin.carBoosts.containsKey(player.getName())){
  155.                 maxspeed = (int)Math.ceil(plugin.carBoosts.get(player.getName()));
  156.             }
  157.            
  158.            
  159.             int blockBoostId = props.bBoost;
  160.             int tid = underunderblock.getType();
  161.             if (tid == blockBoostId) {
  162.                 if (inACar(player.getName())) {
  163.                     carBoost(player.getName(), 20, 6000,props.defSpeed);
  164.                 }
  165.             }
  166.             int HighblockBoostId = props.hbBoost;
  167.             if (tid == HighblockBoostId) {
  168.                 if (inACar(player.getName())) {
  169.                     carBoost(player.getName(), 50, 8000,props.defSpeed);
  170.                 }
  171.             }
  172.             int ResetblockBoostId = props.rbBoost;
  173.             if (tid == ResetblockBoostId) {
  174.                 if (inACar(player.getName())) {
  175.                     ResetCarBoost(player.getName(), car,props.defSpeed);
  176.                 }
  177.             }
  178.             //Vector cur = car.getVelocity();
  179.             Vector Velocity = playerVelocity.multiply(multiplier);
  180.             int jumpBlock = props.jBlock;
  181.            
  182.             if (tid == jumpBlock) {
  183.                 double jumpAmount = props.jAmount;
  184.                 Velocity.setY(jumpAmount);
  185.             }
  186.            
  187.             if (speedMod.containsKey(underunderblock.getType()+"")){
  188.                 multiplier = speedMod.get(underunderblock.getType()+"");
  189.             }
  190.            
  191.             if (speedMod.containsKey(underunderblock.getType()+":"+underunderblock.getData())){
  192.                 multiplier = speedMod.get(underunderblock.getType()+":"+underunderblock.getData());
  193.             }
  194.            
  195.             if (plugin.carBoosts.containsKey(player.getName())) {
  196.                 multiplier = plugin.carBoosts.get(player.getName());
  197.             }
  198.            
  199.             if (props.fuel) {
  200.                 double fuel = 0;
  201.                 if (plugin.playerFuel.containsKey(player.getName())) {
  202.                     fuel = plugin.playerFuel.get(player.getName());
  203.                 }
  204.                 if (fuel < 0.1) {
  205.                     player.sendMessage(props.errorColor+ "You don't have any fuel left!");
  206.                     return;
  207.                 }
  208.                 int amount = 0 + (int) (Math.random() * 250);
  209.                 if (amount == 10) {
  210.                     fuel = fuel - 0.1;
  211.                     fuel = (double) Math.round(fuel * 10) / 10;
  212.                     plugin.playerFuel.put(player.getName(), fuel);
  213.                 }
  214.             }
  215.            
  216.             if (underunderblock.getType() == 88 || blockBefore.getType() != 0 && !ignoreJump.contains(blockBefore.getType()+"") && !ignoreJump.contains(blockBefore.getType()+":"+blockBefore.getData()) && !barriers.contains(blockBefore.getType()+"") && ! barriers.contains(blockBefore.getType()+":"+blockBefore.getData())){
  217.                 Location up = utils.locationAdd(before, 0, 1, 0);
  218.                 if (utils.getBlock(up).getType() == 0){
  219.                     Velocity = Velocity.setY(Velocity.getY()+10);
  220.                 }
  221.             }
  222.            
  223.             if (plugin.carBoosts.containsKey(player.getName())){
  224.                 car.setSprinting(true);
  225.                 player.setSprinting(true);
  226.                 car.getEntity().i((int)Math.ceil(maxspeed));
  227.             }else{
  228.                 car.setSprinting(false);
  229.                 player.setSprinting(false);
  230.             }
  231.             player.sendMessage(locator.blockFront(car.getLocation())+"");
  232.             utils.setRotationPitch(player.getRotation(), car.getEntity());
  233.             utils.setVelocity(Velocity, car.getEntity());
  234.            
  235.              if (props.smoke){
  236.                  
  237.                  for (Player p : etc.getServer().getPlayerList()){
  238.                      OPacket61DoorChange packet = new OPacket61DoorChange(2000, (int)etc.floor(player.getX()), (int)etc.floor(player.getY()), (int)etc.floor(player.getZ()), 0, false);
  239.                      p.getUser().a.b(packet);
  240.                  }
  241.                  
  242.                  player.getWorld().getWorld().a("largesmoke", player.getX(), player.getY() + 0.8D, player.getZ(), 0.0D, 0.0D, 0.0D);
  243.                  
  244.              //player.getWorld().getWorld().f(2000, (int)Math.ceil(behind.x), (int)Math.ceil(behind.y), (int)Math.ceil(behind.z), 0);
  245.              }
  246.            
  247.         }
  248.         return;
  249.     }
  250.  
  251.     public boolean onDamage(PluginLoader.DamageType type,BaseEntity attacker,BaseEntity defender,int amount){
  252.         if (!(defender instanceof Player)) {
  253.             return false;
  254.         }
  255.         Player p = (Player) defender;
  256.         if (inACar(p.getName())) {
  257.             BaseVehicle veh = (BaseVehicle) p.getRidingEntity();
  258.             if (veh.getMotionY() != (double) 0) {
  259.                 return true;
  260.             }
  261.  
  262.         }
  263.         return false;
  264.     }
  265.  
  266.     public java.lang.Boolean onVehicleCollision(BaseVehicle veh, BaseEntity ent){
  267.         if (!props.hitDamage) {
  268.             return false;
  269.         }
  270.         if (!(veh instanceof Minecart)) {
  271.             return false;
  272.         }
  273.         Minecart cart = (Minecart) veh;
  274.  
  275.         if (!(ent instanceof Player)) {
  276.         return false;
  277.         }
  278.         Player player = (Player)ent;
  279.  
  280.         if (cart.getPassenger() == null) {
  281.             return false;
  282.         }
  283.         double x = utils.getVelocity(cart.getEntity()).getX();
  284.         double y = utils.getVelocity(cart.getEntity()).getY();
  285.         double z = utils.getVelocity(cart.getEntity()).getZ();
  286.         if (x < 0) {
  287.             x = -x;
  288.         }
  289.         if (y < 0) {
  290.             y = -y;
  291.         }
  292.         if (z < 0) {
  293.             z = -z;
  294.         }
  295.         if (x < 0.3 && y < 0.3 && z < 0.3) {
  296.             return false;
  297.         }
  298.         double speed = (x * z) / 2;
  299.         double mult = props.hitPower / 5;
  300.         utils.setVelocity((utils.getVelocity(cart.getEntity()).setY(0.5).multiply(mult)), ent.getEntity());
  301.         double damage = props.hitDamageAmount;
  302.         int health = player.getHealth()-((int) (damage * speed));
  303.         utils.setHealthPlayer(player, health);
  304.         if (props.carExplode){
  305.         cart.getWorld().explode(cart, cart.getX(), cart.getY(), cart.getZ(), 5, true, true);
  306.         }
  307.         return false;
  308.     }
  309.  
  310.     public boolean onBlockRightClick(Player player,Block block,Item itemInHand){
  311.         if (player.getItemInHand() == 328) {
  312.             int iar = block.getType();
  313.             if (iar == 66 || iar == 28 || iar == 27) {
  314.                 return false;
  315.             }
  316.             if (!props.cEnable) {
  317.                 return false;
  318.             }
  319.             if (props.placePerms) {
  320.                 if (!player.canUseCommand(props.placePerm)) {
  321.                     player.sendMessage(props.errorColor + "You do not have the "+ props.placePerm+ " permission needed to place cars!");
  322.                     return false;
  323.                 }
  324.             }
  325.             Location loc = utils.locationAdd(block.getLocation(), 0, 1, 0);
  326.             Minecart m = new Minecart(loc.getWorld(), loc.x,loc.y,loc.z, Minecart.Type.Minecart);
  327.             utils.setRotationPitch(0, m.getEntity());
  328.             player.sendMessage(props.infoColor+ "You placed a car! Cars can be driven with similar controls to a boat!");
  329.             if (player.getCreativeMode() != 1) {
  330.                 player.getInventory().removeItem(new Item(328,1));
  331.             }
  332.         }
  333.         if (inACar(player.getName())) {
  334.             if (props.fuel) {
  335.                 String[] parts = props.fuelCheck.split(":");
  336.                 int id = Integer.parseInt(parts[0]);
  337.                 int data = 0;
  338.                 Boolean hasdata = false;
  339.                 if (parts.length > 1) {
  340.                     hasdata = true;
  341.                     data = Integer.parseInt(parts[1]);
  342.                 }
  343.                 if (player.getItemInHand() == id) {
  344.                     Boolean valid = true;
  345.                     if (hasdata) {
  346.                         int tdata = ((int) player.getItemStackInHand().getDamage());
  347.                         if (!(tdata == data)) {
  348.                             valid = false;
  349.                         }
  350.                     }
  351.                     if (valid) {
  352.                         player.chat("/fuel view");
  353.                     }
  354.                 }
  355.             }
  356.         }
  357.         int LowBoostId = props.lBoost;
  358.         int MedBoostId = props.mBoost;
  359.         int HighBoostId = props.hbBoost;
  360.         float bid = player.getItemInHand();
  361.        
  362.         if (bid == LowBoostId) {
  363.             if (inACar(player.getName())) {
  364.                 boolean boosting = carBoost(player.getName(), 10,3000, props.defSpeed);
  365.                 if (boosting) {
  366.                     if (player.getCreativeMode() != 1) {
  367.                         player.getInventory().removeItem(new Item(LowBoostId,1));
  368.                     }
  369.                     player.sendMessage(props.successColor+ "Initiated low level boost!");
  370.                     return false;
  371.                 } else {
  372.                     player.sendMessage(props.errorColor + "Already boosting!");
  373.                 }
  374.                 return false;
  375.             }
  376.         }
  377.         if (bid == MedBoostId) {
  378.             if (inACar(player.getName())) {
  379.                 boolean boosting = carBoost(player.getName(), 20,6000, props.defSpeed);
  380.                 if (boosting) {
  381.                     if (player.getCreativeMode() != 1) {
  382.                         player.getInventory().removeItem(new Item(MedBoostId,1));
  383.                     }
  384.                     player.sendMessage(props.successColor+ "Initiated medium level boost!");
  385.                     return false;
  386.                 } else {
  387.                     player.sendMessage(props.errorColor + "Already boosting!");
  388.                 }
  389.                 return false;
  390.             }
  391.         }
  392.         if (bid == HighBoostId) {
  393.             if (inACar(player.getName())) {
  394.                 boolean boosting = carBoost(player.getName(), 50,10000, props.defSpeed);
  395.                 if (boosting) {
  396.                     if (player.getCreativeMode() != 1) {
  397.                         player.getInventory().removeItem(new Item(HighBoostId,1));
  398.                     }
  399.                     player.sendMessage(props.successColor+ "Initiated high level boost!");
  400.                     return false;
  401.                 } else {
  402.                     player.sendMessage(props.errorColor + "Already boosting!");
  403.                 }
  404.                 return false;
  405.             }
  406.         }
  407.  
  408.         return false;
  409.     }
  410.  
  411. }
Advertisement
Add Comment
Please, Sign In to add comment