mirror of
https://github.com/TotalFreedomMC/TF-ProjectKorra.git
synced 2025-02-12 03:59:06 +00:00
commit
12cf8daa60
14 changed files with 184 additions and 105 deletions
|
@ -1,68 +1,12 @@
|
|||
package com.projectkorra.projectkorra;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.PrintWriter;
|
||||
import java.lang.reflect.Field;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import fr.neatmonster.nocheatplus.checks.CheckType;
|
||||
import fr.neatmonster.nocheatplus.hooks.NCPExemptionManager;
|
||||
import me.ryanhamshire.GriefPrevention.Claim;
|
||||
import me.ryanhamshire.GriefPrevention.GriefPrevention;
|
||||
import net.sacredlabyrinth.Phaed.PreciousStones.FieldFlag;
|
||||
import net.sacredlabyrinth.Phaed.PreciousStones.PreciousStones;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.FallingBlock;
|
||||
import org.bukkit.entity.FallingSand;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.TNTPrimed;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.google.common.reflect.ClassPath;
|
||||
import com.griefcraft.lwc.LWC;
|
||||
import com.griefcraft.lwc.LWCPlugin;
|
||||
|
@ -128,8 +72,63 @@ import com.projectkorra.projectkorra.waterbending.WaterSpout;
|
|||
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
|
||||
import com.sk89q.worldguard.protection.flags.DefaultFlag;
|
||||
|
||||
import fr.neatmonster.nocheatplus.checks.CheckType;
|
||||
import fr.neatmonster.nocheatplus.hooks.NCPExemptionManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.FallingBlock;
|
||||
import org.bukkit.entity.FallingSand;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.TNTPrimed;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.PrintWriter;
|
||||
import java.lang.reflect.Field;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public class GeneralMethods {
|
||||
|
@ -1278,7 +1277,6 @@ public class GeneralMethods {
|
|||
return null;
|
||||
}
|
||||
|
||||
@SuppressWarnings("incomplete-switch")
|
||||
public static ChatColor getSubBendingColor(Element element) {
|
||||
switch (element) {
|
||||
case Fire:
|
||||
|
@ -1289,8 +1287,13 @@ public class GeneralMethods {
|
|||
return ChatColor.valueOf(plugin.getConfig().getString("Properties.Chat.Colors.WaterSub"));
|
||||
case Earth:
|
||||
return ChatColor.valueOf(plugin.getConfig().getString("Properties.Chat.Colors.EarthSub"));
|
||||
default:
|
||||
return getAvatarColor();
|
||||
}
|
||||
return getAvatarColor();
|
||||
}
|
||||
|
||||
public static SubElement getSubElementByString(String sub) {
|
||||
return SubElement.getType(sub);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.projectkorra.projectkorra;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
@ -128,6 +129,7 @@ import com.projectkorra.projectkorra.firebending.Illumination;
|
|||
import com.projectkorra.projectkorra.firebending.Lightning;
|
||||
import com.projectkorra.projectkorra.firebending.RingOfFire;
|
||||
import com.projectkorra.projectkorra.firebending.WallOfFire;
|
||||
import com.projectkorra.projectkorra.object.HorizontalVelocityTracker;
|
||||
import com.projectkorra.projectkorra.object.Preset;
|
||||
import com.projectkorra.projectkorra.util.BlockSource;
|
||||
import com.projectkorra.projectkorra.util.ClickType;
|
||||
|
@ -932,7 +934,11 @@ public class PKListener implements Listener {
|
|||
}
|
||||
}
|
||||
*/
|
||||
if (element != null) {
|
||||
if (HorizontalVelocityTracker.hasBeenDamagedByHorizontalVelocity(event.getEntity()) && Arrays.asList(HorizontalVelocityTracker.abils).contains(tempAbility)) {
|
||||
if (ConfigManager.deathMsgConfig.get().contains("HorizontalVelocity." + tempAbility)) {
|
||||
message = ConfigManager.deathMsgConfig.get().getString("HorizontalVelocity." + tempAbility);
|
||||
}
|
||||
} else if (element != null) {
|
||||
if (ConfigManager.deathMsgConfig.get().contains(element.toString() + "." + tempAbility)) {
|
||||
message = ConfigManager.deathMsgConfig.get().getString(element + "." + tempAbility);
|
||||
} else if (ConfigManager.deathMsgConfig.get().contains("Combo." + tempAbility)) {
|
||||
|
|
|
@ -1,34 +1,38 @@
|
|||
package com.projectkorra.projectkorra;
|
||||
|
||||
import java.util.Arrays;
|
||||
import com.projectkorra.projectkorra.command.Commands;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public enum SubElement {
|
||||
|
||||
//Air
|
||||
Flight (Element.Air),
|
||||
SpiritualProjection (Element.Air),
|
||||
Flight (Element.Air, Commands.flightaliases),
|
||||
SpiritualProjection (Element.Air, Commands.spiritualprojectionaliases),
|
||||
|
||||
//Water
|
||||
Bloodbending (Element.Water),
|
||||
Healing (Element.Water),
|
||||
Icebending (Element.Water),
|
||||
Plantbending (Element.Water),
|
||||
Bloodbending (Element.Water, Commands.bloodaliases),
|
||||
Healing (Element.Water, Commands.healingaliases),
|
||||
Icebending (Element.Water, Commands.icealiases),
|
||||
Plantbending (Element.Water, Commands.plantaliases),
|
||||
|
||||
// Earth
|
||||
Metalbending (Element.Earth),
|
||||
Sandbending (Element.Earth),
|
||||
Lavabending (Element.Earth),
|
||||
Metalbending (Element.Earth, Commands.metalbendingaliases),
|
||||
Sandbending (Element.Earth, Commands.sandbendingaliases),
|
||||
Lavabending (Element.Earth, Commands.lavabendingaliases),
|
||||
|
||||
// Fire
|
||||
Combustion (Element.Fire),
|
||||
Lightning (Element.Fire);
|
||||
Combustion (Element.Fire, Commands.combustionaliases),
|
||||
Lightning (Element.Fire, Commands.lightningaliases);
|
||||
|
||||
private Element element;
|
||||
private String[] aliases;
|
||||
|
||||
SubElement(Element mainElement) {
|
||||
SubElement(Element mainElement, String[] aliases) {
|
||||
this.element = mainElement;
|
||||
this.aliases = aliases;
|
||||
}
|
||||
|
||||
/**Returns the main element associated with the subelement
|
||||
|
@ -45,7 +49,7 @@ public enum SubElement {
|
|||
|
||||
public static SubElement getType(String string) {
|
||||
for (SubElement se : SubElement.values()) {
|
||||
if (se.toString().equalsIgnoreCase(string)) {
|
||||
if (Arrays.asList(se.aliases).contains(string.toLowerCase())) {
|
||||
return se;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -91,6 +91,10 @@ public enum StockAbility {
|
|||
public enum MultiAbilities {
|
||||
WaterArms;
|
||||
}
|
||||
|
||||
public enum AvatarAbilities {
|
||||
AvatarState;
|
||||
}
|
||||
|
||||
public static boolean isFlightAbility(String ability) {
|
||||
for (FlightAbilities a : FlightAbilities.values())
|
||||
|
|
|
@ -23,6 +23,7 @@ import com.projectkorra.projectkorra.BendingPlayer;
|
|||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.AvatarState;
|
||||
import com.projectkorra.projectkorra.ability.StockAbility;
|
||||
import com.projectkorra.projectkorra.command.Commands;
|
||||
import com.projectkorra.projectkorra.configuration.ConfigLoadable;
|
||||
import com.projectkorra.projectkorra.object.HorizontalVelocityTracker;
|
||||
|
@ -72,7 +73,6 @@ public class AirBlast implements ConfigLoadable {
|
|||
private ArrayList<Block> affectedlevers = new ArrayList<Block>();
|
||||
private ArrayList<Entity> affectedentities = new ArrayList<Entity>();
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private AirBurst source = null;
|
||||
|
||||
public AirBlast(Location location, Vector direction, Player player, double factorpush, AirBurst burst) {
|
||||
|
@ -236,7 +236,10 @@ public class AirBlast implements ConfigLoadable {
|
|||
return;
|
||||
|
||||
GeneralMethods.setVelocity(entity, velocity);
|
||||
new HorizontalVelocityTracker(entity, player, 200l);
|
||||
if (source != null)
|
||||
new HorizontalVelocityTracker(entity, player, 200l, StockAbility.AirBurst);
|
||||
else
|
||||
new HorizontalVelocityTracker(entity, player, 200l, StockAbility.AirBlast);
|
||||
entity.setFallDistance(0);
|
||||
if (!isUser && entity instanceof Player) {
|
||||
new Flight((Player) entity, player);
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
package com.projectkorra.projectkorra.airbending;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.configuration.ConfigLoadable;
|
||||
import com.projectkorra.projectkorra.util.Flight;
|
||||
import com.projectkorra.projectkorra.waterbending.WaterMethods;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
|
@ -10,9 +12,8 @@ import org.bukkit.entity.Player;
|
|||
import org.bukkit.potion.PotionEffectType;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.configuration.ConfigLoadable;
|
||||
import com.projectkorra.projectkorra.util.Flight;
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class AirScooter implements ConfigLoadable {
|
||||
|
||||
|
@ -155,7 +156,10 @@ public class AirScooter implements ConfigLoadable {
|
|||
velocity.setY(0);
|
||||
}
|
||||
Location loc = player.getLocation();
|
||||
loc.setY((double) floorblock.getY() + 1.5);
|
||||
if (!WaterMethods.isWater(player.getLocation().add(0, 2, 0).getBlock()))
|
||||
loc.setY((double) floorblock.getY() + 1.5);
|
||||
else
|
||||
return false;
|
||||
// player.setFlying(true);
|
||||
// player.teleport(loc.add(velocity));
|
||||
player.setSprinting(false);
|
||||
|
|
|
@ -1,7 +1,16 @@
|
|||
package com.projectkorra.projectkorra.airbending;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.AvatarState;
|
||||
import com.projectkorra.projectkorra.ability.StockAbility;
|
||||
import com.projectkorra.projectkorra.command.Commands;
|
||||
import com.projectkorra.projectkorra.configuration.ConfigLoadable;
|
||||
import com.projectkorra.projectkorra.earthbending.EarthMethods;
|
||||
import com.projectkorra.projectkorra.object.HorizontalVelocityTracker;
|
||||
import com.projectkorra.projectkorra.util.Flight;
|
||||
import com.projectkorra.projectkorra.waterbending.WaterSpout;
|
||||
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Location;
|
||||
|
@ -9,16 +18,8 @@ import org.bukkit.entity.Entity;
|
|||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.AvatarState;
|
||||
import com.projectkorra.projectkorra.command.Commands;
|
||||
import com.projectkorra.projectkorra.configuration.ConfigLoadable;
|
||||
import com.projectkorra.projectkorra.earthbending.EarthMethods;
|
||||
import com.projectkorra.projectkorra.object.HorizontalVelocityTracker;
|
||||
import com.projectkorra.projectkorra.util.Flight;
|
||||
import com.projectkorra.projectkorra.waterbending.WaterSpout;
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class AirSuction implements ConfigLoadable {
|
||||
|
||||
|
@ -260,7 +261,7 @@ public class AirSuction implements ConfigLoadable {
|
|||
continue;
|
||||
}
|
||||
GeneralMethods.setVelocity(entity, velocity);
|
||||
new HorizontalVelocityTracker(entity, player, 200l);
|
||||
new HorizontalVelocityTracker(entity, player, 200l, StockAbility.AirSuction);
|
||||
entity.setFallDistance(0);
|
||||
if (entity.getEntityId() != player.getEntityId() && entity instanceof Player) {
|
||||
new Flight((Player) entity, player);
|
||||
|
|
|
@ -36,7 +36,8 @@ public class Commands {
|
|||
public static String[] firealiases = { "fire", "f", "firebending", "firebender" };
|
||||
public static String[] wateraliases = { "water", "w", "waterbending", "waterbender" };
|
||||
public static String[] elementaliases = { "air", "a", "airbending", "airbender", "chi", "c", "chiblocking", "chiblocker", "earth", "e", "earthbending", "earthbender", "fire", "f", "firebending", "firebender", "water", "w", "waterbending", "waterbender" };
|
||||
|
||||
public static String[] avataraliases = { "avatar", "av", "avy", "aang", "korra" };
|
||||
|
||||
/*
|
||||
* Combo Aliases
|
||||
*/
|
||||
|
|
|
@ -5,6 +5,7 @@ import com.projectkorra.projectkorra.Element;
|
|||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.SubElement;
|
||||
import com.projectkorra.projectkorra.ability.AbilityModuleManager;
|
||||
import com.projectkorra.projectkorra.ability.combo.ComboManager;
|
||||
import com.projectkorra.projectkorra.airbending.AirMethods;
|
||||
import com.projectkorra.projectkorra.chiblocking.ChiMethods;
|
||||
|
@ -67,6 +68,11 @@ public class DisplayCommand extends PKCommand {
|
|||
else if (Arrays.asList(Commands.subelementaliases).contains(element)) {
|
||||
displaySubElement(sender, element);
|
||||
}
|
||||
|
||||
//avatar
|
||||
else if (Arrays.asList(Commands.avataraliases).contains(element)) {
|
||||
displayAvatar(sender);
|
||||
}
|
||||
|
||||
else {
|
||||
ChatColor w = ChatColor.WHITE;
|
||||
|
@ -93,6 +99,24 @@ public class DisplayCommand extends PKCommand {
|
|||
displayBinds(sender);
|
||||
}
|
||||
}
|
||||
|
||||
private void displayAvatar(CommandSender sender) {
|
||||
List<String> abilities = new ArrayList<>();
|
||||
for (String ability : AbilityModuleManager.abilities) {
|
||||
if (!AbilityModuleManager.airbendingabilities.contains(ability) && !AbilityModuleManager.earthbendingabilities.contains(ability) && !AbilityModuleManager.firebendingabilities.contains(ability) && !AbilityModuleManager.waterbendingabilities.contains(ability) && !AbilityModuleManager.chiabilities.contains(ability)) {
|
||||
abilities.add(ability);
|
||||
}
|
||||
}
|
||||
if (abilities.isEmpty()) {
|
||||
sender.sendMessage(ChatColor.YELLOW + "There are no " + GeneralMethods.getAvatarColor() + "avatar" + ChatColor.YELLOW + " abilities on this server!");
|
||||
return;
|
||||
}
|
||||
for (String ability : abilities) {
|
||||
if (GeneralMethods.canView((Player) sender, ability)) {
|
||||
sender.sendMessage(GeneralMethods.getAvatarColor() + ability);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays the enabled moves for the given element to the CommandSender.
|
||||
|
|
|
@ -66,6 +66,11 @@ public class ConfigManager {
|
|||
config.addDefault("Combo.JetBlaze", "{victim} was blasted away by {attacker}'s {ability}");
|
||||
config.addDefault("Combo.FireWheel", "{victim} was incinerated by {attacker}'s {ability}");
|
||||
config.addDefault("Combo.IceBullets", "{victim}'s heart was frozen by {attacker}'s {ability}");
|
||||
|
||||
config.addDefault("HorizontalVelocity.AirBlast","{victim} experienced kinetic damage by {attacker}'s {ability}");
|
||||
config.addDefault("HorizontalVelocity.AirBurst","{victim} experienced kinetic damage by {attacker}'s {ability}");
|
||||
config.addDefault("HorizontalVelocity.AirSuction","{victim} experienced kinetic damage by {attacker}'s {ability}");
|
||||
config.addDefault("HorizontalVelocity.Bloodbending","{victim} experienced kinetic damage by {attacker}'s {ability}");
|
||||
|
||||
deathMsgConfig.save();
|
||||
break;
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package com.projectkorra.projectkorra.event;
|
||||
|
||||
import com.projectkorra.projectkorra.ability.StockAbility;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -12,6 +14,7 @@ import org.bukkit.util.Vector;
|
|||
* Created by Carbogen on 2/2/2015.
|
||||
*/
|
||||
public class HorizontalVelocityChangeEvent extends Event implements Cancellable {
|
||||
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
|
||||
private boolean isCancelled;
|
||||
|
@ -23,6 +26,7 @@ public class HorizontalVelocityChangeEvent extends Event implements Cancellable
|
|||
private Vector difference;
|
||||
private Location start;
|
||||
private Location end;
|
||||
private StockAbility abil;
|
||||
|
||||
@Deprecated
|
||||
public HorizontalVelocityChangeEvent(Entity entity, Player instigator, Vector from, Vector to, Vector difference) {
|
||||
|
@ -33,7 +37,7 @@ public class HorizontalVelocityChangeEvent extends Event implements Cancellable
|
|||
this.difference = difference;
|
||||
}
|
||||
|
||||
public HorizontalVelocityChangeEvent(Entity entity, Player instigator, Vector from, Vector to, Vector difference, Location start, Location end) {
|
||||
public HorizontalVelocityChangeEvent(Entity entity, Player instigator, Vector from, Vector to, Vector difference, Location start, Location end, StockAbility ability ) {
|
||||
this.entity = entity;
|
||||
this.instigator = instigator;
|
||||
this.from = from;
|
||||
|
@ -41,6 +45,7 @@ public class HorizontalVelocityChangeEvent extends Event implements Cancellable
|
|||
this.difference = difference;
|
||||
this.start = start;
|
||||
this.end = end;
|
||||
abil = ability;
|
||||
}
|
||||
|
||||
public Entity getEntity() {
|
||||
|
@ -74,6 +79,10 @@ public class HorizontalVelocityChangeEvent extends Event implements Cancellable
|
|||
public Vector getDifference() {
|
||||
return difference;
|
||||
}
|
||||
|
||||
public StockAbility getAbility() {
|
||||
return abil;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.projectkorra.projectkorra.object;
|
|||
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.StockAbility;
|
||||
import com.projectkorra.projectkorra.earthbending.EarthMethods;
|
||||
import com.projectkorra.projectkorra.event.HorizontalVelocityChangeEvent;
|
||||
import com.projectkorra.projectkorra.waterbending.WaterMethods;
|
||||
|
@ -20,8 +21,9 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||
* Created by Carbogen on 2/2/2015.
|
||||
*/
|
||||
public class HorizontalVelocityTracker {
|
||||
|
||||
public static ConcurrentHashMap<Entity, HorizontalVelocityTracker> instances = new ConcurrentHashMap<Entity, HorizontalVelocityTracker>();
|
||||
|
||||
public boolean hasBeenDamaged = false;
|
||||
private long delay;
|
||||
private long fireTime;
|
||||
private Entity entity;
|
||||
|
@ -30,8 +32,11 @@ public class HorizontalVelocityTracker {
|
|||
private Vector thisVelocity;
|
||||
private Location launchLocation;
|
||||
private Location impactLocation;
|
||||
private StockAbility abil;
|
||||
|
||||
public static String[] abils = {"AirBlast", "AirBurst", "AirSuction", "Bloodbending"};
|
||||
|
||||
public HorizontalVelocityTracker(Entity e, Player instigator, long delay) {
|
||||
public HorizontalVelocityTracker(Entity e, Player instigator, long delay, StockAbility ability) {
|
||||
remove(e);
|
||||
entity = e;
|
||||
this.instigator = instigator;
|
||||
|
@ -41,6 +46,7 @@ public class HorizontalVelocityTracker {
|
|||
launchLocation = e.getLocation().clone();
|
||||
impactLocation = launchLocation.clone();
|
||||
this.delay = delay;
|
||||
abil = ability;
|
||||
update();
|
||||
instances.put(entity, this);
|
||||
}
|
||||
|
@ -70,7 +76,8 @@ public class HorizontalVelocityTracker {
|
|||
for (Block b : blocks) {
|
||||
if (GeneralMethods.isSolid(b) && (entity.getLocation().getBlock().getRelative(BlockFace.EAST, 1).equals(b) || entity.getLocation().getBlock().getRelative(BlockFace.NORTH, 1).equals(b) || entity.getLocation().getBlock().getRelative(BlockFace.WEST, 1).equals(b) || entity.getLocation().getBlock().getRelative(BlockFace.SOUTH, 1).equals(b))) {
|
||||
if (!EarthMethods.isTransparentToEarthbending(instigator, b)) {
|
||||
ProjectKorra.plugin.getServer().getPluginManager().callEvent(new HorizontalVelocityChangeEvent(entity, instigator, lastVelocity, thisVelocity, diff, launchLocation, impactLocation));
|
||||
ProjectKorra.plugin.getServer().getPluginManager().callEvent(new HorizontalVelocityChangeEvent(entity, instigator, lastVelocity, thisVelocity, diff, launchLocation, impactLocation, abil));
|
||||
hasBeenDamaged = true;
|
||||
remove();
|
||||
return;
|
||||
}
|
||||
|
@ -93,4 +100,11 @@ public class HorizontalVelocityTracker {
|
|||
if (instances.containsKey(e))
|
||||
instances.remove(e);
|
||||
}
|
||||
|
||||
public static boolean hasBeenDamagedByHorizontalVelocity(Entity e) {
|
||||
if (instances.containsKey(e)) {
|
||||
return instances.get(e).hasBeenDamaged;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import com.projectkorra.projectkorra.BendingPlayer;
|
|||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.AvatarState;
|
||||
import com.projectkorra.projectkorra.ability.StockAbility;
|
||||
import com.projectkorra.projectkorra.airbending.AirMethods;
|
||||
import com.projectkorra.projectkorra.firebending.FireMethods;
|
||||
import com.projectkorra.projectkorra.object.HorizontalVelocityTracker;
|
||||
|
@ -117,7 +118,7 @@ public class Bloodbending {
|
|||
Vector vector = GeneralMethods.getDirection(location, GeneralMethods.getTargetedLocation(player, location.distance(target)));
|
||||
vector.normalize();
|
||||
entity.setVelocity(vector.multiply(factor));
|
||||
new HorizontalVelocityTracker(entity, player, 200);
|
||||
new HorizontalVelocityTracker(entity, player, 200, StockAbility.Bloodbending);
|
||||
}
|
||||
remove(player);
|
||||
}
|
||||
|
|
|
@ -146,7 +146,7 @@ public class OctopusForm {
|
|||
double knock = AvatarState.isAvatarState(player) ? AvatarState.getValue(knockback) : knockback;
|
||||
entity.setVelocity(GeneralMethods.getDirection(player.getLocation(), location).normalize().multiply(knock));
|
||||
if (entity instanceof LivingEntity)
|
||||
GeneralMethods.damageEntity(player, entity, damage, "OctoposForm");
|
||||
GeneralMethods.damageEntity(player, entity, damage, "OctopusForm");
|
||||
AirMethods.breakBreathbendingHold(entity);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue