Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.HashMap;
- import java.util.List;
- public class CCListener extends PluginListener {
- CCProps props;
- CanaryCars plugin;
- BlockLocator locator = new BlockLocator();
- CCUtils utils = new CCUtils(props);
- public void Boost(final double current, final double power, final long sleep, final String p){
- new Thread() {
- public void run() {
- World w = etc.getServer().getPlayer(p).getLocation().getWorld();
- w.playSound(etc.getServer().getPlayer(p).getLocation(), Sound.FIZZ, 10, -2);
- double speed = current + power;
- plugin.carBoosts.put(p, speed);
- try {
- Thread.sleep(sleep);
- } catch (InterruptedException e) {
- plugin.carBoosts.remove(p);
- return;
- }
- plugin.carBoosts.remove(p);
- return;
- }
- }.start();
- }
- public CCListener(CCProps props, CanaryCars plugin){
- this.props = props;
- this.plugin = plugin;
- }
- public boolean inACar(String playername) {
- Player p = etc.getServer().getPlayer(playername);
- if (p == null) {
- return false;
- }
- if (p.getRidingEntity() == null){
- return false;
- }
- if (!p.getRidingEntity().getName().equalsIgnoreCase("Minecartrideable")){
- return false;
- }
- Minecart m = new Minecart((OEntityMinecart) p.getRidingEntity().getEntity());
- Location loc = m.getLocation();
- float id = utils.getBlock(loc).getType();
- if (id == 27 || id == 66 || id == 28 || id == 157) {
- return false;
- }
- return true;
- }
- public void ResetCarBoost(String playername, Minecart car,double defaultSpeed) {
- String p = playername;
- World w = etc.getServer().getPlayer(p).getLocation().getWorld();
- w.playSound(etc.getServer().getPlayer(p).getLocation(),Sound.AMBIENT_CAVE, 10, -2);
- if (plugin.carBoosts.containsKey(p)) {
- plugin.carBoosts.remove(p);
- }
- return;
- }
- public boolean carBoost(String playerName, double power, long lengthMillis, double defaultSpeed) {
- final String p = playerName;
- final double defMult = defaultSpeed;
- double Cur = defMult;
- if (plugin.carBoosts.containsKey(p)) {
- Cur = plugin.carBoosts.get(p);
- }
- if (Cur > defMult) {
- // Already boosting!
- return false;
- }
- final double current = Cur;
- Boost(current, power, lengthMillis, playerName);
- return true;
- }
- public boolean isPlayerOnRoad(Block blockUnder){
- int id = blockUnder.getType();
- Boolean valid = true;
- List<String> ids = props.roadBlocks;
- if (ids.contains(id+"") || ids.contains(id+":"+blockUnder.getData())){
- valid = true;
- }else{
- valid = false;
- }
- return valid;
- }
- public void onVehicleUpdate(BaseVehicle vehicle){
- Location under = utils.locationAdd(vehicle.getLocation(), 0, -1, 0);
- Block underblock = utils.getBlock(under);//cartlevel
- Block underunderblock = utils.getBlock(utils.locationAdd(underblock.getLocation(), 0, -1, 0));//undercart
- Location behind = locator.blockBack(underblock.getLocation()).getLocation();
- Location before = locator.blockFront(underblock.getLocation()).getLocation();
- Block blockBefore = locator.blockFront(underblock.getLocation());
- Vector playerVelocity;
- double defMultiplier = props.defSpeed;
- List<String> ignoreJump = props.jumpIgnore;
- HashMap<String, Integer> speedMod = props.idSpeed;
- double multiplier = defMultiplier;
- Location loc;
- Minecart car;
- Player player;
- Player passenger = vehicle.getPassenger();
- List<String> barriers = props.barriers;
- int maxspeed = 5;
- if (!(passenger instanceof Player)) {
- return;
- }
- if (vehicle instanceof Minecart) {
- if (!props.cEnable) {
- return;
- }
- player = (Player) passenger;
- car = (Minecart) vehicle;
- loc = car.getLocation();
- playerVelocity = utils.getVelocity(player.getEntity());
- if (props.requireRoad) {
- if (!isPlayerOnRoad(underunderblock)){
- return;
- }
- }
- 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) {
- return;
- }
- if ((player.getRidingEntity() == null)) {
- return;
- }
- if (props.perms) {
- if (!player.canUseCommand(props.drivePerm)) {
- player.sendMessage(props.infoColor + "You don't have the permission ucars.cars required to drive a car!");
- return;
- }
- }
- if (playerVelocity.getX() == 0 && playerVelocity.getZ() == 0) {
- return;
- }
- if (plugin.carBoosts.containsKey(player.getName())){
- maxspeed = (int)Math.ceil(plugin.carBoosts.get(player.getName()));
- }
- int blockBoostId = props.bBoost;
- int tid = underunderblock.getType();
- if (tid == blockBoostId) {
- if (inACar(player.getName())) {
- carBoost(player.getName(), 20, 6000,props.defSpeed);
- }
- }
- int HighblockBoostId = props.hbBoost;
- if (tid == HighblockBoostId) {
- if (inACar(player.getName())) {
- carBoost(player.getName(), 50, 8000,props.defSpeed);
- }
- }
- int ResetblockBoostId = props.rbBoost;
- if (tid == ResetblockBoostId) {
- if (inACar(player.getName())) {
- ResetCarBoost(player.getName(), car,props.defSpeed);
- }
- }
- //Vector cur = car.getVelocity();
- Vector Velocity = playerVelocity.multiply(multiplier);
- int jumpBlock = props.jBlock;
- if (tid == jumpBlock) {
- double jumpAmount = props.jAmount;
- Velocity.setY(jumpAmount);
- }
- if (speedMod.containsKey(underunderblock.getType()+"")){
- multiplier = speedMod.get(underunderblock.getType()+"");
- }
- if (speedMod.containsKey(underunderblock.getType()+":"+underunderblock.getData())){
- multiplier = speedMod.get(underunderblock.getType()+":"+underunderblock.getData());
- }
- if (plugin.carBoosts.containsKey(player.getName())) {
- multiplier = plugin.carBoosts.get(player.getName());
- }
- if (props.fuel) {
- double fuel = 0;
- if (plugin.playerFuel.containsKey(player.getName())) {
- fuel = plugin.playerFuel.get(player.getName());
- }
- if (fuel < 0.1) {
- player.sendMessage(props.errorColor+ "You don't have any fuel left!");
- return;
- }
- int amount = 0 + (int) (Math.random() * 250);
- if (amount == 10) {
- fuel = fuel - 0.1;
- fuel = (double) Math.round(fuel * 10) / 10;
- plugin.playerFuel.put(player.getName(), fuel);
- }
- }
- 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())){
- Location up = utils.locationAdd(before, 0, 1, 0);
- if (utils.getBlock(up).getType() == 0){
- Velocity = Velocity.setY(Velocity.getY()+10);
- }
- }
- if (plugin.carBoosts.containsKey(player.getName())){
- car.setSprinting(true);
- player.setSprinting(true);
- car.getEntity().i((int)Math.ceil(maxspeed));
- }else{
- car.setSprinting(false);
- player.setSprinting(false);
- }
- player.sendMessage(locator.blockFront(car.getLocation())+"");
- utils.setRotationPitch(player.getRotation(), car.getEntity());
- utils.setVelocity(Velocity, car.getEntity());
- if (props.smoke){
- for (Player p : etc.getServer().getPlayerList()){
- OPacket61DoorChange packet = new OPacket61DoorChange(2000, (int)etc.floor(player.getX()), (int)etc.floor(player.getY()), (int)etc.floor(player.getZ()), 0, false);
- p.getUser().a.b(packet);
- }
- player.getWorld().getWorld().a("largesmoke", player.getX(), player.getY() + 0.8D, player.getZ(), 0.0D, 0.0D, 0.0D);
- //player.getWorld().getWorld().f(2000, (int)Math.ceil(behind.x), (int)Math.ceil(behind.y), (int)Math.ceil(behind.z), 0);
- }
- }
- return;
- }
- public boolean onDamage(PluginLoader.DamageType type,BaseEntity attacker,BaseEntity defender,int amount){
- if (!(defender instanceof Player)) {
- return false;
- }
- Player p = (Player) defender;
- if (inACar(p.getName())) {
- BaseVehicle veh = (BaseVehicle) p.getRidingEntity();
- if (veh.getMotionY() != (double) 0) {
- return true;
- }
- }
- return false;
- }
- public java.lang.Boolean onVehicleCollision(BaseVehicle veh, BaseEntity ent){
- if (!props.hitDamage) {
- return false;
- }
- if (!(veh instanceof Minecart)) {
- return false;
- }
- Minecart cart = (Minecart) veh;
- if (!(ent instanceof Player)) {
- return false;
- }
- Player player = (Player)ent;
- if (cart.getPassenger() == null) {
- return false;
- }
- double x = utils.getVelocity(cart.getEntity()).getX();
- double y = utils.getVelocity(cart.getEntity()).getY();
- double z = utils.getVelocity(cart.getEntity()).getZ();
- if (x < 0) {
- x = -x;
- }
- if (y < 0) {
- y = -y;
- }
- if (z < 0) {
- z = -z;
- }
- if (x < 0.3 && y < 0.3 && z < 0.3) {
- return false;
- }
- double speed = (x * z) / 2;
- double mult = props.hitPower / 5;
- utils.setVelocity((utils.getVelocity(cart.getEntity()).setY(0.5).multiply(mult)), ent.getEntity());
- double damage = props.hitDamageAmount;
- int health = player.getHealth()-((int) (damage * speed));
- utils.setHealthPlayer(player, health);
- if (props.carExplode){
- cart.getWorld().explode(cart, cart.getX(), cart.getY(), cart.getZ(), 5, true, true);
- }
- return false;
- }
- public boolean onBlockRightClick(Player player,Block block,Item itemInHand){
- if (player.getItemInHand() == 328) {
- int iar = block.getType();
- if (iar == 66 || iar == 28 || iar == 27) {
- return false;
- }
- if (!props.cEnable) {
- return false;
- }
- if (props.placePerms) {
- if (!player.canUseCommand(props.placePerm)) {
- player.sendMessage(props.errorColor + "You do not have the "+ props.placePerm+ " permission needed to place cars!");
- return false;
- }
- }
- Location loc = utils.locationAdd(block.getLocation(), 0, 1, 0);
- Minecart m = new Minecart(loc.getWorld(), loc.x,loc.y,loc.z, Minecart.Type.Minecart);
- utils.setRotationPitch(0, m.getEntity());
- player.sendMessage(props.infoColor+ "You placed a car! Cars can be driven with similar controls to a boat!");
- if (player.getCreativeMode() != 1) {
- player.getInventory().removeItem(new Item(328,1));
- }
- }
- if (inACar(player.getName())) {
- if (props.fuel) {
- String[] parts = props.fuelCheck.split(":");
- int id = Integer.parseInt(parts[0]);
- int data = 0;
- Boolean hasdata = false;
- if (parts.length > 1) {
- hasdata = true;
- data = Integer.parseInt(parts[1]);
- }
- if (player.getItemInHand() == id) {
- Boolean valid = true;
- if (hasdata) {
- int tdata = ((int) player.getItemStackInHand().getDamage());
- if (!(tdata == data)) {
- valid = false;
- }
- }
- if (valid) {
- player.chat("/fuel view");
- }
- }
- }
- }
- int LowBoostId = props.lBoost;
- int MedBoostId = props.mBoost;
- int HighBoostId = props.hbBoost;
- float bid = player.getItemInHand();
- if (bid == LowBoostId) {
- if (inACar(player.getName())) {
- boolean boosting = carBoost(player.getName(), 10,3000, props.defSpeed);
- if (boosting) {
- if (player.getCreativeMode() != 1) {
- player.getInventory().removeItem(new Item(LowBoostId,1));
- }
- player.sendMessage(props.successColor+ "Initiated low level boost!");
- return false;
- } else {
- player.sendMessage(props.errorColor + "Already boosting!");
- }
- return false;
- }
- }
- if (bid == MedBoostId) {
- if (inACar(player.getName())) {
- boolean boosting = carBoost(player.getName(), 20,6000, props.defSpeed);
- if (boosting) {
- if (player.getCreativeMode() != 1) {
- player.getInventory().removeItem(new Item(MedBoostId,1));
- }
- player.sendMessage(props.successColor+ "Initiated medium level boost!");
- return false;
- } else {
- player.sendMessage(props.errorColor + "Already boosting!");
- }
- return false;
- }
- }
- if (bid == HighBoostId) {
- if (inACar(player.getName())) {
- boolean boosting = carBoost(player.getName(), 50,10000, props.defSpeed);
- if (boosting) {
- if (player.getCreativeMode() != 1) {
- player.getInventory().removeItem(new Item(HighBoostId,1));
- }
- player.sendMessage(props.successColor+ "Initiated high level boost!");
- return false;
- } else {
- player.sendMessage(props.errorColor + "Already boosting!");
- }
- return false;
- }
- }
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment