This commit is contained in:
Benford 2015-11-10 21:39:04 -05:00
parent 2624f24d5e
commit cf985e2501
10 changed files with 92 additions and 93 deletions

View file

@ -133,6 +133,7 @@ import fr.neatmonster.nocheatplus.hooks.NCPExemptionManager;
@SuppressWarnings("deprecation")
public class GeneralMethods {
public static List<Ability> invincible = new ArrayList<>();
static ProjectKorra plugin;
@ -147,6 +148,7 @@ public class GeneralMethods {
public static ConcurrentHashMap<String, ConcurrentHashMap<Block, BlockCacheElement>> blockProtectionCache = new ConcurrentHashMap<String, ConcurrentHashMap<Block, BlockCacheElement>>();
public static Integer[] nonOpaque = { 0, 6, 8, 9, 10, 11, 27, 28, 30, 31, 32, 37, 38, 39, 40, 50, 51, 55, 59, 66, 68, 69, 70, 72, 75, 76, 77, 78, 83, 90, 93, 94, 104, 105, 106, 111, 115, 119, 127, 131, 132, 175 };
public static Material[] interactable = { Material.ACACIA_DOOR, Material.ACACIA_FENCE_GATE, Material.ANVIL, Material.ARMOR_STAND, Material.BEACON, Material.BED, Material.BED_BLOCK, Material.BIRCH_DOOR, Material.BIRCH_FENCE_GATE, Material.BOAT, Material.BREWING_STAND, Material.BURNING_FURNACE, Material.CAKE_BLOCK, Material.CHEST, Material.COMMAND, Material.DARK_OAK_DOOR, Material.DARK_OAK_FENCE_GATE, Material.DISPENSER, Material.DRAGON_EGG, Material.DROPPER, Material.ENCHANTMENT_TABLE, Material.ENDER_CHEST, Material.ENDER_PORTAL_FRAME, Material.FENCE_GATE, Material.FURNACE, Material.HOPPER, Material.HOPPER_MINECART, Material.COMMAND_MINECART, Material.ITEM_FRAME, Material.JUKEBOX, Material.JUNGLE_DOOR, Material.JUNGLE_FENCE_GATE, Material.LEVER, Material.MINECART, Material.NOTE_BLOCK, Material.PAINTING, Material.SPRUCE_DOOR, Material.SPRUCE_FENCE_GATE, Material.STONE_BUTTON, Material.TRAPPED_CHEST, Material.TRAP_DOOR, Material.WOOD_BUTTON, Material.WOOD_DOOR, Material.WORKBENCH };
// Stands for toggled = false while logging out
public static List<UUID> toggedOut = new ArrayList<UUID>();
@ -1433,6 +1435,10 @@ public class GeneralMethods {
return plugin.getConfig().getBoolean("Properties.ImportEnabled");
}
public static boolean isInteractable(Block block) {
return Arrays.asList(interactable).contains(block.getType());
}
public static boolean isObstructed(Location location1, Location location2) {
Vector loc1 = location1.toVector();
Vector loc2 = location2.toVector();

View file

@ -1,5 +1,65 @@
package com.projectkorra.projectkorra;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
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.block.BlockBreakEvent;
import org.bukkit.event.block.BlockFadeEvent;
import org.bukkit.event.block.BlockFormEvent;
import org.bukkit.event.block.BlockFromToEvent;
import org.bukkit.event.block.BlockIgniteEvent;
import org.bukkit.event.block.BlockPhysicsEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.EntityChangeBlockEvent;
import org.bukkit.event.entity.EntityCombustEvent;
import org.bukkit.event.entity.EntityDamageByBlockEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntityInteractEvent;
import org.bukkit.event.entity.EntityShootBowEvent;
import org.bukkit.event.entity.EntityTargetEvent;
import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
import org.bukkit.event.entity.EntityTeleportEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.event.entity.ProjectileLaunchEvent;
import org.bukkit.event.entity.SlimeSplitEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType.SlotType;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerAnimationEvent;
import org.bukkit.event.player.PlayerGameModeChangeEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerToggleFlightEvent;
import org.bukkit.event.player.PlayerToggleSneakEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.util.Vector;
import com.projectkorra.projectkorra.ability.AvatarState;
import com.projectkorra.projectkorra.ability.api.CoreAbility;
import com.projectkorra.projectkorra.ability.combo.ComboManager;
@ -91,65 +151,6 @@ import com.projectkorra.projectkorra.waterbending.WaterWall;
import com.projectkorra.projectkorra.waterbending.WaterWave;
import com.projectkorra.projectkorra.waterbending.Wave;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
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.block.BlockBreakEvent;
import org.bukkit.event.block.BlockFadeEvent;
import org.bukkit.event.block.BlockFormEvent;
import org.bukkit.event.block.BlockFromToEvent;
import org.bukkit.event.block.BlockIgniteEvent;
import org.bukkit.event.block.BlockPhysicsEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.EntityChangeBlockEvent;
import org.bukkit.event.entity.EntityCombustEvent;
import org.bukkit.event.entity.EntityDamageByBlockEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntityInteractEvent;
import org.bukkit.event.entity.EntityShootBowEvent;
import org.bukkit.event.entity.EntityTargetEvent;
import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
import org.bukkit.event.entity.EntityTeleportEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.event.entity.ProjectileLaunchEvent;
import org.bukkit.event.entity.SlimeSplitEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType.SlotType;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerAnimationEvent;
import org.bukkit.event.player.PlayerGameModeChangeEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerToggleFlightEvent;
import org.bukkit.event.player.PlayerToggleSneakEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.util.Vector;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class PKListener implements Listener {
ProjectKorra plugin;
@ -1302,6 +1303,11 @@ public class PKListener implements Listener {
return;
}
if (GeneralMethods.isInteractable(player.getTargetBlock((Set<Material>)null, 5))) {
event.setCancelled(true);
return;
}
BlockSource.update(player, ClickType.LEFT_CLICK);
AirScooter.check(player);

View file

@ -76,6 +76,7 @@ public class AirBlast extends CoreAbility {
if (location.getBlock().isLiquid()) {
return;
}
//reloadVariables();
source = burst;
@ -146,7 +147,7 @@ public class AirBlast extends CoreAbility {
return;
}
AirMethods.playAirbendingParticles(origin, 6);
AirMethods.playAirbendingParticles(origin, 4);
// origin.getWorld().playEffect(origin, Effect.SMOKE, 4,
// (int) originselectrange);
}
@ -175,7 +176,7 @@ public class AirBlast extends CoreAbility {
private void advanceLocation() {
if (showParticles)
AirMethods.playAirbendingParticles(location, 6);
AirMethods.playAirbendingParticles(location, 6, 0.275F, 0.275F, 0.275F);
if (GeneralMethods.rand.nextInt(4) == 0) {
AirMethods.playAirbendingSound(location);
}

View file

@ -116,6 +116,8 @@ public class AirMethods {
return ParticleEffect.SMOKE;
else if (particle.equalsIgnoreCase("smoke"))
return ParticleEffect.CLOUD;
else if (particle.equalsIgnoreCase("smallsmoke"))
return ParticleEffect.SNOW_SHOVEL;
else
return ParticleEffect.CLOUD;
}
@ -141,23 +143,7 @@ public class AirMethods {
* @param zOffset The zOffset to use
*/
public static void playAirbendingParticles(Location loc, int amount, float xOffset, float yOffset, float zOffset) {
switch (getAirbendingParticles()) {
case SPELL:
for (int i = 0; i < amount; i++) {
ParticleEffect.SPELL.display(loc, xOffset, yOffset, zOffset, 0, 1);
}
break;
case SMOKE:
for (int i = 0; i < amount; i++) {
ParticleEffect.SMOKE.display(loc, xOffset, yOffset, zOffset, 0, 1);
}
break;
default:
for (int i = 0; i < amount; i++) {
ParticleEffect.CLOUD.display(loc, xOffset, yOffset, zOffset, 0, 1);
}
break;
}
getAirbendingParticles().display(loc, xOffset, yOffset, zOffset, 0, amount);
}
/**

View file

@ -147,6 +147,8 @@ public class AirSpout extends CoreAbility {
}
private void rotateAirColumn(Block block) {
if (player.getWorld() != block.getWorld())
return;
if (System.currentTimeMillis() >= time + interval) {
time = System.currentTimeMillis();
@ -172,7 +174,7 @@ public class AirSpout extends CoreAbility {
Location effectloc2 = new Location(location.getWorld(), location.getX(), block.getY() + i, location.getZ());
AirMethods.playAirbendingParticles(effectloc2, 6);
AirMethods.playAirbendingParticles(effectloc2, 3, 0.4F, 0.4F, 0.4F);
// location.getWorld().playEffect(effectloc2, Effect.SMOKE,
// (int) directions[index], (int) height + 5);

View file

@ -8,6 +8,7 @@ import com.projectkorra.projectkorra.ability.StockAbility;
import com.projectkorra.projectkorra.ability.api.CoreAbility;
import com.projectkorra.projectkorra.command.Commands;
import com.projectkorra.projectkorra.earthbending.EarthMethods;
import com.projectkorra.projectkorra.object.HorizontalVelocityTracker;
import com.projectkorra.projectkorra.util.Flight;
import com.projectkorra.projectkorra.waterbending.WaterSpout;
@ -59,7 +60,7 @@ public class AirSuction extends CoreAbility {
if (player.getEyeLocation().getBlock().isLiquid()) {
return;
}
if (AirSpout.getPlayers().contains(player.getUniqueId()) || WaterSpout.getPlayers().contains(player)) //TODO: UPDATE THIS LINE
if (AirSpout.getPlayers().contains(player) || WaterSpout.getPlayers().contains(player))
return;
/* End Initial Check */
//reloadVariables();
@ -146,7 +147,7 @@ public class AirSuction extends CoreAbility {
}
private void advanceLocation() {
AirMethods.playAirbendingParticles(location, 6);
AirMethods.playAirbendingParticles(location, 6, 0.275F, 0.275F, 0.275F);
if (GeneralMethods.rand.nextInt(4) == 0) {
AirMethods.playAirbendingSound(location);
}
@ -257,6 +258,7 @@ public class AirSuction extends CoreAbility {
continue;
}
GeneralMethods.setVelocity(entity, velocity);
new HorizontalVelocityTracker(entity, player, 200l);
entity.setFallDistance(0);
if (entity.getEntityId() != player.getEntityId() && entity instanceof Player) {
new Flight((Player) entity, player);

View file

@ -162,7 +162,7 @@ public class AirSwipe extends CoreAbility {
}
}
} else {
AirMethods.playAirbendingParticles(location, 3);
AirMethods.playAirbendingParticles(location, 3, 0.2F, 0.2F, 0);
if (GeneralMethods.rand.nextInt(4) == 0) {
AirMethods.playAirbendingSound(location);
}

View file

@ -155,8 +155,8 @@ public class FireBlast extends CoreAbility {
private void advanceLocation() {
if (showParticles) {
//ParticleEffect.RED_DUST.display((float) 16, (float) 111, (float) 227, 0.01F, 0, location, 256D);
ParticleEffect.FLAME.display(location, 0.4F, 0.4F, 0.4F, 0, 8);
ParticleEffect.SMOKE.display(location, 0.4F, 0.4F, 0.4F, 0, 3);
ParticleEffect.FLAME.display(location, 0.275F, 0.275F, 0.275F, 0, 6);
ParticleEffect.SMOKE.display(location, 0.3F, 0.3F, 0.3F, 0, 3);
}
location = location.add(direction.clone().multiply(speedfactor));
if (rand.nextInt(4) == 0) {

View file

@ -5,11 +5,11 @@ import com.projectkorra.projectkorra.GeneralMethods;
import com.projectkorra.projectkorra.ProjectKorra;
import com.projectkorra.projectkorra.ability.AbilityModuleManager;
import com.projectkorra.projectkorra.util.Information;
import com.projectkorra.projectkorra.util.ParticleEffect;
import com.projectkorra.rpg.RPGMethods;
import com.projectkorra.rpg.WorldEvents;
import org.bukkit.ChatColor;
import org.bukkit.Effect;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
@ -152,8 +152,8 @@ public class FireMethods {
GeneralMethods.displayColoredParticle(loc, "#01E1FF");
}
public static void playFirebendingParticles(Location loc) {
loc.getWorld().playEffect(loc, Effect.MOBSPAWNER_FLAMES, 0, 15);
public static void playFirebendingParticles(Location loc, int amount, float xOffset, float yOffset, float zOffset) {
ParticleEffect.FLAME.display(loc, xOffset, yOffset, zOffset, 0, amount);
}
public static void playFirebendingSound(Location loc) {

View file

@ -57,17 +57,13 @@ public class HorizontalVelocityTracker {
List<Block> blocks = GeneralMethods.getBlocksAroundPoint(entity.getLocation(), 1.5);
if (entity.isOnGround()) {
remove();
return;
}
for (Block b : blocks) {
if (WaterMethods.isWater(b)) {
remove();
return;
}
}
if (thisVelocity.length() < lastVelocity.length()) {
if ((diff.getX() > 1 || diff.getX() < -1) || (diff.getZ() > 1 || diff.getZ() < -1)) {
impactLocation = entity.getLocation();