mirror of
https://github.com/TotalFreedomMC/TF-ProjectKorra.git
synced 2025-02-11 03:30:10 +00:00
Merge pull request #5 from PhanaticD/wip-1.13
further updates and fixes
This commit is contained in:
commit
aa2c74ba31
54 changed files with 712 additions and 808 deletions
9
pom.xml
9
pom.xml
|
@ -183,9 +183,18 @@
|
|||
<target>1.8</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>3.1.1</version>
|
||||
<configuration>
|
||||
<outputDirectory>${dir}</outputDirectory>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<properties>
|
||||
<dir>${project.build.directory}</dir>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
</project>
|
|
@ -1,22 +1,5 @@
|
|||
package com.projectkorra.projectkorra;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.projectkorra.projectkorra.Element.SubElement;
|
||||
import com.projectkorra.projectkorra.ability.Ability;
|
||||
import com.projectkorra.projectkorra.ability.AvatarAbility;
|
||||
|
@ -33,6 +16,18 @@ import com.projectkorra.projectkorra.storage.DBConnection;
|
|||
import com.projectkorra.projectkorra.util.Cooldown;
|
||||
import com.projectkorra.projectkorra.util.DBCooldownManager;
|
||||
import com.projectkorra.projectkorra.waterbending.blood.Bloodbending;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
* Class that presents a player and stores all bending information about the
|
||||
|
@ -152,17 +147,18 @@ public class BendingPlayer {
|
|||
|
||||
public Map<String, Cooldown> loadCooldowns() {
|
||||
final Map<String, Cooldown> cooldowns = new ConcurrentHashMap<>();
|
||||
try (ResultSet rs = DBConnection.sql.readQuery("SELECT * FROM pk_cooldowns WHERE uuid = '" + this.uuid.toString() + "'")) {
|
||||
while (rs.next()) {
|
||||
final int cooldownId = rs.getInt("cooldown_id");
|
||||
final long value = rs.getLong("value");
|
||||
final String name = cooldownManager.getCooldownName(cooldownId);
|
||||
cooldowns.put(name, new Cooldown(value, true));
|
||||
if (ProjectKorra.isDatabaseCooldownsEnabled()) {
|
||||
try (ResultSet rs = DBConnection.sql.readQuery("SELECT * FROM pk_cooldowns WHERE uuid = '" + this.uuid.toString() + "'")) {
|
||||
while (rs.next()) {
|
||||
final int cooldownId = rs.getInt("cooldown_id");
|
||||
final long value = rs.getLong("value");
|
||||
final String name = cooldownManager.getCooldownName(cooldownId);
|
||||
cooldowns.put(name, new Cooldown(value, true));
|
||||
}
|
||||
} catch (final SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
catch (final SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return cooldowns;
|
||||
}
|
||||
|
||||
|
|
|
@ -1164,19 +1164,19 @@ public class GeneralMethods {
|
|||
Block blockHolder = loc.getBlock();
|
||||
int y = 0;
|
||||
// Only one of these while statements will go
|
||||
while (blockHolder.getType() != Material.AIR && Math.abs(y) < Math.abs(positiveY)) {
|
||||
while (!ElementalAbility.isAir(blockHolder.getType()) && Math.abs(y) < Math.abs(positiveY)) {
|
||||
y++;
|
||||
final Block tempBlock = loc.clone().add(0, y, 0).getBlock();
|
||||
if (tempBlock.getType() == Material.AIR) {
|
||||
if (ElementalAbility.isAir(tempBlock.getType())) {
|
||||
return blockHolder;
|
||||
}
|
||||
blockHolder = tempBlock;
|
||||
}
|
||||
|
||||
while (blockHolder.getType() == Material.AIR && Math.abs(y) < Math.abs(negativeY)) {
|
||||
while (ElementalAbility.isAir(blockHolder.getType()) && Math.abs(y) < Math.abs(negativeY)) {
|
||||
y--;
|
||||
blockHolder = loc.clone().add(0, y, 0).getBlock();
|
||||
if (blockHolder.getType() != Material.AIR) {
|
||||
if (!ElementalAbility.isAir(blockHolder.getType())) {
|
||||
return blockHolder;
|
||||
}
|
||||
}
|
||||
|
@ -1187,20 +1187,20 @@ public class GeneralMethods {
|
|||
Block blockHolder = loc.getBlock();
|
||||
int y = 0;
|
||||
// Only one of these while statements will go
|
||||
while (blockHolder.getType() != Material.AIR && Math.abs(y) < Math.abs(negativeY)) {
|
||||
while (!ElementalAbility.isAir(blockHolder.getType()) && Math.abs(y) < Math.abs(negativeY)) {
|
||||
y--;
|
||||
final Block tempblock = loc.clone().add(0, y, 0).getBlock();
|
||||
if (tempblock.getType() == Material.AIR) {
|
||||
if (ElementalAbility.isAir(tempblock.getType())) {
|
||||
return blockHolder;
|
||||
}
|
||||
|
||||
blockHolder = tempblock;
|
||||
}
|
||||
|
||||
while (blockHolder.getType() != Material.AIR && Math.abs(y) < Math.abs(positiveY)) {
|
||||
while (!ElementalAbility.isAir(blockHolder.getType()) && Math.abs(y) < Math.abs(positiveY)) {
|
||||
y++;
|
||||
blockHolder = loc.clone().add(0, y, 0).getBlock();
|
||||
if (blockHolder.getType() == Material.AIR) {
|
||||
if (ElementalAbility.isAir(blockHolder.getType())) {
|
||||
return blockHolder;
|
||||
}
|
||||
}
|
||||
|
@ -1659,13 +1659,13 @@ public class GeneralMethods {
|
|||
String prefix = "";
|
||||
|
||||
final boolean chatEnabled = ConfigManager.languageConfig.get().getBoolean("Chat.Enable");
|
||||
if (bPlayer.getElements().size() > 1) {
|
||||
|
||||
prefix = ChatColor.WHITE + ChatColor.translateAlternateColorCodes('&', ConfigManager.languageConfig.get().getString("Chat.Prefixes.Nonbender")) + " ";
|
||||
if (player.hasPermission("bending.avatar") || (bPlayer.hasElement(Element.AIR) && bPlayer.hasElement(Element.EARTH) && bPlayer.hasElement(Element.FIRE) && bPlayer.hasElement(Element.WATER))) {
|
||||
prefix = Element.AVATAR.getPrefix();
|
||||
} else if (bPlayer.getElements().size() == 1) {
|
||||
} else if (bPlayer.getElements().size() > 0) {
|
||||
element = bPlayer.getElements().get(0);
|
||||
prefix = element.getPrefix();
|
||||
} else {
|
||||
prefix = ChatColor.WHITE + ChatColor.translateAlternateColorCodes('&', ConfigManager.languageConfig.get().getString("Chat.Prefixes.Nonbender")) + " ";
|
||||
}
|
||||
|
||||
if (chatEnabled) {
|
||||
|
@ -2158,11 +2158,11 @@ public class GeneralMethods {
|
|||
}
|
||||
|
||||
public static FallingBlock spawnFallingBlock(final Location loc, final Material type) {
|
||||
return spawnFallingBlock(loc, type, null);
|
||||
return spawnFallingBlock(loc, type, type.createBlockData());
|
||||
}
|
||||
|
||||
public static FallingBlock spawnFallingBlock(final Location loc, final Material type, final BlockData data) {
|
||||
return loc.getWorld().spawnFallingBlock(loc, type.createBlockData(data.getAsString()));
|
||||
return loc.getWorld().spawnFallingBlock(loc, data);
|
||||
}
|
||||
|
||||
public static void sendBrandingMessage(final CommandSender sender, final String message) {
|
||||
|
|
|
@ -1,122 +1,21 @@
|
|||
package com.projectkorra.projectkorra;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Statistic;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
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.*;
|
||||
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.EntityDamageEvent.DamageModifier;
|
||||
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.EntityToggleGlideEvent;
|
||||
import org.bukkit.event.entity.EntityToggleSwimEvent;
|
||||
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.player.AsyncPlayerChatEvent;
|
||||
import org.bukkit.event.player.PlayerAnimationEvent;
|
||||
import org.bukkit.event.player.PlayerBucketEmptyEvent;
|
||||
import org.bukkit.event.player.PlayerChangedWorldEvent;
|
||||
import org.bukkit.event.player.PlayerGameModeChangeEvent;
|
||||
import org.bukkit.event.player.PlayerInteractAtEntityEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerItemDamageEvent;
|
||||
import org.bukkit.event.player.PlayerItemHeldEvent;
|
||||
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.PlayerSwapHandItemsEvent;
|
||||
import org.bukkit.event.player.PlayerToggleFlightEvent;
|
||||
import org.bukkit.event.player.PlayerToggleSneakEvent;
|
||||
import org.bukkit.inventory.EquipmentSlot;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.Element.SubElement;
|
||||
import com.projectkorra.projectkorra.ability.Ability;
|
||||
import com.projectkorra.projectkorra.ability.AddonAbility;
|
||||
import com.projectkorra.projectkorra.ability.AirAbility;
|
||||
import com.projectkorra.projectkorra.ability.AvatarAbility;
|
||||
import com.projectkorra.projectkorra.ability.ChiAbility;
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.ability.EarthAbility;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.ability.FireAbility;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.ability.*;
|
||||
import com.projectkorra.projectkorra.ability.util.ComboManager;
|
||||
import com.projectkorra.projectkorra.ability.util.MultiAbilityManager;
|
||||
import com.projectkorra.projectkorra.ability.util.PassiveManager;
|
||||
import com.projectkorra.projectkorra.airbending.AirBlast;
|
||||
import com.projectkorra.projectkorra.airbending.AirBurst;
|
||||
import com.projectkorra.projectkorra.airbending.AirScooter;
|
||||
import com.projectkorra.projectkorra.airbending.AirShield;
|
||||
import com.projectkorra.projectkorra.airbending.AirSpout;
|
||||
import com.projectkorra.projectkorra.airbending.AirSuction;
|
||||
import com.projectkorra.projectkorra.airbending.AirSwipe;
|
||||
import com.projectkorra.projectkorra.airbending.Suffocate;
|
||||
import com.projectkorra.projectkorra.airbending.Tornado;
|
||||
import com.projectkorra.projectkorra.airbending.*;
|
||||
import com.projectkorra.projectkorra.airbending.flight.FlightMultiAbility;
|
||||
import com.projectkorra.projectkorra.airbending.passive.GracefulDescent;
|
||||
import com.projectkorra.projectkorra.avatar.AvatarState;
|
||||
import com.projectkorra.projectkorra.chiblocking.AcrobatStance;
|
||||
import com.projectkorra.projectkorra.chiblocking.HighJump;
|
||||
import com.projectkorra.projectkorra.chiblocking.Paralyze;
|
||||
import com.projectkorra.projectkorra.chiblocking.QuickStrike;
|
||||
import com.projectkorra.projectkorra.chiblocking.RapidPunch;
|
||||
import com.projectkorra.projectkorra.chiblocking.Smokescreen;
|
||||
import com.projectkorra.projectkorra.chiblocking.SwiftKick;
|
||||
import com.projectkorra.projectkorra.chiblocking.WarriorStance;
|
||||
import com.projectkorra.projectkorra.chiblocking.*;
|
||||
import com.projectkorra.projectkorra.chiblocking.passive.Acrobatics;
|
||||
import com.projectkorra.projectkorra.chiblocking.passive.ChiPassive;
|
||||
import com.projectkorra.projectkorra.command.Commands;
|
||||
import com.projectkorra.projectkorra.configuration.ConfigManager;
|
||||
import com.projectkorra.projectkorra.earthbending.Catapult;
|
||||
import com.projectkorra.projectkorra.earthbending.Collapse;
|
||||
import com.projectkorra.projectkorra.earthbending.CollapseWall;
|
||||
import com.projectkorra.projectkorra.earthbending.EarthArmor;
|
||||
import com.projectkorra.projectkorra.earthbending.EarthBlast;
|
||||
import com.projectkorra.projectkorra.earthbending.EarthGrab;
|
||||
import com.projectkorra.projectkorra.earthbending.*;
|
||||
import com.projectkorra.projectkorra.earthbending.EarthGrab.GrabMode;
|
||||
import com.projectkorra.projectkorra.earthbending.EarthSmash;
|
||||
import com.projectkorra.projectkorra.earthbending.EarthTunnel;
|
||||
import com.projectkorra.projectkorra.earthbending.RaiseEarth;
|
||||
import com.projectkorra.projectkorra.earthbending.RaiseEarthWall;
|
||||
import com.projectkorra.projectkorra.earthbending.Shockwave;
|
||||
import com.projectkorra.projectkorra.earthbending.Tremorsense;
|
||||
import com.projectkorra.projectkorra.earthbending.combo.EarthPillars;
|
||||
import com.projectkorra.projectkorra.earthbending.lava.LavaFlow;
|
||||
import com.projectkorra.projectkorra.earthbending.lava.LavaFlow.AbilityType;
|
||||
|
@ -130,44 +29,18 @@ import com.projectkorra.projectkorra.event.EntityBendingDeathEvent;
|
|||
import com.projectkorra.projectkorra.event.HorizontalVelocityChangeEvent;
|
||||
import com.projectkorra.projectkorra.event.PlayerChangeElementEvent;
|
||||
import com.projectkorra.projectkorra.event.PlayerJumpEvent;
|
||||
import com.projectkorra.projectkorra.firebending.Blaze;
|
||||
import com.projectkorra.projectkorra.firebending.BlazeArc;
|
||||
import com.projectkorra.projectkorra.firebending.BlazeRing;
|
||||
import com.projectkorra.projectkorra.firebending.FireBlast;
|
||||
import com.projectkorra.projectkorra.firebending.FireBlastCharged;
|
||||
import com.projectkorra.projectkorra.firebending.FireBurst;
|
||||
import com.projectkorra.projectkorra.firebending.FireJet;
|
||||
import com.projectkorra.projectkorra.firebending.FireManipulation;
|
||||
import com.projectkorra.projectkorra.firebending.*;
|
||||
import com.projectkorra.projectkorra.firebending.FireManipulation.FireManipulationType;
|
||||
import com.projectkorra.projectkorra.firebending.FireShield;
|
||||
import com.projectkorra.projectkorra.firebending.HeatControl;
|
||||
import com.projectkorra.projectkorra.firebending.HeatControl.HeatControlType;
|
||||
import com.projectkorra.projectkorra.firebending.Illumination;
|
||||
import com.projectkorra.projectkorra.firebending.WallOfFire;
|
||||
import com.projectkorra.projectkorra.firebending.combustion.Combustion;
|
||||
import com.projectkorra.projectkorra.firebending.lightning.Lightning;
|
||||
import com.projectkorra.projectkorra.firebending.passive.FirePassive;
|
||||
import com.projectkorra.projectkorra.firebending.util.FireDamageTimer;
|
||||
import com.projectkorra.projectkorra.object.HorizontalVelocityTracker;
|
||||
import com.projectkorra.projectkorra.object.Preset;
|
||||
import com.projectkorra.projectkorra.util.BlockSource;
|
||||
import com.projectkorra.projectkorra.util.ClickType;
|
||||
import com.projectkorra.projectkorra.util.DamageHandler;
|
||||
import com.projectkorra.projectkorra.util.FlightHandler;
|
||||
import com.projectkorra.projectkorra.util.*;
|
||||
import com.projectkorra.projectkorra.util.FlightHandler.Flight;
|
||||
import com.projectkorra.projectkorra.util.MovementHandler;
|
||||
import com.projectkorra.projectkorra.util.PassiveHandler;
|
||||
import com.projectkorra.projectkorra.util.StatisticsManager;
|
||||
import com.projectkorra.projectkorra.util.StatisticsMethods;
|
||||
import com.projectkorra.projectkorra.util.TempArmor;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import com.projectkorra.projectkorra.waterbending.OctopusForm;
|
||||
import com.projectkorra.projectkorra.waterbending.SurgeWall;
|
||||
import com.projectkorra.projectkorra.waterbending.SurgeWave;
|
||||
import com.projectkorra.projectkorra.waterbending.Torrent;
|
||||
import com.projectkorra.projectkorra.waterbending.WaterBubble;
|
||||
import com.projectkorra.projectkorra.waterbending.WaterManipulation;
|
||||
import com.projectkorra.projectkorra.waterbending.WaterSpout;
|
||||
import com.projectkorra.projectkorra.waterbending.*;
|
||||
import com.projectkorra.projectkorra.waterbending.blood.Bloodbending;
|
||||
import com.projectkorra.projectkorra.waterbending.healing.HealingWaters;
|
||||
import com.projectkorra.projectkorra.waterbending.ice.IceBlast;
|
||||
|
@ -177,6 +50,29 @@ import com.projectkorra.projectkorra.waterbending.ice.PhaseChange.PhaseChangeTyp
|
|||
import com.projectkorra.projectkorra.waterbending.multiabilities.WaterArms;
|
||||
import com.projectkorra.projectkorra.waterbending.passive.FastSwim;
|
||||
import com.projectkorra.projectkorra.waterbending.passive.HydroSink;
|
||||
import org.bukkit.Statistic;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
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.*;
|
||||
import org.bukkit.event.entity.*;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageModifier;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.player.*;
|
||||
import org.bukkit.inventory.EquipmentSlot;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class PKListener implements Listener {
|
||||
ProjectKorra plugin;
|
||||
|
@ -267,6 +163,15 @@ public class PKListener implements Listener {
|
|||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||
public void onFluidLevelChange(FluidLevelChangeEvent event) {
|
||||
if (TempBlock.isTempBlock(event.getBlock())){
|
||||
event.setCancelled(true);
|
||||
} else if (TempBlock.isTouchingTempBlock(event.getBlock())) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||
public void onBlockForm(final BlockFormEvent event) {
|
||||
if (TempBlock.isTempBlock(event.getBlock())) {
|
||||
|
@ -347,7 +252,7 @@ public class PKListener implements Listener {
|
|||
}
|
||||
|
||||
// If there is a TempBlock of Air bellow FallingSand blocks, prevent it from updating.
|
||||
if (!event.isCancelled() && (block.getType() == Material.SAND || block.getType() == Material.GRAVEL || block.getType() == Material.ANVIL || block.getType() == Material.DRAGON_EGG) && TempBlock.isTempBlock(block.getRelative(BlockFace.DOWN)) && block.getRelative(BlockFace.DOWN).getType() == Material.AIR) {
|
||||
if (!event.isCancelled() && (block.getType() == Material.SAND || block.getType() == Material.GRAVEL || block.getType() == Material.ANVIL || block.getType() == Material.DRAGON_EGG) && TempBlock.isTempBlock(block.getRelative(BlockFace.DOWN)) && ElementalAbility.isAir(block.getRelative(BlockFace.DOWN).getType())) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
@ -475,6 +380,10 @@ public class PKListener implements Listener {
|
|||
abil.remove();
|
||||
}
|
||||
|
||||
if (CoreAbility.getAbility(player, FireJet.class) != null && event.getCause() == DamageCause.FLY_INTO_WALL) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
if (bPlayer.isElementToggled(Element.FIRE)) {
|
||||
return;
|
||||
}
|
||||
|
@ -724,10 +633,13 @@ public class PKListener implements Listener {
|
|||
}
|
||||
}.runTaskLater(ProjectKorra.plugin, 20);
|
||||
}
|
||||
|
||||
StatisticsMethods.addStatisticAbility(event.getAttacker().getUniqueId(), CoreAbility.getAbility(event.getAbility().getName()), com.projectkorra.projectkorra.util.Statistic.PLAYER_KILLS, 1);
|
||||
if (event.getAttacker() != null && ProjectKorra.isStatisticsEnabled()) {
|
||||
StatisticsMethods.addStatisticAbility(event.getAttacker().getUniqueId(), CoreAbility.getAbility(event.getAbility().getName()), com.projectkorra.projectkorra.util.Statistic.PLAYER_KILLS, 1);
|
||||
}
|
||||
}
|
||||
if (event.getAttacker() != null && ProjectKorra.isStatisticsEnabled()) {
|
||||
StatisticsMethods.addStatisticAbility(event.getAttacker().getUniqueId(), CoreAbility.getAbility(event.getAbility().getName()), com.projectkorra.projectkorra.util.Statistic.TOTAL_KILLS, 1);
|
||||
}
|
||||
StatisticsMethods.addStatisticAbility(event.getAttacker().getUniqueId(), CoreAbility.getAbility(event.getAbility().getName()), com.projectkorra.projectkorra.util.Statistic.TOTAL_KILLS, 1);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
@ -745,9 +657,16 @@ public class PKListener implements Listener {
|
|||
final Player player = event.getPlayer();
|
||||
final BendingPlayer bPlayer = BendingPlayer.getBendingPlayer(player);
|
||||
|
||||
final String e = bPlayer == null || bPlayer.getElements().size() == 0 ? "Nonbender" : (bPlayer.getElements().size() > 1 ? "Avatar" : bPlayer.getElements().get(0).getName());
|
||||
String e = "Nonbender";
|
||||
ChatColor c = ChatColor.WHITE;
|
||||
if(player.hasPermission("bending.avatar") || (bPlayer.hasElement(Element.AIR) && bPlayer.hasElement(Element.EARTH) && bPlayer.hasElement(Element.FIRE) && bPlayer.hasElement(Element.WATER))){
|
||||
c = Element.AVATAR.getColor();
|
||||
e = Element.AVATAR.getName();
|
||||
} else if (bPlayer.getElements().size() > 0) {
|
||||
c = bPlayer.getElements().get(0).getColor();
|
||||
e = bPlayer.getElements().get(0).getName();
|
||||
}
|
||||
final String element = ConfigManager.languageConfig.get().getString("Chat.Prefixes." + e);
|
||||
final ChatColor c = bPlayer == null || bPlayer.getElements().size() == 0 ? ChatColor.WHITE : (bPlayer.getElements().size() > 1 ? Element.AVATAR.getColor() : bPlayer.getElements().get(0).getColor());
|
||||
event.setFormat(event.getFormat().replace("{element}", c + element + ChatColor.RESET).replace("{ELEMENT}", c + element + ChatColor.RESET).replace("{elementcolor}", c + "").replace("{ELEMENTCOLOR}", c + ""));
|
||||
|
||||
if (!ConfigManager.languageConfig.get().getBoolean("Chat.Enable")) {
|
||||
|
@ -760,15 +679,10 @@ public class PKListener implements Listener {
|
|||
return;
|
||||
}
|
||||
|
||||
if (player.hasPermission("bending.avatar") || bPlayer.getElements().size() > 1) {
|
||||
if (player.hasPermission("bending.avatar") || (bPlayer.hasElement(Element.AIR) && bPlayer.hasElement(Element.EARTH) && bPlayer.hasElement(Element.FIRE) && bPlayer.hasElement(Element.WATER))) {
|
||||
color = ChatColor.valueOf(ConfigManager.languageConfig.get().getString("Chat.Colors.Avatar"));
|
||||
} else {
|
||||
for (final Element element_ : Element.getMainElements()) {
|
||||
if (bPlayer.hasElement(element_)) {
|
||||
color = element_.getColor();
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (bPlayer.getElements().size() > 0) {
|
||||
color = bPlayer.getElements().get(0).getColor();
|
||||
}
|
||||
|
||||
String format = ConfigManager.languageConfig.get().getString("Chat.Format");
|
||||
|
@ -1245,7 +1159,9 @@ public class PKListener implements Listener {
|
|||
Manager.getManager(StatisticsManager.class).store(player.getUniqueId());
|
||||
}
|
||||
if (bPlayer != null) {
|
||||
bPlayer.saveCooldowns();
|
||||
if (ProjectKorra.isDatabaseCooldownsEnabled()) {
|
||||
bPlayer.saveCooldowns();
|
||||
}
|
||||
|
||||
if (TOGGLED_OUT.contains(player.getUniqueId()) && bPlayer.isToggled()) {
|
||||
TOGGLED_OUT.remove(player.getUniqueId());
|
||||
|
@ -1747,6 +1663,10 @@ public class PKListener implements Listener {
|
|||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (CoreAbility.getAbility(player, FireJet.class) != null) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
|
|
|
@ -1,21 +1,8 @@
|
|||
package com.projectkorra.projectkorra;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Statistic;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import com.bekvon.bukkit.residence.protection.FlagPermissions;
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.ability.util.CollisionInitializer;
|
||||
import com.projectkorra.projectkorra.ability.util.CollisionManager;
|
||||
import com.projectkorra.projectkorra.ability.util.ComboManager;
|
||||
import com.projectkorra.projectkorra.ability.util.MultiAbilityManager;
|
||||
import com.projectkorra.projectkorra.ability.util.PassiveManager;
|
||||
import com.projectkorra.projectkorra.ability.util.*;
|
||||
import com.projectkorra.projectkorra.airbending.util.AirbendingManager;
|
||||
import com.projectkorra.projectkorra.chiblocking.util.ChiblockingManager;
|
||||
import com.projectkorra.projectkorra.command.Commands;
|
||||
|
@ -24,12 +11,16 @@ import com.projectkorra.projectkorra.earthbending.util.EarthbendingManager;
|
|||
import com.projectkorra.projectkorra.firebending.util.FirebendingManager;
|
||||
import com.projectkorra.projectkorra.object.Preset;
|
||||
import com.projectkorra.projectkorra.storage.DBConnection;
|
||||
import com.projectkorra.projectkorra.util.Metrics;
|
||||
import com.projectkorra.projectkorra.util.RevertChecker;
|
||||
import com.projectkorra.projectkorra.util.StatisticsManager;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import com.projectkorra.projectkorra.util.Updater;
|
||||
import com.projectkorra.projectkorra.util.*;
|
||||
import com.projectkorra.projectkorra.waterbending.util.WaterbendingManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Statistic;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class ProjectKorra extends JavaPlugin {
|
||||
|
||||
|
@ -152,7 +143,7 @@ public class ProjectKorra extends JavaPlugin {
|
|||
Manager.getManager(StatisticsManager.class).save(player.getUniqueId(), false);
|
||||
}
|
||||
final BendingPlayer bPlayer = BendingPlayer.getBendingPlayer(player);
|
||||
if (bPlayer != null) {
|
||||
if (bPlayer != null && isDatabaseCooldownsEnabled()) {
|
||||
bPlayer.saveCooldowns();
|
||||
}
|
||||
}
|
||||
|
@ -181,5 +172,8 @@ public class ProjectKorra extends JavaPlugin {
|
|||
public static boolean isStatisticsEnabled() {
|
||||
return ConfigManager.getConfig().getBoolean("Properties.Statistics");
|
||||
}
|
||||
public static boolean isDatabaseCooldownsEnabled() {
|
||||
return ConfigManager.getConfig().getBoolean("Properties.DatabaseCooldowns");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,24 +1,5 @@
|
|||
package com.projectkorra.projectkorra.ability;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.block.data.Levelled;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.FallingBlock;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.Element;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
|
@ -32,6 +13,24 @@ import com.projectkorra.projectkorra.util.BlockSource;
|
|||
import com.projectkorra.projectkorra.util.Information;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.block.data.Levelled;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.FallingBlock;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public abstract class EarthAbility extends ElementalAbility {
|
||||
|
||||
|
@ -278,8 +277,8 @@ public abstract class EarthAbility extends ElementalAbility {
|
|||
Material sand = red ? Material.RED_SAND : Material.SAND;
|
||||
Material stone = red ? Material.RED_SANDSTONE : Material.SANDSTONE;
|
||||
|
||||
ParticleEffect.ITEM_CRACK.display(loc, amount, xOffset, yOffset, zOffset, speed, sand.createBlockData());
|
||||
ParticleEffect.ITEM_CRACK.display(loc, amount, xOffset, yOffset, zOffset, speed, stone.createBlockData());
|
||||
ParticleEffect.BLOCK_CRACK.display(loc, amount, xOffset, yOffset, zOffset, speed, sand.createBlockData());
|
||||
ParticleEffect.BLOCK_CRACK.display(loc, amount, xOffset, yOffset, zOffset, speed, stone.createBlockData());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -578,7 +577,7 @@ public abstract class EarthAbility extends ElementalAbility {
|
|||
final Information info = TEMP_AIR_LOCATIONS.get(i);
|
||||
final Block block = info.getState().getBlock();
|
||||
|
||||
if (block.getType() != Material.AIR && !block.isLiquid()) {
|
||||
if (!ElementalAbility.isAir(block.getType()) && !block.isLiquid()) {
|
||||
if (force || !MOVED_EARTH.containsKey(block)) {
|
||||
TEMP_AIR_LOCATIONS.remove(i);
|
||||
} else {
|
||||
|
@ -600,7 +599,7 @@ public abstract class EarthAbility extends ElementalAbility {
|
|||
final Information info = MOVED_EARTH.get(block);
|
||||
final Block sourceblock = info.getState().getBlock();
|
||||
|
||||
if (info.getState().getType() == Material.AIR) {
|
||||
if (ElementalAbility.isAir(info.getState().getType())) {
|
||||
MOVED_EARTH.remove(block);
|
||||
return true;
|
||||
}
|
||||
|
@ -623,7 +622,7 @@ public abstract class EarthAbility extends ElementalAbility {
|
|||
return true;
|
||||
}
|
||||
|
||||
if (sourceblock.getType() == Material.AIR || sourceblock.isLiquid()) {
|
||||
if (ElementalAbility.isAir(sourceblock.getType()) || sourceblock.isLiquid()) {
|
||||
info.getState().update(true);
|
||||
} else {
|
||||
|
||||
|
|
|
@ -1,21 +1,5 @@
|
|||
package com.projectkorra.projectkorra.ability;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import com.projectkorra.projectkorra.Element;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
|
@ -24,6 +8,13 @@ import com.projectkorra.projectkorra.configuration.ConfigManager;
|
|||
import com.projectkorra.projectkorra.firebending.BlazeArc;
|
||||
import com.projectkorra.projectkorra.util.Information;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public abstract class FireAbility extends ElementalAbility {
|
||||
|
||||
|
@ -69,7 +60,7 @@ public abstract class FireAbility extends ElementalAbility {
|
|||
* fire dissipates or is destroyed.
|
||||
*/
|
||||
public static void createTempFire(final Location loc) {
|
||||
if (loc.getBlock().getType() == Material.AIR) {
|
||||
if (ElementalAbility.isAir(loc.getBlock().getType())) {
|
||||
loc.getBlock().setType(Material.FIRE);
|
||||
return;
|
||||
}
|
||||
|
@ -216,9 +207,9 @@ public abstract class FireAbility extends ElementalAbility {
|
|||
while (it.hasNext()) {
|
||||
final Location loc = it.next();
|
||||
final Information info = TEMP_FIRE.get(loc);
|
||||
if (info.getLocation().getBlock().getType() != Material.FIRE && info.getLocation().getBlock().getType() != Material.AIR) {
|
||||
if (info.getLocation().getBlock().getType() != Material.FIRE && !ElementalAbility.isAir(info.getLocation().getBlock().getType())) {
|
||||
revertTempFire(loc);
|
||||
} else if (info.getBlock().getType() == Material.AIR || System.currentTimeMillis() > info.getTime()) {
|
||||
} else if (ElementalAbility.isAir(info.getBlock().getType()) || System.currentTimeMillis() > info.getTime()) {
|
||||
revertTempFire(loc);
|
||||
}
|
||||
}
|
||||
|
@ -234,7 +225,7 @@ public abstract class FireAbility extends ElementalAbility {
|
|||
return;
|
||||
}
|
||||
final Information info = TEMP_FIRE.get(location);
|
||||
if (info.getLocation().getBlock().getType() != Material.FIRE && info.getLocation().getBlock().getType() != Material.AIR) {
|
||||
if (info.getLocation().getBlock().getType() != Material.FIRE && !ElementalAbility.isAir(info.getLocation().getBlock().getType())) {
|
||||
if (info.getState().getType().isBurnable() && !info.getState().getType().isOccluding()) {
|
||||
final ItemStack itemStack = new ItemStack(info.getState().getType(), 1);
|
||||
info.getState().getBlock().getWorld().dropItemNaturally(info.getLocation(), itemStack);
|
||||
|
|
|
@ -425,10 +425,8 @@ public class AirBlast extends AirAbility {
|
|||
}
|
||||
|
||||
for (final Entity entity : GeneralMethods.getEntitiesAroundPoint(this.location, this.radius)) {
|
||||
if (entity instanceof Player) {
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || Commands.invincible.contains(((Player) entity).getName())){
|
||||
continue;
|
||||
}
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || ((entity instanceof Player) && Commands.invincible.contains(((Player) entity).getName()))){
|
||||
continue;
|
||||
}
|
||||
this.affect(entity);
|
||||
}
|
||||
|
|
|
@ -1,19 +1,22 @@
|
|||
package com.projectkorra.projectkorra.airbending;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Random;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.AirAbility;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import org.bukkit.Difficulty;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Slime;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Random;
|
||||
|
||||
public class AirScooter extends AirAbility {
|
||||
|
||||
|
@ -31,6 +34,8 @@ public class AirScooter extends AirAbility {
|
|||
private Block floorblock;
|
||||
private Random random;
|
||||
private ArrayList<Double> angles;
|
||||
private Slime slime;
|
||||
private Boolean useslime;
|
||||
|
||||
private double phi = 0;
|
||||
|
||||
|
@ -39,7 +44,7 @@ public class AirScooter extends AirAbility {
|
|||
|
||||
if (check(player)) {
|
||||
return;
|
||||
} else if (!player.isSprinting() || GeneralMethods.isSolid(player.getEyeLocation().getBlock()) || player.getEyeLocation().getBlock().isLiquid()) {
|
||||
} else if (!player.isSprinting() || GeneralMethods.isSolid(player.getEyeLocation().getBlock()) || ElementalAbility.isWater(player.getEyeLocation().getBlock())) {
|
||||
return;
|
||||
} else if (GeneralMethods.isSolid(player.getLocation().add(0, -.5, 0).getBlock())) {
|
||||
return;
|
||||
|
@ -53,6 +58,7 @@ public class AirScooter extends AirAbility {
|
|||
this.cooldown = getConfig().getLong("Abilities.Air.AirScooter.Cooldown");
|
||||
this.duration = getConfig().getLong("Abilities.Air.AirScooter.Duration");
|
||||
this.maxHeightFromGround = getConfig().getDouble("Abilities.Air.AirScooter.MaxHeightFromGround");
|
||||
this.useslime = getConfig().getBoolean("Abilities.Air.AirScooter.ShowSitting");
|
||||
this.random = new Random();
|
||||
this.angles = new ArrayList<>();
|
||||
|
||||
|
@ -66,6 +72,21 @@ public class AirScooter extends AirAbility {
|
|||
for (int i = 0; i < 5; i++) {
|
||||
this.angles.add((double) (60 * i));
|
||||
}
|
||||
if (player.getWorld().getDifficulty() == Difficulty.PEACEFUL) {
|
||||
useslime = false;
|
||||
}
|
||||
if (useslime) {
|
||||
slime = (Slime) player.getWorld().spawnEntity(player.getLocation(), EntityType.SLIME);
|
||||
if (slime != null) {
|
||||
slime.setSize(1);
|
||||
slime.setSilent(true);
|
||||
slime.setInvulnerable(true);
|
||||
slime.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 1, true, false));
|
||||
slime.addPassenger(player);
|
||||
} else {
|
||||
useslime = false;
|
||||
}
|
||||
}
|
||||
|
||||
this.start();
|
||||
}
|
||||
|
@ -92,7 +113,7 @@ public class AirScooter extends AirAbility {
|
|||
this.floorblock = null;
|
||||
for (int i = 0; i <= this.maxHeightFromGround; i++) {
|
||||
final Block block = this.player.getEyeLocation().getBlock().getRelative(BlockFace.DOWN, i);
|
||||
if (GeneralMethods.isSolid(block) || block.isLiquid()) {
|
||||
if (GeneralMethods.isSolid(block) || ElementalAbility.isWater(block)) {
|
||||
this.floorblock = block;
|
||||
return;
|
||||
}
|
||||
|
@ -122,15 +143,28 @@ public class AirScooter extends AirAbility {
|
|||
return;
|
||||
}
|
||||
|
||||
if (useslime && (slime == null || !slime.getPassengers().contains(player))){
|
||||
this.bPlayer.addCooldown(this);
|
||||
this.remove();
|
||||
return;
|
||||
}
|
||||
|
||||
Vector velocity = this.player.getEyeLocation().getDirection().clone().normalize();
|
||||
velocity = velocity.clone().normalize().multiply(this.speed);
|
||||
/*
|
||||
* checks the players speed and ends the move if they are going too slow
|
||||
*/
|
||||
if (System.currentTimeMillis() > this.getStartTime() + this.interval) {
|
||||
if (this.player.getVelocity().length() < this.speed * 0.3) {
|
||||
this.remove();
|
||||
return;
|
||||
if (useslime) {
|
||||
if (this.slime.getVelocity().length() < this.speed * 0.3) {
|
||||
this.remove();
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (this.player.getVelocity().length() < this.speed * 0.3) {
|
||||
this.remove();
|
||||
return;
|
||||
}
|
||||
}
|
||||
this.spinScooter();
|
||||
}
|
||||
|
@ -141,19 +175,19 @@ public class AirScooter extends AirAbility {
|
|||
final double distance = this.player.getLocation().getY() - this.floorblock.getY();
|
||||
final double dx = Math.abs(distance - 2.4);
|
||||
if (distance > 2.75) {
|
||||
velocity.setY(-.25 * dx * dx);
|
||||
velocity.setY(-.25);
|
||||
} else if (distance < 2) {
|
||||
velocity.setY(.25 * dx * dx);
|
||||
velocity.setY(.25);
|
||||
} else {
|
||||
velocity.setY(0);
|
||||
}
|
||||
|
||||
final Vector v = velocity.clone().setY(0);
|
||||
final Block b = this.floorblock.getLocation().clone().add(v.multiply(1.2)).getBlock();
|
||||
if (!GeneralMethods.isSolid(b) && !b.isLiquid()) {
|
||||
velocity.add(new Vector(0, -0.6, 0));
|
||||
} else if (GeneralMethods.isSolid(b.getRelative(BlockFace.UP)) || b.getRelative(BlockFace.UP).isLiquid()) {
|
||||
velocity.add(new Vector(0, 1.0, 0));
|
||||
if (!GeneralMethods.isSolid(b) && !ElementalAbility.isWater(b)) {
|
||||
velocity.add(new Vector(0, -0.1, 0));
|
||||
} else if (GeneralMethods.isSolid(b.getRelative(BlockFace.UP)) || ElementalAbility.isWater(b.getRelative(BlockFace.UP))) {
|
||||
velocity.add(new Vector(0, 0.7, 0));
|
||||
}
|
||||
|
||||
final Location loc = this.player.getLocation();
|
||||
|
@ -165,7 +199,11 @@ public class AirScooter extends AirAbility {
|
|||
|
||||
this.player.setSprinting(false);
|
||||
this.player.removePotionEffect(PotionEffectType.SPEED);
|
||||
this.player.setVelocity(velocity);
|
||||
if (useslime) {
|
||||
slime.setVelocity(velocity);
|
||||
} else {
|
||||
player.setVelocity(velocity);
|
||||
}
|
||||
|
||||
if (this.random.nextInt(4) == 0) {
|
||||
playAirbendingSound(this.player.getLocation());
|
||||
|
@ -178,6 +216,9 @@ public class AirScooter extends AirAbility {
|
|||
@Override
|
||||
public void remove() {
|
||||
super.remove();
|
||||
if (slime != null) {
|
||||
slime.remove();
|
||||
}
|
||||
flightHandler.removeInstance(this.player, this.getName());
|
||||
this.bPlayer.addCooldown(this);
|
||||
}
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
package com.projectkorra.projectkorra.airbending;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.AirAbility;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.ability.util.Collision;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.AirAbility;
|
||||
import com.projectkorra.projectkorra.ability.util.Collision;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class AirSpout extends AirAbility {
|
||||
|
||||
|
@ -109,7 +109,7 @@ public class AirSpout extends AirAbility {
|
|||
final Block standingblock = this.player.getLocation().getBlock();
|
||||
for (int i = 0; i <= this.height + 5; i++) {
|
||||
final Block block = standingblock.getRelative(BlockFace.DOWN, i);
|
||||
if (GeneralMethods.isSolid(block) || block.isLiquid()) {
|
||||
if (GeneralMethods.isSolid(block) || ElementalAbility.isWater(block)) {
|
||||
return block;
|
||||
}
|
||||
}
|
||||
|
@ -135,7 +135,7 @@ public class AirSpout extends AirAbility {
|
|||
}
|
||||
|
||||
final Block eyeBlock = this.player.getEyeLocation().getBlock();
|
||||
if (eyeBlock.isLiquid() || GeneralMethods.isSolid(eyeBlock)) {
|
||||
if (ElementalAbility.isWater(eyeBlock) || GeneralMethods.isSolid(eyeBlock)) {
|
||||
this.remove();
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
package com.projectkorra.projectkorra.airbending;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.AirAbility;
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.ability.util.Collision;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.command.Commands;
|
||||
import com.projectkorra.projectkorra.object.HorizontalVelocityTracker;
|
||||
import com.projectkorra.projectkorra.waterbending.WaterSpout;
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
|
@ -16,15 +20,10 @@ import org.bukkit.entity.Entity;
|
|||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.AirAbility;
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.ability.util.Collision;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.command.Commands;
|
||||
import com.projectkorra.projectkorra.object.HorizontalVelocityTracker;
|
||||
import com.projectkorra.projectkorra.waterbending.WaterSpout;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class AirSuction extends AirAbility {
|
||||
|
||||
|
@ -46,6 +45,7 @@ public class AirSuction extends AirAbility {
|
|||
private Location location;
|
||||
private Location origin;
|
||||
private Vector direction;
|
||||
private boolean canAffectSelf;
|
||||
|
||||
public AirSuction(final Player player) {
|
||||
super(player);
|
||||
|
@ -79,6 +79,7 @@ public class AirSuction extends AirAbility {
|
|||
this.cooldown = getConfig().getLong("Abilities.Air.AirSuction.Cooldown");
|
||||
this.random = new Random();
|
||||
this.origin = getTargetLocation();
|
||||
this.canAffectSelf = true;
|
||||
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(player, this.getName(), origin)) {
|
||||
return;
|
||||
|
@ -193,18 +194,18 @@ public class AirSuction extends AirAbility {
|
|||
}
|
||||
|
||||
for (final Entity entity : GeneralMethods.getEntitiesAroundPoint(this.location, this.radius)) {
|
||||
if (entity.getEntityId() != this.player.getEntityId()) {
|
||||
if (entity instanceof Player) {
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || Commands.invincible.contains(((Player) entity).getName())){
|
||||
continue;
|
||||
}
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || ((entity instanceof Player) && Commands.invincible.contains(((Player) entity).getName()))){
|
||||
continue;
|
||||
}
|
||||
if((entity.getEntityId() == player.getEntityId()) && !canAffectSelf){
|
||||
continue;
|
||||
}
|
||||
final Vector velocity = entity.getVelocity();
|
||||
final double max = this.speed;
|
||||
final Vector push = this.direction.clone();
|
||||
double factor = this.pushFactor;
|
||||
|
||||
if (Math.abs(push.getY()) > max && entity.getEntityId() != this.player.getEntityId()) {
|
||||
if (Math.abs(push.getY()) > max) {
|
||||
if (push.getY() < 0) {
|
||||
push.setY(-max);
|
||||
} else {
|
||||
|
@ -226,16 +227,10 @@ public class AirSuction extends AirAbility {
|
|||
velocity.add(push.clone().multiply(factor * .5));
|
||||
}
|
||||
|
||||
if (entity instanceof Player) {
|
||||
if (Commands.invincible.contains(((Player) entity).getName())) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
GeneralMethods.setVelocity(entity, velocity);
|
||||
new HorizontalVelocityTracker(entity, this.player, 200l, this);
|
||||
entity.setFallDistance(0);
|
||||
if (entity.getEntityId() != this.player.getEntityId() && entity instanceof Player) {
|
||||
if (entity instanceof Player) {
|
||||
flightHandler.createInstance((Player) entity, this.player, 5000L, this.getName());
|
||||
}
|
||||
|
||||
|
@ -244,7 +239,6 @@ public class AirSuction extends AirAbility {
|
|||
}
|
||||
entity.setFireTicks(0);
|
||||
breakBreathbendingHold(entity);
|
||||
}
|
||||
}
|
||||
|
||||
this.advanceLocation();
|
||||
|
@ -280,6 +274,7 @@ public class AirSuction extends AirAbility {
|
|||
} else {
|
||||
suc = new AirSuction(player);
|
||||
suc.setOrigin(player.getEyeLocation().clone());
|
||||
suc.setCanEffectSelf(false);
|
||||
}
|
||||
|
||||
if (suc.getOrigin() != null) {
|
||||
|
@ -404,6 +399,10 @@ public class AirSuction extends AirAbility {
|
|||
this.cooldown = cooldown;
|
||||
}
|
||||
|
||||
public void setCanEffectSelf(final boolean affect) {
|
||||
this.canAffectSelf = affect;
|
||||
}
|
||||
|
||||
public static int getSelectParticles() {
|
||||
return getConfig().getInt("Abilities.Air.AirSuction.SelectParticles");
|
||||
}
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
package com.projectkorra.projectkorra.airbending;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.AirAbility;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.command.Commands;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.AirAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.command.Commands;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class Tornado extends AirAbility {
|
||||
|
||||
|
@ -104,7 +104,7 @@ public class Tornado extends AirAbility {
|
|||
final double timefactor = this.currentHeight / this.maxHeight;
|
||||
this.currentRadius = timefactor * this.radius;
|
||||
|
||||
if (this.origin.getBlock().getType() != Material.AIR && this.origin.getBlock().getType() != Material.BARRIER) {
|
||||
if (!ElementalAbility.isAir(this.origin.getBlock().getType()) && this.origin.getBlock().getType() != Material.BARRIER) {
|
||||
this.origin.setY(this.origin.getY() - 1. / 10. * this.currentHeight);
|
||||
|
||||
for (final Entity entity : GeneralMethods.getEntitiesAroundPoint(this.origin, this.currentHeight)) {
|
||||
|
|
|
@ -96,11 +96,6 @@ public class AirStream extends AirAbility implements ComboAbility {
|
|||
this.currentLoc = this.origin.clone();
|
||||
}
|
||||
final Entity target = GeneralMethods.getTargetedEntity(this.player, this.range);
|
||||
if (target instanceof Player) {
|
||||
if (Commands.invincible.contains(((Player) target).getName())) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (target != null && target.getLocation().distanceSquared(this.currentLoc) > 49) {
|
||||
this.destination = target.getLocation();
|
||||
|
@ -159,11 +154,6 @@ public class AirStream extends AirAbility implements ComboAbility {
|
|||
this.time = System.currentTimeMillis();
|
||||
}
|
||||
if (!entity.equals(this.player) && !this.affectedEntities.contains(entity)) {
|
||||
if (entity instanceof Player) {
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || Commands.invincible.contains(((Player) entity).getName())){
|
||||
continue;
|
||||
}
|
||||
}
|
||||
this.affectedEntities.add(entity);
|
||||
if (entity instanceof Player) {
|
||||
final Player ep = (Player) entity;
|
||||
|
@ -174,6 +164,9 @@ public class AirStream extends AirAbility implements ComboAbility {
|
|||
}
|
||||
|
||||
for (final Entity entity : this.affectedEntities) {
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || ((entity instanceof Player) && Commands.invincible.contains(((Player) entity).getName()))){
|
||||
continue;
|
||||
}
|
||||
final Vector force = GeneralMethods.getDirection(entity.getLocation(), this.currentLoc);
|
||||
entity.setVelocity(force.clone().normalize().multiply(this.speed));
|
||||
entity.setFallDistance(0F);
|
||||
|
@ -199,7 +192,7 @@ public class AirStream extends AirAbility implements ComboAbility {
|
|||
|
||||
@Override
|
||||
public boolean isHarmlessAbility() {
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,13 +1,5 @@
|
|||
package com.projectkorra.projectkorra.airbending.combo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.AirAbility;
|
||||
import com.projectkorra.projectkorra.ability.ComboAbility;
|
||||
|
@ -15,6 +7,13 @@ import com.projectkorra.projectkorra.ability.util.ComboManager.AbilityInformatio
|
|||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.command.Commands;
|
||||
import com.projectkorra.projectkorra.util.ClickType;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class Twister extends AirAbility implements ComboAbility {
|
||||
|
||||
|
@ -142,12 +141,10 @@ public class Twister extends AirAbility implements ComboAbility {
|
|||
}
|
||||
|
||||
for (final Entity entity : this.affectedEntities) {
|
||||
final Vector forceDir = GeneralMethods.getDirection(entity.getLocation(), this.currentLoc.clone().add(0, height, 0));
|
||||
if (entity instanceof Player) {
|
||||
if (Commands.invincible.contains(((Player) entity).getName())) {
|
||||
break;
|
||||
}
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || ((entity instanceof Player) && Commands.invincible.contains(((Player) entity).getName()))){
|
||||
continue;
|
||||
}
|
||||
final Vector forceDir = GeneralMethods.getDirection(entity.getLocation(), this.currentLoc.clone().add(0, height, 0));
|
||||
entity.setVelocity(forceDir.clone().normalize().multiply(0.3));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
package com.projectkorra.projectkorra.chiblocking;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.projectkorra.projectkorra.ability.ChiAbility;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.chiblocking.passive.ChiPassive;
|
||||
import com.projectkorra.projectkorra.util.DamageHandler;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class SwiftKick extends ChiAbility {
|
||||
|
||||
|
@ -38,7 +37,7 @@ public class SwiftKick extends ChiAbility {
|
|||
this.remove();
|
||||
return;
|
||||
}
|
||||
if (this.player.getLocation().subtract(0, 0.5, 0).getBlock().getType() != Material.AIR) {
|
||||
if (!ElementalAbility.isAir(this.player.getLocation().subtract(0, 0.5, 0).getBlock().getType())) {
|
||||
this.remove();
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -1,12 +1,5 @@
|
|||
package com.projectkorra.projectkorra.chiblocking.combo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.projectkorra.projectkorra.Element;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.ChiAbility;
|
||||
|
@ -14,8 +7,15 @@ import com.projectkorra.projectkorra.ability.ComboAbility;
|
|||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.ability.util.ComboManager.AbilityInformation;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.command.Commands;
|
||||
import com.projectkorra.projectkorra.util.ClickType;
|
||||
import com.projectkorra.projectkorra.util.MovementHandler;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class Immobilize extends ChiAbility implements ComboAbility {
|
||||
|
||||
|
@ -38,6 +38,9 @@ public class Immobilize extends ChiAbility implements ComboAbility {
|
|||
this.remove();
|
||||
return;
|
||||
} else {
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, target.getLocation()) || ((target instanceof Player) && Commands.invincible.contains(((Player) target).getName()))){
|
||||
return;
|
||||
}
|
||||
paralyze(this.target, this.duration);
|
||||
this.bPlayer.addCooldown(this);
|
||||
}
|
||||
|
|
|
@ -541,6 +541,7 @@ public class ConfigManager {
|
|||
|
||||
config.addDefault("Properties.UpdateChecker", true);
|
||||
config.addDefault("Properties.Statistics", true);
|
||||
config.addDefault("Properties.DatabaseCooldowns", true);
|
||||
config.addDefault("Properties.BendingPreview", true);
|
||||
config.addDefault("Properties.BendingAffectFallingSand.Normal", true);
|
||||
config.addDefault("Properties.BendingAffectFallingSand.NormalStrengthMultiplier", 1.0);
|
||||
|
@ -816,6 +817,7 @@ public class ConfigManager {
|
|||
config.addDefault("Abilities.Air.AirBurst.AngleTheta", 10);
|
||||
|
||||
config.addDefault("Abilities.Air.AirScooter.Enabled", true);
|
||||
config.addDefault("Abilities.Air.AirScooter.ShowSitting", true);
|
||||
config.addDefault("Abilities.Air.AirScooter.Speed", 0.675);
|
||||
config.addDefault("Abilities.Air.AirScooter.Interval", 100);
|
||||
config.addDefault("Abilities.Air.AirScooter.Radius", 1);
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
package com.projectkorra.projectkorra.earthbending;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.EarthAbility;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.command.Commands;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import com.projectkorra.projectkorra.util.TempArmor;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -17,14 +20,7 @@ import org.bukkit.potion.PotionEffectType;
|
|||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.EarthAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.command.Commands;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import com.projectkorra.projectkorra.util.TempArmor;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import java.util.List;
|
||||
|
||||
public class EarthArmor extends EarthAbility {
|
||||
|
||||
|
@ -183,7 +179,7 @@ public class EarthArmor extends EarthAbility {
|
|||
|
||||
if (this.isTransparent(newHeadBlock) && !newHeadBlock.isLiquid()) {
|
||||
GeneralMethods.breakBlock(newHeadBlock);
|
||||
} else if (!this.isEarthbendable(newHeadBlock) && !newHeadBlock.isLiquid() && newHeadBlock.getType() != Material.AIR) {
|
||||
} else if (!this.isEarthbendable(newHeadBlock) && !newHeadBlock.isLiquid() && !ElementalAbility.isAir(newHeadBlock.getType())) {
|
||||
ParticleEffect.BLOCK_CRACK.display(newHeadBlock.getLocation(), 8, 0.5, 0.5, 0.5, newHeadBlock.getBlockData());
|
||||
this.remove();
|
||||
return false;
|
||||
|
@ -191,7 +187,7 @@ public class EarthArmor extends EarthAbility {
|
|||
|
||||
if (this.isTransparent(newLegsBlock) && !newLegsBlock.isLiquid()) {
|
||||
GeneralMethods.breakBlock(newLegsBlock);
|
||||
} else if (!this.isEarthbendable(newLegsBlock) && !newLegsBlock.isLiquid() && newLegsBlock.getType() != Material.AIR) {
|
||||
} else if (!this.isEarthbendable(newLegsBlock) && !newLegsBlock.isLiquid() && !ElementalAbility.isAir(newLegsBlock.getType())) {
|
||||
newLegsBlock.getLocation().getWorld().playSound(newLegsBlock.getLocation(), Sound.BLOCK_GRASS_BREAK, 1, 1);
|
||||
ParticleEffect.BLOCK_CRACK.display(newHeadBlock.getLocation(), 8, 0.5, 0.5, 0.5, newLegsBlock.getBlockData());
|
||||
this.remove();
|
||||
|
|
|
@ -1,40 +1,29 @@
|
|||
package com.projectkorra.projectkorra.earthbending;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.data.Ageable;
|
||||
import org.bukkit.entity.ArmorStand;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Skeleton;
|
||||
import org.bukkit.entity.Zombie;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.LeatherArmorMeta;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.Element;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.ability.EarthAbility;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.avatar.AvatarState;
|
||||
import com.projectkorra.projectkorra.util.MovementHandler;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import com.projectkorra.projectkorra.util.TempArmor;
|
||||
import com.projectkorra.projectkorra.util.TempArmorStand;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import com.projectkorra.projectkorra.util.*;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.data.Ageable;
|
||||
import org.bukkit.entity.*;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.LeatherArmorMeta;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class EarthGrab extends EarthAbility {
|
||||
|
||||
|
@ -220,7 +209,7 @@ public class EarthGrab extends EarthAbility {
|
|||
|
||||
ParticleEffect.BLOCK_DUST.display(this.target.getLocation(), 36, 0.3, 0.6, 0.3, this.target.getLocation().getBlock().getRelative(BlockFace.DOWN).getBlockData());
|
||||
|
||||
if (this.trap.getLocation().clone().subtract(0, 0.1, 0).getBlock().getType() != Material.AIR) {
|
||||
if (!ElementalAbility.isAir(this.trap.getLocation().clone().subtract(0, 0.1, 0).getBlock().getType())) {
|
||||
this.trap.setGravity(false);
|
||||
} else {
|
||||
this.trap.setGravity(true);
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.projectkorra.projectkorra.earthbending;
|
|||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.EarthAbility;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.util.ClickType;
|
||||
import com.projectkorra.projectkorra.util.DamageHandler;
|
||||
|
@ -224,7 +225,7 @@ public class EarthSmash extends EarthAbility {
|
|||
|
||||
// Check to make sure the new location is available to move to.
|
||||
for (final Block block : this.getBlocks()) {
|
||||
if (block.getType() != Material.AIR && !this.isTransparent(block)) {
|
||||
if (!ElementalAbility.isAir(block.getType()) && !this.isTransparent(block)) {
|
||||
this.location = oldLoc;
|
||||
break;
|
||||
}
|
||||
|
@ -253,7 +254,7 @@ public class EarthSmash extends EarthAbility {
|
|||
// If an earthsmash runs into too many blocks we should remove it.
|
||||
int badBlocksFound = 0;
|
||||
for (final Block block : this.getBlocks()) {
|
||||
if (block.getType() != Material.AIR && (!this.isTransparent(block) || block.getType() == Material.WATER)) {
|
||||
if (!ElementalAbility.isAir(block.getType()) && (!this.isTransparent(block) || block.getType() == Material.WATER)) {
|
||||
badBlocksFound++;
|
||||
}
|
||||
}
|
||||
|
@ -343,7 +344,7 @@ public class EarthSmash extends EarthAbility {
|
|||
// Make sure there is a clear path upward otherwise remove.
|
||||
for (int y = 0; y <= 3; y++) {
|
||||
final Block tempBlock = this.location.clone().add(0, y, 0).getBlock();
|
||||
if (!this.isTransparent(tempBlock) && tempBlock.getType() != Material.AIR) {
|
||||
if (!this.isTransparent(tempBlock) && !ElementalAbility.isAir(tempBlock.getType())) {
|
||||
this.remove();
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -274,10 +274,8 @@ public class Ripple extends EarthAbility {
|
|||
}
|
||||
|
||||
private void affect(final Entity entity) {
|
||||
if (entity instanceof Player) {
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || Commands.invincible.contains(((Player) entity).getName())){
|
||||
return;
|
||||
}
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || ((entity instanceof Player) && Commands.invincible.contains(((Player) entity).getName()))){
|
||||
return;
|
||||
}
|
||||
if (entity instanceof LivingEntity) {
|
||||
DamageHandler.damageEntity(entity, this.damage, this);
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
package com.projectkorra.projectkorra.earthbending;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.EarthAbility;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
|
@ -11,10 +13,8 @@ import org.bukkit.block.Block;
|
|||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.EarthAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class Tremorsense extends EarthAbility {
|
||||
|
||||
|
@ -78,7 +78,7 @@ public class Tremorsense extends EarthAbility {
|
|||
} else if (!this.isEarthbendable(blocki) && earth) {
|
||||
foundAir = true;
|
||||
break;
|
||||
} else if (!this.isEarthbendable(blocki) && !earth && blocki.getType() != Material.AIR) {
|
||||
} else if (!this.isEarthbendable(blocki) && !earth && !ElementalAbility.isAir(blocki.getType())) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,11 +1,15 @@
|
|||
package com.projectkorra.projectkorra.earthbending.lava;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.ability.EarthAbility;
|
||||
import com.projectkorra.projectkorra.ability.LavaAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.util.BlockSource;
|
||||
import com.projectkorra.projectkorra.util.ClickType;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
|
@ -14,15 +18,11 @@ import org.bukkit.block.BlockFace;
|
|||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.ability.LavaAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.util.BlockSource;
|
||||
import com.projectkorra.projectkorra.util.ClickType;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class LavaFlow extends LavaAbility {
|
||||
|
||||
|
@ -386,6 +386,9 @@ public class LavaFlow extends LavaAbility {
|
|||
*/
|
||||
public void createLava(final Block block) {
|
||||
if (isEarth(block) || isSand(block) || isMetal(block)) {
|
||||
if (EarthAbility.getMovedEarth().containsKey(block)){
|
||||
return;
|
||||
}
|
||||
if (isPlant(block.getRelative(BlockFace.UP)) || isSnow(block.getRelative(BlockFace.UP))) {
|
||||
final Block above = block.getRelative(BlockFace.UP);
|
||||
final Block above2 = above.getRelative(BlockFace.UP);
|
||||
|
|
|
@ -1,13 +1,9 @@
|
|||
package com.projectkorra.projectkorra.earthbending.lava;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.ListIterator;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.ability.LavaAbility;
|
||||
import com.projectkorra.projectkorra.util.*;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
|
@ -18,13 +14,8 @@ import org.bukkit.entity.LivingEntity;
|
|||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.LavaAbility;
|
||||
import com.projectkorra.projectkorra.util.BlockSource;
|
||||
import com.projectkorra.projectkorra.util.ClickType;
|
||||
import com.projectkorra.projectkorra.util.DamageHandler;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class LavaSurge extends LavaAbility {
|
||||
|
||||
|
@ -95,7 +86,7 @@ public class LavaSurge extends LavaAbility {
|
|||
public boolean prepare() {
|
||||
final Block targetBlock = BlockSource.getEarthSourceBlock(this.player, this.prepareRange, ClickType.SHIFT_DOWN);
|
||||
|
||||
if (targetBlock == null || !(targetBlock.getRelative(BlockFace.UP).getType() == Material.AIR) && !isLava(targetBlock.getRelative(BlockFace.UP))) {
|
||||
if (targetBlock == null || !(ElementalAbility.isAir(targetBlock.getRelative(BlockFace.UP).getType())) && !isLava(targetBlock.getRelative(BlockFace.UP))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,18 +1,7 @@
|
|||
package com.projectkorra.projectkorra.earthbending.lava;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
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.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.ability.LavaAbility;
|
||||
import com.projectkorra.projectkorra.avatar.AvatarState;
|
||||
import com.projectkorra.projectkorra.firebending.FireBlast;
|
||||
|
@ -20,6 +9,17 @@ import com.projectkorra.projectkorra.util.BlockSource;
|
|||
import com.projectkorra.projectkorra.util.BlockSource.BlockSourceType;
|
||||
import com.projectkorra.projectkorra.util.ClickType;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
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.util.Vector;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class LavaSurgeWall extends LavaAbility {
|
||||
|
||||
|
@ -176,7 +176,7 @@ public class LavaSurgeWall extends LavaAbility {
|
|||
}
|
||||
if (WALL_BLOCKS.containsKey(block)) {
|
||||
blocks.add(block);
|
||||
} else if (!blocks.contains(block) && (block.getType() == Material.AIR || block.getType() == Material.FIRE || this.isLavabendable(block))) {
|
||||
} else if (!blocks.contains(block) && (ElementalAbility.isAir(block.getType()) || block.getType() == Material.FIRE || this.isLavabendable(block))) {
|
||||
WALL_BLOCKS.put(block, this.player);
|
||||
this.addWallBlock(block);
|
||||
blocks.add(block);
|
||||
|
@ -212,7 +212,7 @@ public class LavaSurgeWall extends LavaAbility {
|
|||
block = this.location.getBlock();
|
||||
}
|
||||
|
||||
if (block.getType() != Material.AIR) {
|
||||
if (!ElementalAbility.isAir(block.getType())) {
|
||||
this.breakBlock();
|
||||
return;
|
||||
} else if (!this.progressing) {
|
||||
|
|
|
@ -1,17 +1,5 @@
|
|||
package com.projectkorra.projectkorra.earthbending.lava;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.ability.LavaAbility;
|
||||
|
@ -21,6 +9,17 @@ import com.projectkorra.projectkorra.util.BlockSource;
|
|||
import com.projectkorra.projectkorra.util.BlockSource.BlockSourceType;
|
||||
import com.projectkorra.projectkorra.util.ClickType;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class LavaSurgeWave extends LavaAbility {
|
||||
|
||||
|
@ -165,13 +164,13 @@ public class LavaSurgeWave extends LavaAbility {
|
|||
final Block blockl = this.location.getBlock();
|
||||
final ArrayList<Block> blocks = new ArrayList<Block>();
|
||||
|
||||
if (!GeneralMethods.isRegionProtectedFromBuild(this, this.location) && (blockl.getType() == Material.AIR || blockl.getType() == Material.FIRE || ElementalAbility.isPlant(blockl) || isLava(blockl))) {
|
||||
if (!GeneralMethods.isRegionProtectedFromBuild(this, this.location) && (ElementalAbility.isAir(blockl.getType()) || blockl.getType() == Material.FIRE || ElementalAbility.isPlant(blockl) || isLava(blockl))) {
|
||||
for (double i = 0; i <= this.radius; i += 0.5) {
|
||||
for (double angle = 0; angle < 360; angle += 10) {
|
||||
final Vector vec = GeneralMethods.getOrthogonalVector(this.targetDirection, angle, i);
|
||||
final Block block = this.location.clone().add(vec).getBlock();
|
||||
|
||||
if (!blocks.contains(block) && (block.getType() == Material.AIR || block.getType() == Material.FIRE) || this.isLavabendable(block)) {
|
||||
if (!blocks.contains(block) && (ElementalAbility.isAir(block.getType()) || block.getType() == Material.FIRE) || this.isLavabendable(block)) {
|
||||
blocks.add(block);
|
||||
FireBlast.removeFireBlastsAroundPoint(block.getLocation(), 2);
|
||||
}
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
package com.projectkorra.projectkorra.earthbending.metal;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Random;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.MetalAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.MetalAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import java.util.HashSet;
|
||||
import java.util.Random;
|
||||
|
||||
public class Extraction extends MetalAbility {
|
||||
|
||||
|
@ -42,7 +42,7 @@ public class Extraction extends MetalAbility {
|
|||
return;
|
||||
}
|
||||
|
||||
if (!GeneralMethods.isRegionProtectedFromBuild(this, this.originBlock.getLocation())) {
|
||||
if (!GeneralMethods.isRegionProtectedFromBuild(this, this.originBlock.getLocation()) && !TempBlock.isTempBlock(this.originBlock)) {
|
||||
final Material material = this.originBlock.getType();
|
||||
Material type = null;
|
||||
|
||||
|
|
|
@ -1,9 +1,17 @@
|
|||
package com.projectkorra.projectkorra.firebending;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.AirAbility;
|
||||
import com.projectkorra.projectkorra.ability.FireAbility;
|
||||
import com.projectkorra.projectkorra.ability.util.Collision;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.avatar.AvatarState;
|
||||
import com.projectkorra.projectkorra.command.Commands;
|
||||
import com.projectkorra.projectkorra.firebending.util.FireDamageTimer;
|
||||
import com.projectkorra.projectkorra.util.DamageHandler;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import com.projectkorra.projectkorra.waterbending.plant.PlantRegrowth;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
|
@ -14,17 +22,9 @@ import org.bukkit.entity.LivingEntity;
|
|||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.AirAbility;
|
||||
import com.projectkorra.projectkorra.ability.FireAbility;
|
||||
import com.projectkorra.projectkorra.ability.util.Collision;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.avatar.AvatarState;
|
||||
import com.projectkorra.projectkorra.firebending.util.FireDamageTimer;
|
||||
import com.projectkorra.projectkorra.util.DamageHandler;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import com.projectkorra.projectkorra.waterbending.plant.PlantRegrowth;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class FireBlast extends FireAbility {
|
||||
|
||||
|
@ -131,7 +131,7 @@ public class FireBlast extends FireAbility {
|
|||
}
|
||||
|
||||
private void affect(final Entity entity) {
|
||||
if (entity.getUniqueId() != this.player.getUniqueId()) {
|
||||
if (entity.getUniqueId() != this.player.getUniqueId() && !GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) && !((entity instanceof Player) && Commands.invincible.contains(((Player) entity).getName()))) {
|
||||
if (this.bPlayer.isAvatarState()) {
|
||||
GeneralMethods.setVelocity(entity, this.direction.clone().multiply(AvatarState.getValue(this.knockback)));
|
||||
} else {
|
||||
|
|
|
@ -1,17 +1,19 @@
|
|||
package com.projectkorra.projectkorra.firebending;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.ability.FireAbility;
|
||||
import com.projectkorra.projectkorra.airbending.AirSpout;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.ability.FireAbility;
|
||||
import com.projectkorra.projectkorra.airbending.AirSpout;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import java.util.Random;
|
||||
|
||||
import static com.projectkorra.projectkorra.firebending.Illumination.isIlluminationTorch;
|
||||
|
||||
public class FireJet extends FireAbility {
|
||||
|
||||
|
@ -25,6 +27,7 @@ public class FireJet extends FireAbility {
|
|||
@Attribute(Attribute.SPEED)
|
||||
private double speed;
|
||||
private Random random;
|
||||
private Boolean previousGlidingState;
|
||||
|
||||
public FireJet(final Player player) {
|
||||
super(player);
|
||||
|
@ -51,14 +54,24 @@ public class FireJet extends FireAbility {
|
|||
this.speed = this.getDayFactor(this.speed);
|
||||
final Block block = player.getLocation().getBlock();
|
||||
|
||||
if (BlazeArc.isIgnitable(player, block) || block.getType() == Material.AIR || block.getType() == Material.STONE_SLAB || block.getType() == Material.ACACIA_SLAB || block.getType() == Material.BIRCH_SLAB || block.getType() == Material.DARK_OAK_SLAB || block.getType() == Material.JUNGLE_SLAB || block.getType() == Material.OAK_SLAB || block.getType() == Material.SPRUCE_SLAB || this.bPlayer.isAvatarState()) {
|
||||
if (BlazeArc.isIgnitable(player, block) ||
|
||||
ElementalAbility.isAir(block.getType()) ||
|
||||
block.getType() == Material.STONE_SLAB ||
|
||||
block.getType() == Material.ACACIA_SLAB ||
|
||||
block.getType() == Material.BIRCH_SLAB ||
|
||||
block.getType() == Material.DARK_OAK_SLAB ||
|
||||
block.getType() == Material.JUNGLE_SLAB ||
|
||||
block.getType() == Material.OAK_SLAB ||
|
||||
block.getType() == Material.SPRUCE_SLAB ||
|
||||
isIlluminationTorch(block) ||
|
||||
this.bPlayer.isAvatarState()) {
|
||||
player.setVelocity(player.getEyeLocation().getDirection().clone().normalize().multiply(this.speed));
|
||||
if (!canFireGrief()) {
|
||||
if (block.getType() == Material.AIR) {
|
||||
if (ElementalAbility.isAir(block.getType())) {
|
||||
createTempFire(block.getLocation());
|
||||
}
|
||||
|
||||
} else if (block.getType() == Material.AIR) {
|
||||
} else if (ElementalAbility.isAir(block.getType())) {
|
||||
block.setType(Material.FIRE);
|
||||
}
|
||||
|
||||
|
@ -67,6 +80,8 @@ public class FireJet extends FireAbility {
|
|||
this.time = System.currentTimeMillis();
|
||||
|
||||
this.start();
|
||||
previousGlidingState = player.isGliding();
|
||||
player.setGliding(true);
|
||||
this.bPlayer.addCooldown(this);
|
||||
}
|
||||
}
|
||||
|
@ -103,7 +118,9 @@ public class FireJet extends FireAbility {
|
|||
@Override
|
||||
public void remove() {
|
||||
super.remove();
|
||||
this.player.setGliding(previousGlidingState);
|
||||
flightHandler.removeInstance(this.player, this.getName());
|
||||
this.player.setFallDistance(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,17 +1,5 @@
|
|||
package com.projectkorra.projectkorra.firebending.combo;
|
||||
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
|
@ -20,6 +8,16 @@ import com.projectkorra.projectkorra.command.Commands;
|
|||
import com.projectkorra.projectkorra.firebending.util.FireDamageTimer;
|
||||
import com.projectkorra.projectkorra.util.DamageHandler;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
/***
|
||||
* Is only here for legacy purposes. All fire combos used to use a form of this
|
||||
|
@ -73,7 +71,7 @@ public class FireComboStream extends BukkitRunnable {
|
|||
@Override
|
||||
public void run() {
|
||||
final Block block = this.location.getBlock();
|
||||
if (block.getRelative(BlockFace.UP).getType() != Material.AIR && !ElementalAbility.isPlant(block)) {
|
||||
if (!ElementalAbility.isAir(block.getRelative(BlockFace.UP).getType()) && !ElementalAbility.isPlant(block)) {
|
||||
this.remove();
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -1,17 +1,5 @@
|
|||
package com.projectkorra.projectkorra.firebending.combo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.ComboAbility;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
|
@ -22,6 +10,17 @@ import com.projectkorra.projectkorra.firebending.util.FireDamageTimer;
|
|||
import com.projectkorra.projectkorra.util.ClickType;
|
||||
import com.projectkorra.projectkorra.util.DamageHandler;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class FireWheel extends FireAbility implements ComboAbility {
|
||||
|
||||
|
@ -125,7 +124,7 @@ public class FireWheel extends FireAbility implements ComboAbility {
|
|||
} else if (ElementalAbility.isPlant(topBlock)) {
|
||||
topBlock.breakNaturally();
|
||||
topBlock = topBlock.getRelative(BlockFace.DOWN);
|
||||
} else if (topBlock.getType() == Material.AIR) {
|
||||
} else if (ElementalAbility.isAir(topBlock.getType())) {
|
||||
this.remove();
|
||||
return;
|
||||
} else if (GeneralMethods.isSolid(topBlock.getRelative(BlockFace.UP)) || isWater(topBlock.getRelative(BlockFace.UP))) {
|
||||
|
|
|
@ -1,22 +1,21 @@
|
|||
package com.projectkorra.projectkorra.firebending.combustion;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.AirAbility;
|
||||
import com.projectkorra.projectkorra.ability.CombustionAbility;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.ability.util.Collision;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.avatar.AvatarState;
|
||||
import com.projectkorra.projectkorra.util.DamageHandler;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
public class Combustion extends CombustionAbility {
|
||||
|
||||
|
@ -146,7 +145,7 @@ public class Combustion extends CombustionAbility {
|
|||
|
||||
final Block block = this.location.getBlock();
|
||||
if (block != null) {
|
||||
if (block.getType() != Material.AIR && !isWater(block)) {
|
||||
if (!ElementalAbility.isAir(block.getType()) && !isWater(block)) {
|
||||
this.createExplosion(block.getLocation(), this.explosivePower, this.breakBlocks);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
package com.projectkorra.projectkorra.storage;
|
||||
|
||||
import java.sql.DatabaseMetaData;
|
||||
import java.sql.SQLException;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.configuration.ConfigManager;
|
||||
|
||||
import java.sql.DatabaseMetaData;
|
||||
import java.sql.SQLException;
|
||||
|
||||
public class DBConnection {
|
||||
|
||||
public static Database sql;
|
||||
|
@ -66,7 +66,7 @@ public class DBConnection {
|
|||
}
|
||||
if (!sql.tableExists("pk_cooldowns")) {
|
||||
ProjectKorra.log.info("Creating pk_cooldowns table");
|
||||
final String query = "CREATE TABLE `pk_cooldowns` (uuid VARCHAR(36) PRIMARY KEY, cooldown_id INTEGER NOT NULL, value BIGINT);";
|
||||
final String query = "CREATE TABLE `pk_cooldowns` (uuid VARCHAR(36) NOT NULL, cooldown_id INTEGER NOT NULL, value BIGINT, PRIMARY KEY (uuid, cooldown_id));";
|
||||
sql.modifyQuery(query, false);
|
||||
}
|
||||
} else {
|
||||
|
@ -111,7 +111,7 @@ public class DBConnection {
|
|||
}
|
||||
if (!sql.tableExists("pk_cooldowns")) {
|
||||
ProjectKorra.log.info("Creating pk_cooldowns table");
|
||||
final String query = "CREATE TABLE `pk_cooldowns` (uuid TEXT(36) PRIMARY KEY, cooldown_id INTEGER NOT NULL, value BIGINT);";
|
||||
final String query = "CREATE TABLE `pk_cooldowns` (uuid TEXT(36) NOT NULL, cooldown_id INTEGER NOT NULL, value BIGINT, PRIMARY KEY (uuid, cooldown_id));";
|
||||
sql.modifyQuery(query, false);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,19 +1,17 @@
|
|||
package com.projectkorra.projectkorra.util;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.ability.EarthAbility;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.configuration.ConfigManager;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* BlockSource is a class that handles water and earth bending sources. When a
|
||||
|
@ -269,7 +267,7 @@ public class BlockSource {
|
|||
} else {
|
||||
sourceBlock = WaterAbility.getWaterSourceBlock(player, range, allowPlant);
|
||||
}
|
||||
if (sourceBlock != null && !sourceBlock.getType().equals(Material.AIR) && (ElementalAbility.isWater(sourceBlock) || ElementalAbility.isPlant(sourceBlock) || WaterAbility.isSnow(sourceBlock) || ElementalAbility.isIce(sourceBlock))) {
|
||||
if (sourceBlock != null && !ElementalAbility.isAir(sourceBlock.getType()) && (ElementalAbility.isWater(sourceBlock) || ElementalAbility.isPlant(sourceBlock) || WaterAbility.isSnow(sourceBlock) || ElementalAbility.isIce(sourceBlock))) {
|
||||
if (TempBlock.isTempBlock(sourceBlock) && !WaterAbility.isBendableWaterTempBlock(sourceBlock)) {
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
package com.projectkorra.projectkorra.util;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
|
||||
import com.projectkorra.projectkorra.Manager;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.storage.DBConnection;
|
||||
import com.projectkorra.projectkorra.storage.MySQL;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
|
||||
public class DBCooldownManager extends Manager {
|
||||
|
||||
private DBCooldownManager() {
|
||||
|
@ -33,7 +33,7 @@ public class DBCooldownManager extends Manager {
|
|||
ProjectKorra.log.info("Creating pk_cooldowns table");
|
||||
String query = "CREATE TABLE `pk_cooldowns` (uuid TEXT(36) PRIMARY KEY, cooldown_id INTEGER NOT NULL, value BIGINT);";
|
||||
if (DBConnection.sql instanceof MySQL) {
|
||||
query = "CREATE TABLE `pk_cooldowns` (uuid VARCHAR(36) PRIMARY KEY, cooldown_id INTEGER NOT NULL, value BIGINT);";
|
||||
query = "CREATE TABLE `pk_cooldowns` (uuid VARCHAR(36) NOT NULL, cooldown_id INTEGER NOT NULL, value BIGINT, PRIMARY KEY (uuid, cooldown_id));";
|
||||
}
|
||||
DBConnection.sql.modifyQuery(query, false);
|
||||
}
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
package com.projectkorra.projectkorra.util;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.Map;
|
||||
import java.util.PriorityQueue;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
|
@ -14,8 +11,10 @@ import org.bukkit.block.data.BlockData;
|
|||
import org.bukkit.block.data.Levelled;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import java.util.Comparator;
|
||||
import java.util.Map;
|
||||
import java.util.PriorityQueue;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class TempBlock {
|
||||
|
||||
|
@ -88,8 +87,10 @@ public class TempBlock {
|
|||
for (final Block block : instances.keySet()) {
|
||||
revertBlock(block, Material.AIR);
|
||||
}
|
||||
for (final TempBlock tempblock : REVERT_QUEUE) {
|
||||
tempblock.revertBlock();
|
||||
if (REVERT_QUEUE != null) {
|
||||
for (final TempBlock tempblock : REVERT_QUEUE) {
|
||||
tempblock.revertBlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,21 +1,8 @@
|
|||
package com.projectkorra.projectkorra.waterbending;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.firebending.FireBlast;
|
||||
|
@ -25,6 +12,14 @@ import com.projectkorra.projectkorra.util.ParticleEffect;
|
|||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import com.projectkorra.projectkorra.waterbending.plant.PlantRegrowth;
|
||||
import com.projectkorra.projectkorra.waterbending.util.WaterReturn;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class SurgeWall extends WaterAbility {
|
||||
|
||||
|
@ -269,7 +264,7 @@ public class SurgeWall extends WaterAbility {
|
|||
continue;
|
||||
} else if (WALL_BLOCKS.containsKey(block)) {
|
||||
blocks.add(block);
|
||||
} else if (!blocks.contains(block) && (block.getType() == Material.AIR || block.getType() == Material.FIRE || this.isWaterbendable(block)) && this.isTransparent(block)) {
|
||||
} else if (!blocks.contains(block) && (ElementalAbility.isAir(block.getType()) || block.getType() == Material.FIRE || this.isWaterbendable(block)) && this.isTransparent(block)) {
|
||||
WALL_BLOCKS.put(block, this.player);
|
||||
this.addWallBlock(block);
|
||||
blocks.add(block);
|
||||
|
@ -306,7 +301,7 @@ public class SurgeWall extends WaterAbility {
|
|||
block = this.location.getBlock();
|
||||
}
|
||||
|
||||
if (block.getType() != Material.AIR) {
|
||||
if (!ElementalAbility.isAir(block.getType())) {
|
||||
this.remove();
|
||||
return;
|
||||
} else if (!this.progressing) {
|
||||
|
@ -357,7 +352,9 @@ public class SurgeWall extends WaterAbility {
|
|||
if (!GeneralMethods.isAdjacentToThreeOrMoreSources(block)) {
|
||||
if (this.oldTemps.containsKey(block)) {
|
||||
final TempBlock tb = TempBlock.get(block);
|
||||
tb.setType(this.oldTemps.get(block));
|
||||
if (tb != null) {
|
||||
tb.setType(this.oldTemps.get(block));
|
||||
}
|
||||
} else {
|
||||
TempBlock.revertBlock(block, Material.AIR);
|
||||
}
|
||||
|
@ -372,7 +369,9 @@ public class SurgeWall extends WaterAbility {
|
|||
if (AFFECTED_BLOCKS.containsKey(block)) {
|
||||
if (this.oldTemps.containsKey(block)) {
|
||||
final TempBlock tb = TempBlock.get(block);
|
||||
tb.setType(this.oldTemps.get(block));
|
||||
if (tb != null) {
|
||||
tb.setType(this.oldTemps.get(block));
|
||||
}
|
||||
} else {
|
||||
TempBlock.revertBlock(block, Material.AIR);
|
||||
}
|
||||
|
@ -381,7 +380,9 @@ public class SurgeWall extends WaterAbility {
|
|||
if (WALL_BLOCKS.containsKey(block)) {
|
||||
if (this.oldTemps.containsKey(block)) {
|
||||
final TempBlock tb = TempBlock.get(block);
|
||||
tb.setType(this.oldTemps.get(block));
|
||||
if (tb != null) {
|
||||
tb.setType(this.oldTemps.get(block));
|
||||
}
|
||||
} else {
|
||||
TempBlock.revertBlock(block, Material.AIR);
|
||||
}
|
||||
|
@ -501,7 +502,7 @@ public class SurgeWall extends WaterAbility {
|
|||
private void returnWater() {
|
||||
if (this.location != null) {
|
||||
if (this.frozen) {
|
||||
this.location.getBlock().setType(Material.WATER);
|
||||
this.thaw();
|
||||
}
|
||||
new WaterReturn(this.player, this.location.getBlock());
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.projectkorra.projectkorra.waterbending;
|
|||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.AirAbility;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.avatar.AvatarState;
|
||||
|
@ -155,7 +156,7 @@ public class SurgeWave extends WaterAbility {
|
|||
}
|
||||
|
||||
final Block oldBlock = block;
|
||||
if (!isAir(block.getType()) && block.getType() != Material.SNOW && !isWater(block) && !isPlant(block)) {
|
||||
if (!ElementalAbility.isAir(block.getType()) && block.getType() != Material.SNOW && !isWater(block) && !isPlant(block)) {
|
||||
continue;
|
||||
} else if (isPlant(block)) {
|
||||
block.breakNaturally();
|
||||
|
@ -285,13 +286,13 @@ public class SurgeWave extends WaterAbility {
|
|||
final Block blockl = this.location.getBlock();
|
||||
final ArrayList<Block> blocks = new ArrayList<Block>();
|
||||
|
||||
if (!GeneralMethods.isRegionProtectedFromBuild(this, this.location) && (((blockl.getType() == Material.AIR || blockl.getType() == Material.FIRE || isPlant(blockl) || isWater(blockl) || this.isWaterbendable(this.player, blockl))))) {
|
||||
if (!GeneralMethods.isRegionProtectedFromBuild(this, this.location) && (((ElementalAbility.isAir(blockl.getType()) || blockl.getType() == Material.FIRE || isPlant(blockl) || isWater(blockl) || this.isWaterbendable(this.player, blockl))))) {
|
||||
for (double i = 0; i <= this.currentRadius; i += .5) {
|
||||
for (double angle = 0; angle < 360; angle += 10) {
|
||||
final Vector vec = GeneralMethods.getOrthogonalVector(this.targetDirection, angle, i);
|
||||
final Block block = this.location.clone().add(vec).getBlock();
|
||||
|
||||
if (!blocks.contains(block) && (block.getType() == Material.AIR || block.getType() == Material.FIRE) || this.isWaterbendable(block)) {
|
||||
if (!blocks.contains(block) && (ElementalAbility.isAir(block.getType()) || block.getType() == Material.FIRE) || this.isWaterbendable(block)) {
|
||||
blocks.add(block);
|
||||
FireBlast.removeFireBlastsAroundPoint(block.getLocation(), 2);
|
||||
}
|
||||
|
@ -337,10 +338,8 @@ public class SurgeWave extends WaterAbility {
|
|||
}
|
||||
}
|
||||
if (knockback) {
|
||||
if (entity instanceof Player) {
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || Commands.invincible.contains(((Player) entity).getName())){
|
||||
continue;
|
||||
}
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || ((entity instanceof Player) && Commands.invincible.contains(((Player) entity).getName()))){
|
||||
continue;
|
||||
}
|
||||
final Vector dir = direction.clone();
|
||||
dir.setY(dir.getY() * this.knockup);
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
package com.projectkorra.projectkorra.waterbending;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.AirAbility;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.avatar.AvatarState;
|
||||
import com.projectkorra.projectkorra.command.Commands;
|
||||
import com.projectkorra.projectkorra.util.*;
|
||||
import com.projectkorra.projectkorra.waterbending.plant.PlantRegrowth;
|
||||
import com.projectkorra.projectkorra.waterbending.util.WaterReturn;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
|
@ -16,20 +19,8 @@ import org.bukkit.entity.LivingEntity;
|
|||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.AirAbility;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.avatar.AvatarState;
|
||||
import com.projectkorra.projectkorra.command.Commands;
|
||||
import com.projectkorra.projectkorra.util.BlockSource;
|
||||
import com.projectkorra.projectkorra.util.ClickType;
|
||||
import com.projectkorra.projectkorra.util.DamageHandler;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import com.projectkorra.projectkorra.waterbending.plant.PlantRegrowth;
|
||||
import com.projectkorra.projectkorra.waterbending.util.WaterReturn;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class Torrent extends WaterAbility {
|
||||
|
||||
|
@ -533,9 +524,8 @@ public class Torrent extends WaterAbility {
|
|||
|
||||
if (tor.sourceSelected || tor.settingUp) {
|
||||
WaterReturn.emptyWaterBottle(player);
|
||||
} else {
|
||||
block.setType(Material.AIR);
|
||||
}
|
||||
block.setType(Material.AIR);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -551,10 +541,8 @@ public class Torrent extends WaterAbility {
|
|||
if (entity.getEntityId() == this.player.getEntityId()) {
|
||||
return;
|
||||
}
|
||||
if (entity instanceof Player) {
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || Commands.invincible.contains(((Player) entity).getName())){
|
||||
return;
|
||||
}
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || ((entity instanceof Player) && Commands.invincible.contains(((Player) entity).getName()))){
|
||||
return;
|
||||
}
|
||||
double x, z, vx, vz, mag;
|
||||
double angle = 50;
|
||||
|
@ -592,6 +580,9 @@ public class Torrent extends WaterAbility {
|
|||
if (entity.getEntityId() == this.player.getEntityId()) {
|
||||
return;
|
||||
}
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || (entity instanceof Player && Commands.invincible.contains(((Player) entity).getName()))){
|
||||
return;
|
||||
}
|
||||
if (direction.getY() > this.knockup) {
|
||||
direction.setY(this.knockup);
|
||||
}
|
||||
|
|
|
@ -150,10 +150,8 @@ public class TorrentWave extends WaterAbility {
|
|||
for (final Entity entity : indexList) {
|
||||
if (!this.affectedEntities.contains(entity)) {
|
||||
if (entity.getLocation().distanceSquared(location) <= 4) {
|
||||
if (entity instanceof Player) {
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || Commands.invincible.contains(((Player) entity).getName())){
|
||||
continue;
|
||||
}
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || ((entity instanceof Player) && Commands.invincible.contains(((Player) entity).getName()))){
|
||||
continue;
|
||||
}
|
||||
this.affectedEntities.add(entity);
|
||||
this.affect(entity);
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
package com.projectkorra.projectkorra.waterbending;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.configuration.ConfigManager;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
|
@ -14,11 +13,8 @@ import org.bukkit.block.BlockState;
|
|||
import org.bukkit.block.data.Waterlogged;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.configuration.ConfigManager;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class WaterBubble extends WaterAbility {
|
||||
|
||||
|
@ -153,7 +149,7 @@ public class WaterBubble extends WaterAbility {
|
|||
Waterlogged logged = (Waterlogged) b.getBlockData();
|
||||
logged.setWaterlogged(true);
|
||||
b.setBlockData(logged);
|
||||
} else if (b.getType() == Material.AIR) {
|
||||
} else if (ElementalAbility.isAir(b.getType())) {
|
||||
b.setType(this.waterOrigins.get(b).getType());
|
||||
b.setBlockData(this.waterOrigins.get(b).getBlockData());
|
||||
}
|
||||
|
@ -193,7 +189,7 @@ public class WaterBubble extends WaterAbility {
|
|||
Waterlogged logged = (Waterlogged) b.getBlockData();
|
||||
logged.setWaterlogged(true);
|
||||
b.setBlockData(logged);
|
||||
} else if (b.getType() == Material.AIR) {
|
||||
} else if (ElementalAbility.isAir(b.getType())) {
|
||||
b.setType(this.waterOrigins.get(b).getType());
|
||||
b.setBlockData(this.waterOrigins.get(b).getBlockData());
|
||||
}
|
||||
|
|
|
@ -1,11 +1,16 @@
|
|||
package com.projectkorra.projectkorra.waterbending;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.AirAbility;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.ability.util.Collision;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.command.Commands;
|
||||
import com.projectkorra.projectkorra.util.*;
|
||||
import com.projectkorra.projectkorra.waterbending.ice.PhaseChange;
|
||||
import com.projectkorra.projectkorra.waterbending.plant.PlantRegrowth;
|
||||
import com.projectkorra.projectkorra.waterbending.util.WaterReturn;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
|
@ -14,20 +19,11 @@ import org.bukkit.entity.LivingEntity;
|
|||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.AirAbility;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.ability.util.Collision;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.util.BlockSource;
|
||||
import com.projectkorra.projectkorra.util.ClickType;
|
||||
import com.projectkorra.projectkorra.util.DamageHandler;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import com.projectkorra.projectkorra.waterbending.ice.PhaseChange;
|
||||
import com.projectkorra.projectkorra.waterbending.plant.PlantRegrowth;
|
||||
import com.projectkorra.projectkorra.waterbending.util.WaterReturn;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class WaterManipulation extends WaterAbility {
|
||||
|
||||
|
@ -277,6 +273,9 @@ public class WaterManipulation extends WaterAbility {
|
|||
if (!this.displacing) {
|
||||
for (final Entity entity : GeneralMethods.getEntitiesAroundPoint(this.location, this.collisionRadius)) {
|
||||
if (entity instanceof LivingEntity && entity.getEntityId() != this.player.getEntityId()) {
|
||||
if(GeneralMethods.isRegionProtectedFromBuild(player, "WaterManipulation", entity.getLocation()) || ((entity instanceof Player) && Commands.invincible.contains(((Player) entity).getName()))){
|
||||
continue;
|
||||
}
|
||||
final Location location = this.player.getEyeLocation();
|
||||
final Vector vector = location.getDirection();
|
||||
entity.setVelocity(vector.normalize().multiply(this.knockback));
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
package com.projectkorra.projectkorra.waterbending;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.ability.util.Collision;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.ability.util.Collision;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class WaterSpout extends WaterAbility {
|
||||
|
||||
|
@ -109,7 +109,7 @@ public class WaterSpout extends WaterAbility {
|
|||
loc.add(x, height, z);
|
||||
|
||||
final Block block = loc.getBlock();
|
||||
if ((!TempBlock.isTempBlock(block)) && (block.getType().equals(Material.AIR) || !GeneralMethods.isSolid(block))) {
|
||||
if ((!TempBlock.isTempBlock(block)) && (ElementalAbility.isAir(block.getType()) || !GeneralMethods.isSolid(block))) {
|
||||
this.blocks.add(new TempBlock(block, Material.WATER, GeneralMethods.getWaterData(7)));
|
||||
AFFECTED_BLOCKS.put(block, block);
|
||||
}
|
||||
|
@ -291,7 +291,7 @@ public class WaterSpout extends WaterAbility {
|
|||
return i;
|
||||
}
|
||||
|
||||
if ((blocki.getType() != Material.AIR && (!isPlant(blocki) || !this.bPlayer.canPlantbend()))) {
|
||||
if ((!ElementalAbility.isAir(blocki.getType()) && (!isPlant(blocki) || !this.bPlayer.canPlantbend()))) {
|
||||
this.revertBaseBlock();
|
||||
return -1;
|
||||
}
|
||||
|
|
|
@ -1,12 +1,16 @@
|
|||
package com.projectkorra.projectkorra.waterbending;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Enumeration;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.projectkorra.projectkorra.Element;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.util.DamageHandler;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import com.projectkorra.projectkorra.waterbending.combo.IceWave;
|
||||
import com.projectkorra.projectkorra.waterbending.plant.PlantRegrowth;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
|
@ -18,16 +22,8 @@ import org.bukkit.entity.Player;
|
|||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.Element;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.util.DamageHandler;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import com.projectkorra.projectkorra.waterbending.combo.IceWave;
|
||||
import com.projectkorra.projectkorra.waterbending.plant.PlantRegrowth;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class WaterSpoutWave extends WaterAbility {
|
||||
|
||||
|
@ -169,7 +165,7 @@ public class WaterSpoutWave extends WaterAbility {
|
|||
}
|
||||
|
||||
final Block blockAbove = block.getRelative(BlockFace.UP);
|
||||
if (blockAbove.getType() != Material.AIR && !this.isWaterbendable(blockAbove)) {
|
||||
if (!ElementalAbility.isAir(blockAbove.getType()) && !this.isWaterbendable(blockAbove)) {
|
||||
this.remove();
|
||||
return;
|
||||
}
|
||||
|
@ -240,7 +236,7 @@ public class WaterSpoutWave extends WaterAbility {
|
|||
this.location.add(0, this.animationSpeed, 0);
|
||||
final Block block = this.location.getBlock();
|
||||
|
||||
if (!(this.isWaterbendable(block) || block.getType() == Material.AIR) || GeneralMethods.isRegionProtectedFromBuild(this, block.getLocation())) {
|
||||
if (!(this.isWaterbendable(block) || ElementalAbility.isAir(block.getType()) || GeneralMethods.isRegionProtectedFromBuild(this, block.getLocation()))) {
|
||||
this.remove();
|
||||
return;
|
||||
}
|
||||
|
@ -256,7 +252,7 @@ public class WaterSpoutWave extends WaterAbility {
|
|||
this.location.add(vec.normalize().multiply(this.animationSpeed));
|
||||
final Block block = this.location.getBlock();
|
||||
|
||||
if (!(this.isWaterbendable(block) || block.getType() == Material.AIR) || GeneralMethods.isRegionProtectedFromBuild(this, block.getLocation())) {
|
||||
if (!(this.isWaterbendable(block) || ElementalAbility.isAir(block.getType()) || GeneralMethods.isRegionProtectedFromBuild(this, block.getLocation()))) {
|
||||
this.remove();
|
||||
return;
|
||||
}
|
||||
|
@ -300,7 +296,7 @@ public class WaterSpoutWave extends WaterAbility {
|
|||
|
||||
this.player.setVelocity(this.player.getEyeLocation().getDirection().normalize().multiply(currentSpeed));
|
||||
for (final Block block : GeneralMethods.getBlocksAroundPoint(this.player.getLocation().add(0, -1, 0), this.waveRadius)) {
|
||||
if (block.getType() == Material.AIR && !GeneralMethods.isRegionProtectedFromBuild(this, block.getLocation())) {
|
||||
if (ElementalAbility.isAir(block.getType()) && !GeneralMethods.isRegionProtectedFromBuild(this, block.getLocation())) {
|
||||
if (this.iceWave) {
|
||||
this.createBlockDelay(block, Material.ICE, Material.ICE.createBlockData(), 2L);
|
||||
} else {
|
||||
|
@ -348,7 +344,7 @@ public class WaterSpoutWave extends WaterAbility {
|
|||
dir.setY(0);
|
||||
final Block block = this.player.getEyeLocation().add(dir).getBlock();
|
||||
this.location = block.getLocation();
|
||||
if (block.getType() == Material.AIR && !GeneralMethods.isRegionProtectedFromBuild(this, block.getLocation())) {
|
||||
if (ElementalAbility.isAir(block.getType()) && !GeneralMethods.isRegionProtectedFromBuild(this, block.getLocation())) {
|
||||
this.createBlock(block, Material.WATER, GeneralMethods.getWaterData(0));
|
||||
}
|
||||
}
|
||||
|
@ -420,8 +416,11 @@ public class WaterSpoutWave extends WaterAbility {
|
|||
if (block.getLocation().distanceSquared(entity.getLocation().getBlock().getLocation()) > radius * radius) {
|
||||
continue;
|
||||
}
|
||||
if(GeneralMethods.isRegionProtectedFromBuild(this, block.getLocation())){
|
||||
continue;
|
||||
}
|
||||
|
||||
if (block.getType() == Material.AIR || block.getType() == Material.ICE || this.isWaterbendable(block)) {
|
||||
if (ElementalAbility.isAir(block.getType()) || block.getType() == Material.ICE || this.isWaterbendable(block)) {
|
||||
if (!FROZEN_BLOCKS.containsKey(block)) {
|
||||
final TempBlock tblock = new TempBlock(block, Material.ICE);
|
||||
FROZEN_BLOCKS.put(block, tblock);
|
||||
|
|
|
@ -1,12 +1,18 @@
|
|||
package com.projectkorra.projectkorra.waterbending.combo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Enumeration;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.ComboAbility;
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.ability.IceAbility;
|
||||
import com.projectkorra.projectkorra.ability.util.Collision;
|
||||
import com.projectkorra.projectkorra.ability.util.ComboManager.AbilityInformation;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.avatar.AvatarState;
|
||||
import com.projectkorra.projectkorra.firebending.combo.FireComboStream;
|
||||
import com.projectkorra.projectkorra.util.*;
|
||||
import com.projectkorra.projectkorra.waterbending.util.WaterSourceGrabber;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
|
@ -17,22 +23,8 @@ import org.bukkit.entity.Player;
|
|||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.ComboAbility;
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.ability.IceAbility;
|
||||
import com.projectkorra.projectkorra.ability.util.Collision;
|
||||
import com.projectkorra.projectkorra.ability.util.ComboManager.AbilityInformation;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.avatar.AvatarState;
|
||||
import com.projectkorra.projectkorra.firebending.combo.FireComboStream;
|
||||
import com.projectkorra.projectkorra.util.BlockSource;
|
||||
import com.projectkorra.projectkorra.util.ClickType;
|
||||
import com.projectkorra.projectkorra.util.DamageHandler;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import com.projectkorra.projectkorra.waterbending.util.WaterSourceGrabber;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class IceBullet extends IceAbility implements ComboAbility {
|
||||
|
||||
|
@ -240,7 +232,7 @@ public class IceBullet extends IceAbility implements ComboAbility {
|
|||
final Block block = loc.clone().add(dir).getBlock();
|
||||
this.location = block.getLocation();
|
||||
|
||||
if (block.getType() == Material.AIR && !GeneralMethods.isRegionProtectedFromBuild(this.player, "WaterManipulation", block.getLocation())) {
|
||||
if (ElementalAbility.isAir(block.getType()) && !GeneralMethods.isRegionProtectedFromBuild(this.player, "WaterManipulation", block.getLocation())) {
|
||||
this.createBlock(block, mat, data);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
package com.projectkorra.projectkorra.waterbending.ice;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.AirAbility;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.ability.IceAbility;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.util.DamageHandler;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import com.projectkorra.projectkorra.util.TempPotionEffect;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
|
@ -16,14 +20,10 @@ import org.bukkit.potion.PotionEffect;
|
|||
import org.bukkit.potion.PotionEffectType;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.AirAbility;
|
||||
import com.projectkorra.projectkorra.ability.IceAbility;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.util.DamageHandler;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import com.projectkorra.projectkorra.util.TempPotionEffect;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
public class IceSpikePillar extends IceAbility {
|
||||
|
||||
|
@ -184,7 +184,7 @@ public class IceSpikePillar extends IceAbility {
|
|||
Block b;
|
||||
for (int i = 1; i <= this.height; i++) {
|
||||
b = this.source_block.getWorld().getBlockAt(this.location.clone().add(this.direction.clone().multiply(i)));
|
||||
if (b.getType() != Material.AIR) {
|
||||
if (!ElementalAbility.isAir(b.getType())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
package com.projectkorra.projectkorra.waterbending.ice;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.ability.IceAbility;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
|
@ -13,11 +15,9 @@ import org.bukkit.entity.LivingEntity;
|
|||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.IceAbility;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class IceSpikePillarField extends IceAbility {
|
||||
|
||||
|
@ -73,7 +73,7 @@ public class IceSpikePillarField extends IceAbility {
|
|||
for (int y = -1; y <= 1; y++) {
|
||||
final Block testBlock = player.getWorld().getBlockAt(locX + x, locY + y, locZ + z);
|
||||
|
||||
if (((WaterAbility.isIcebendable(player, testBlock.getType(), false) && !TempBlock.isTempBlock(testBlock)) || (TempBlock.isTempBlock(testBlock) && WaterAbility.isBendableWaterTempBlock(testBlock))) && testBlock.getRelative(BlockFace.UP).getType() == Material.AIR && !(testBlock.getX() == player.getEyeLocation().getBlock().getX() && testBlock.getZ() == player.getEyeLocation().getBlock().getZ()) ) {
|
||||
if (((WaterAbility.isIcebendable(player, testBlock.getType(), false) && !TempBlock.isTempBlock(testBlock)) || (TempBlock.isTempBlock(testBlock) && WaterAbility.isBendableWaterTempBlock(testBlock))) && ElementalAbility.isAir(testBlock.getRelative(BlockFace.UP).getType()) && !(testBlock.getX() == player.getEyeLocation().getBlock().getX() && testBlock.getZ() == player.getEyeLocation().getBlock().getZ()) ) {
|
||||
iceBlocks.add(testBlock);
|
||||
for (int i = 0; i < iceBlocks.size() / 2 + 1; i++) {
|
||||
final Random rand = new Random();
|
||||
|
|
|
@ -1,21 +1,7 @@
|
|||
package com.projectkorra.projectkorra.waterbending.ice;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.data.type.Snow;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.ability.IceAbility;
|
||||
import com.projectkorra.projectkorra.attribute.Attribute;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
|
@ -24,6 +10,16 @@ import com.projectkorra.projectkorra.waterbending.SurgeWave;
|
|||
import com.projectkorra.projectkorra.waterbending.Torrent;
|
||||
import com.projectkorra.projectkorra.waterbending.WaterSpoutWave;
|
||||
import com.projectkorra.projectkorra.waterbending.multiabilities.WaterArmsSpear;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.data.type.Snow;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
public class PhaseChange extends IceAbility {
|
||||
|
||||
|
@ -223,7 +219,7 @@ public class PhaseChange extends IceAbility {
|
|||
final Block b = l.getBlock();
|
||||
loop: for (int i = 1; i <= this.depth; i++) {
|
||||
for (final BlockFace face : this.getBlockFacesTowardsPlayer(center)) {
|
||||
if (b.getRelative(face, i).getType() == Material.AIR) {
|
||||
if (ElementalAbility.isAir(b.getRelative(face, i).getType())) {
|
||||
blocks.add(b);
|
||||
break loop;
|
||||
}
|
||||
|
@ -386,6 +382,10 @@ public class PhaseChange extends IceAbility {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isIce(tb.getBlock()) && ElementalAbility.isWater(tb.getState().getBlockData().getMaterial())) {
|
||||
tb.revertBlock();
|
||||
}
|
||||
} else if (isWater(b)) {
|
||||
// Figure out what to do here also.
|
||||
} else if (isIce(b)) {
|
||||
|
|
|
@ -1,20 +1,8 @@
|
|||
package com.projectkorra.projectkorra.waterbending.multiabilities;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.projectkorra.projectkorra.Element;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.ability.FireAbility;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.ability.util.MultiAbilityManager;
|
||||
|
@ -27,6 +15,18 @@ import com.projectkorra.projectkorra.util.TempBlock;
|
|||
import com.projectkorra.projectkorra.waterbending.multiabilities.WaterArmsWhip.Whip;
|
||||
import com.projectkorra.projectkorra.waterbending.plant.PlantRegrowth;
|
||||
import com.projectkorra.projectkorra.waterbending.util.WaterReturn;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class WaterArms extends WaterAbility {
|
||||
|
||||
|
@ -210,7 +210,7 @@ public class WaterArms extends WaterAbility {
|
|||
}
|
||||
}
|
||||
|
||||
return isWaterbendable(block.getType()) || isIce(block) || isWater(block) || block.getType() == Material.AIR;
|
||||
return isWaterbendable(block.getType()) || isIce(block) || isWater(block) || ElementalAbility.isAir(block.getType());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.projectkorra.projectkorra.waterbending.multiabilities;
|
||||
|
||||
import com.projectkorra.projectkorra.command.Commands;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
|
@ -130,6 +131,9 @@ public class WaterArmsFreeze extends IceAbility {
|
|||
|
||||
for (final Entity entity : GeneralMethods.getEntitiesAroundPoint(this.location, 2.5)) {
|
||||
if (entity instanceof LivingEntity && entity.getEntityId() != this.player.getEntityId() && !(entity instanceof ArmorStand)) {
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || ((entity instanceof Player) && Commands.invincible.contains(((Player) entity).getName()))){
|
||||
continue;
|
||||
}
|
||||
DamageHandler.damageEntity(entity, this.iceDamage, this);
|
||||
final PotionEffect effect = new PotionEffect(PotionEffectType.SLOW, 40, 2);
|
||||
new TempPotionEffect((LivingEntity) entity, effect);
|
||||
|
|
|
@ -293,10 +293,8 @@ public class WaterArmsWhip extends WaterAbility {
|
|||
switch (this.ability) {
|
||||
case PULL:
|
||||
for (final Entity entity : GeneralMethods.getEntitiesAroundPoint(location, 2)) {
|
||||
if (entity instanceof Player) {
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || Commands.invincible.contains(((Player) entity).getName())){
|
||||
continue;
|
||||
}
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || ((entity instanceof Player) && Commands.invincible.contains(((Player) entity).getName()))){
|
||||
continue;
|
||||
}
|
||||
final Vector vector = endOfArm.toVector().subtract(entity.getLocation().toVector());
|
||||
entity.setVelocity(vector.multiply(this.pullMultiplier));
|
||||
|
@ -304,10 +302,8 @@ public class WaterArmsWhip extends WaterAbility {
|
|||
break;
|
||||
case PUNCH:
|
||||
for (final Entity entity : GeneralMethods.getEntitiesAroundPoint(location, 2)) {
|
||||
if (entity instanceof Player) {
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || Commands.invincible.contains(((Player) entity).getName())){
|
||||
continue;
|
||||
}
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || ((entity instanceof Player) && Commands.invincible.contains(((Player) entity).getName()))){
|
||||
continue;
|
||||
}
|
||||
|
||||
final Vector vector = entity.getLocation().toVector().subtract(endOfArm.toVector());
|
||||
|
@ -327,10 +323,8 @@ public class WaterArmsWhip extends WaterAbility {
|
|||
if (this.grabbedEntity == null) {
|
||||
for (final Entity entity : GeneralMethods.getEntitiesAroundPoint(location, 2)) {
|
||||
if (entity instanceof LivingEntity && entity.getEntityId() != this.player.getEntityId() && !GRABBED_ENTITIES.containsKey(entity)) {
|
||||
if (entity instanceof Player) {
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || Commands.invincible.contains(((Player) entity).getName())){
|
||||
continue;
|
||||
}
|
||||
if (GeneralMethods.isRegionProtectedFromBuild(this, entity.getLocation()) || ((entity instanceof Player) && Commands.invincible.contains(((Player) entity).getName()))){
|
||||
continue;
|
||||
}
|
||||
GRABBED_ENTITIES.put((LivingEntity) entity, this);
|
||||
this.grabbedEntity = (LivingEntity) entity;
|
||||
|
|
|
@ -29,7 +29,7 @@ public class HydroSink extends WaterAbility implements PassiveAbility {
|
|||
return true;
|
||||
} else if (WaterAbility.isWaterbendable(player, null, block) && !ElementalAbility.isPlant(block)) {
|
||||
return true;
|
||||
} else if (fallBlock.getType() == Material.AIR) {
|
||||
} else if (ElementalAbility.isAir(fallBlock.getType())) {
|
||||
return true;
|
||||
} else if ((WaterAbility.isWaterbendable(player, null, fallBlock) && !ElementalAbility.isPlant(fallBlock)) || fallBlock.getType() == Material.SNOW_BLOCK) {
|
||||
return true;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.projectkorra.projectkorra.waterbending.plant;
|
||||
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
|
@ -48,7 +49,7 @@ public class PlantRegrowth extends PlantAbility {
|
|||
@Override
|
||||
public void remove() {
|
||||
super.remove();
|
||||
if (this.block.getType() == Material.AIR) {
|
||||
if (ElementalAbility.isAir(this.block.getType())) {
|
||||
this.block.setType(this.type);
|
||||
this.block.setBlockData(this.data);
|
||||
if (this.type == Material.TALL_GRASS) {
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
package com.projectkorra.projectkorra.waterbending.util;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.ElementalAbility;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
|
@ -12,9 +11,10 @@ import org.bukkit.block.data.BlockData;
|
|||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.WaterAbility;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class WaterSourceGrabber {
|
||||
|
||||
|
@ -57,7 +57,7 @@ public class WaterSourceGrabber {
|
|||
this.currentLoc.add(0, this.animimationSpeed * Math.signum(locDiff), 0);
|
||||
final Block block = this.currentLoc.getBlock();
|
||||
|
||||
if (!(WaterAbility.isWaterbendable(this.player, null, block) || block.getType() == Material.AIR) || GeneralMethods.isRegionProtectedFromBuild(this.player, "WaterSpout", block.getLocation())) {
|
||||
if (!(WaterAbility.isWaterbendable(this.player, null, block) || ElementalAbility.isAir(block.getType())) || GeneralMethods.isRegionProtectedFromBuild(this.player, "WaterSpout", block.getLocation())) {
|
||||
this.remove();
|
||||
return;
|
||||
}
|
||||
|
@ -74,7 +74,7 @@ public class WaterSourceGrabber {
|
|||
this.currentLoc.add(vec.normalize().multiply(this.animimationSpeed));
|
||||
|
||||
final Block block = this.currentLoc.getBlock();
|
||||
if (!(WaterAbility.isWaterbendable(this.player, null, block) || block.getType() == Material.AIR) || GeneralMethods.isRegionProtectedFromBuild(this.player, "WaterManipulation", block.getLocation())) {
|
||||
if (!(WaterAbility.isWaterbendable(this.player, null, block) || ElementalAbility.isAir(block.getType())) || GeneralMethods.isRegionProtectedFromBuild(this.player, "WaterManipulation", block.getLocation())) {
|
||||
this.remove();
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue