mirror of
https://github.com/TotalFreedomMC/TF-ProjectKorra.git
synced 2025-02-11 11:40:40 +00:00
Remove grappling hooks
This commit is contained in:
parent
2d3f0809fc
commit
8f2c188932
8 changed files with 95 additions and 494 deletions
|
@ -1,5 +1,30 @@
|
|||
package com.projectkorra.projectkorra;
|
||||
|
||||
import java.io.File;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.ConsoleCommandSender;
|
||||
import org.bukkit.command.PluginCommand;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
import com.projectkorra.projectkorra.ability.AbilityModuleManager;
|
||||
import com.projectkorra.projectkorra.ability.StockAbility;
|
||||
import com.projectkorra.projectkorra.ability.combo.ComboManager;
|
||||
|
@ -12,36 +37,9 @@ import com.projectkorra.projectkorra.event.PlayerChangeElementEvent.Result;
|
|||
import com.projectkorra.projectkorra.firebending.FireMethods;
|
||||
import com.projectkorra.projectkorra.object.Preset;
|
||||
import com.projectkorra.projectkorra.storage.DBConnection;
|
||||
import com.projectkorra.projectkorra.util.GrapplingHookAPI;
|
||||
import com.projectkorra.projectkorra.waterbending.WaterMethods;
|
||||
import com.projectkorra.rpg.RPGMethods;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.ConsoleCommandSender;
|
||||
import org.bukkit.command.PluginCommand;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
import java.io.File;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
public class Commands {
|
||||
|
||||
private ProjectKorra plugin;
|
||||
|
@ -107,7 +105,6 @@ public class Commands {
|
|||
String[] choosealiases = { "choose", "ch" };
|
||||
String[] clearaliases = { "clear", "cl", "c" };
|
||||
String[] displayaliases = { "display", "d" };
|
||||
String[] givealiases = { "give", "g", "spawn" };
|
||||
String[] helpaliases = { "help", "h" };
|
||||
String[] importaliases = { "import", "i" };
|
||||
String[] invinciblealiases = { "invincible", "inv" };
|
||||
|
@ -119,11 +116,6 @@ public class Commands {
|
|||
String[] versionaliases = { "version", "v" };
|
||||
String[] whoaliases = { "who", "w" };
|
||||
|
||||
/*
|
||||
* Item Aliases
|
||||
*/
|
||||
String[] grapplinghookaliases = { "grapplinghook", "grapplehook", "hook", "ghook" };
|
||||
|
||||
private void init() {
|
||||
PluginCommand projectkorra = plugin.getCommand("projectkorra");
|
||||
CommandExecutor exe;
|
||||
|
@ -1047,57 +1039,8 @@ public class Commands {
|
|||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
else if (Arrays.asList(givealiases).contains(args[0])) {
|
||||
if (!s.hasPermission("bending.command.give")) {
|
||||
s.sendMessage(ChatColor.RED + "You don't have permission to do that.");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args.length < 3) {
|
||||
s.sendMessage(ChatColor.GOLD + "Proper Usage: /bending give [Player] [Item] <Properties>");
|
||||
return true;
|
||||
}
|
||||
|
||||
Player player = Bukkit.getPlayer(args[1]);
|
||||
|
||||
if (player == null) {
|
||||
s.sendMessage(ChatColor.RED + "That player is not online.");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (Arrays.asList(grapplinghookaliases).contains(args[2])) {
|
||||
/*
|
||||
* They are spawning in a grappling hook. bending give
|
||||
* [Player] grapplinghook [# of Uses]
|
||||
*/
|
||||
|
||||
if (args.length != 4) {
|
||||
s.sendMessage(ChatColor.GOLD + "Proper Usage: /bending give [Player] GrapplingHook <#OfUses>");
|
||||
return true;
|
||||
}
|
||||
int uses;
|
||||
try {
|
||||
uses = Integer.parseInt(args[3]);
|
||||
}
|
||||
catch (NumberFormatException e) {
|
||||
s.sendMessage(ChatColor.RED + "You must specify a number of uses you want the grappling hook to have.");
|
||||
s.sendMessage(ChatColor.GOLD + "Example: /bending give " + s.getName() + " grapplinghook 25");
|
||||
return true;
|
||||
}
|
||||
|
||||
ItemStack hook = GrapplingHookAPI.createHook(uses);
|
||||
player.getInventory().addItem(hook);
|
||||
s.sendMessage(ChatColor.GREEN + "A grappling hook with " + uses + " uses has been added to your inventory.");
|
||||
return true;
|
||||
} else {
|
||||
s.sendMessage(ChatColor.RED + "That is not a valid Bending item.");
|
||||
s.sendMessage(ChatColor.GOLD + "Acceptable Items: GrapplingHook");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
else if (Arrays.asList(importaliases).contains(args[0])) {
|
||||
|
||||
else if (Arrays.asList(importaliases).contains(args[0])) {
|
||||
if (!s.hasPermission("bending.command.import")) {
|
||||
s.sendMessage(ChatColor.RED + "You don't have permission to do that.");
|
||||
return true;
|
||||
|
@ -1783,8 +1726,6 @@ public class Commands {
|
|||
s.sendMessage(ChatColor.YELLOW + "/bending version");
|
||||
if (s.hasPermission("bending.command.who"))
|
||||
s.sendMessage(ChatColor.YELLOW + "/bending who");
|
||||
if (s.hasPermission("bending.command.give"))
|
||||
s.sendMessage(ChatColor.YELLOW + "/bending give [Player] [Item] <Properties>");
|
||||
if (s.hasPermission("bending.command.invincible"))
|
||||
s.sendMessage(ChatColor.YELLOW + "/bending invincible");
|
||||
return true;
|
||||
|
@ -1831,13 +1772,8 @@ public class Commands {
|
|||
s.sendMessage(ChatColor.YELLOW + "This command will show you all of the elements you have bound if you do not specify an element." + " If you do specify an element (Air, Water, Earth, Fire, or Chi), it will show you all of the available " + " abilities of that element installed on the server.");
|
||||
}
|
||||
|
||||
else if (Arrays.asList(givealiases).contains(args[1])) {
|
||||
s.sendMessage(ChatColor.GOLD + "Proper Usage: " + ChatColor.DARK_AQUA + "/bending give [Player] [Item] <Properties>");
|
||||
s.sendMessage(ChatColor.YELLOW + "This command will give you an item that was created for the Bending plugin so you do not have to craft it." + " Each item may have its own properties involved, so the amount of arguments may change. However, the Player and Item will be " + " required each time you use this command.");
|
||||
s.sendMessage(ChatColor.DARK_AQUA + "Items: GrapplingHook");
|
||||
}
|
||||
|
||||
else if (Arrays.asList(choosealiases).contains(args[1])) {
|
||||
|
||||
else if (Arrays.asList(choosealiases).contains(args[1])) {
|
||||
s.sendMessage(ChatColor.GOLD + "Proper Usage: " + ChatColor.DARK_AQUA + "/bending choose <Player> [Element]");
|
||||
s.sendMessage(ChatColor.GOLD + "Applicable Elements: " + ChatColor.DARK_AQUA + "Air, Water, Earth, Fire, Chi");
|
||||
s.sendMessage(ChatColor.YELLOW + "This command will allow the user to choose a player either for himself or <Player> if specified. " + " This command can only be used once per player unless they have permission to rechoose their element.");
|
||||
|
|
|
@ -105,7 +105,6 @@ import com.projectkorra.projectkorra.firebending.FireMethods;
|
|||
import com.projectkorra.projectkorra.firebending.FireShield;
|
||||
import com.projectkorra.projectkorra.object.Preset;
|
||||
import com.projectkorra.projectkorra.storage.DBConnection;
|
||||
import com.projectkorra.projectkorra.util.CraftingRecipes;
|
||||
import com.projectkorra.projectkorra.util.Flight;
|
||||
import com.projectkorra.projectkorra.util.ParticleEffect;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
|
@ -1653,7 +1652,6 @@ public class GeneralMethods {
|
|||
new AbilityModuleManager(plugin);
|
||||
new ComboManager();
|
||||
new MultiAbilityModuleManager();
|
||||
new CraftingRecipes(plugin);
|
||||
DBConnection.host = plugin.getConfig().getString("Storage.MySQL.host");
|
||||
DBConnection.port = plugin.getConfig().getInt("Storage.MySQL.port");
|
||||
DBConnection.pass = plugin.getConfig().getString("Storage.MySQL.pass");
|
||||
|
|
|
@ -1,5 +1,62 @@
|
|||
package com.projectkorra.projectkorra;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockFadeEvent;
|
||||
import org.bukkit.event.block.BlockFormEvent;
|
||||
import org.bukkit.event.block.BlockFromToEvent;
|
||||
import org.bukkit.event.block.BlockIgniteEvent;
|
||||
import org.bukkit.event.block.BlockPhysicsEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.EntityChangeBlockEvent;
|
||||
import org.bukkit.event.entity.EntityCombustEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByBlockEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
import org.bukkit.event.entity.EntityExplodeEvent;
|
||||
import org.bukkit.event.entity.EntityInteractEvent;
|
||||
import org.bukkit.event.entity.EntityShootBowEvent;
|
||||
import org.bukkit.event.entity.EntityTargetEvent;
|
||||
import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
|
||||
import org.bukkit.event.entity.EntityTeleportEvent;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.event.entity.ProjectileHitEvent;
|
||||
import org.bukkit.event.entity.ProjectileLaunchEvent;
|
||||
import org.bukkit.event.entity.SlimeSplitEvent;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryType.SlotType;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
import org.bukkit.event.player.PlayerAnimationEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerKickEvent;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.player.PlayerToggleFlightEvent;
|
||||
import org.bukkit.event.player.PlayerToggleSneakEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.projectkorra.projectkorra.ability.AvatarState;
|
||||
import com.projectkorra.projectkorra.ability.combo.ComboManager;
|
||||
import com.projectkorra.projectkorra.ability.multiability.MultiAbilityManager;
|
||||
|
@ -41,15 +98,14 @@ import com.projectkorra.projectkorra.earthbending.EarthTunnel;
|
|||
import com.projectkorra.projectkorra.earthbending.EarthWall;
|
||||
import com.projectkorra.projectkorra.earthbending.Extraction;
|
||||
import com.projectkorra.projectkorra.earthbending.LavaFlow;
|
||||
import com.projectkorra.projectkorra.earthbending.LavaFlow.AbilityType;
|
||||
import com.projectkorra.projectkorra.earthbending.LavaSurge;
|
||||
import com.projectkorra.projectkorra.earthbending.LavaWave;
|
||||
import com.projectkorra.projectkorra.earthbending.MetalClips;
|
||||
import com.projectkorra.projectkorra.earthbending.SandSpout;
|
||||
import com.projectkorra.projectkorra.earthbending.Shockwave;
|
||||
import com.projectkorra.projectkorra.earthbending.Tremorsense;
|
||||
import com.projectkorra.projectkorra.earthbending.LavaFlow.AbilityType;
|
||||
import com.projectkorra.projectkorra.event.PlayerBendingDeathEvent;
|
||||
import com.projectkorra.projectkorra.event.PlayerGrappleEvent;
|
||||
import com.projectkorra.projectkorra.firebending.ArcOfFire;
|
||||
import com.projectkorra.projectkorra.firebending.Combustion;
|
||||
import com.projectkorra.projectkorra.firebending.Enflamed;
|
||||
|
@ -70,7 +126,6 @@ import com.projectkorra.projectkorra.object.Preset;
|
|||
import com.projectkorra.projectkorra.util.BlockSource;
|
||||
import com.projectkorra.projectkorra.util.ClickType;
|
||||
import com.projectkorra.projectkorra.util.Flight;
|
||||
import com.projectkorra.projectkorra.util.GrapplingHookAPI;
|
||||
import com.projectkorra.projectkorra.util.HorizontalVelocityChangeEvent;
|
||||
import com.projectkorra.projectkorra.util.TempBlock;
|
||||
import com.projectkorra.projectkorra.waterbending.Bloodbending;
|
||||
|
@ -90,71 +145,10 @@ import com.projectkorra.projectkorra.waterbending.WaterWall;
|
|||
import com.projectkorra.projectkorra.waterbending.WaterWave;
|
||||
import com.projectkorra.projectkorra.waterbending.Wave;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockFadeEvent;
|
||||
import org.bukkit.event.block.BlockFormEvent;
|
||||
import org.bukkit.event.block.BlockFromToEvent;
|
||||
import org.bukkit.event.block.BlockIgniteEvent;
|
||||
import org.bukkit.event.block.BlockPhysicsEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.EntityChangeBlockEvent;
|
||||
import org.bukkit.event.entity.EntityCombustEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByBlockEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
import org.bukkit.event.entity.EntityExplodeEvent;
|
||||
import org.bukkit.event.entity.EntityInteractEvent;
|
||||
import org.bukkit.event.entity.EntityShootBowEvent;
|
||||
import org.bukkit.event.entity.EntityTargetEvent;
|
||||
import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
|
||||
import org.bukkit.event.entity.EntityTeleportEvent;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.event.entity.ProjectileHitEvent;
|
||||
import org.bukkit.event.entity.ProjectileLaunchEvent;
|
||||
import org.bukkit.event.entity.SlimeSplitEvent;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryType.SlotType;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
import org.bukkit.event.player.PlayerAnimationEvent;
|
||||
import org.bukkit.event.player.PlayerFishEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerKickEvent;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.player.PlayerToggleFlightEvent;
|
||||
import org.bukkit.event.player.PlayerToggleSneakEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class PKListener implements Listener {
|
||||
|
||||
ProjectKorra plugin;
|
||||
|
||||
public static HashMap<Integer, Integer> noFallEntities = new HashMap<Integer, Integer>(); // Grappling Hooks
|
||||
public static HashMap<String, Integer> noGrapplePlayers = new HashMap<String, Integer>(); // Grappling Hooks
|
||||
public static HashMap<Player, String> bendingDeathPlayer = new HashMap<Player, String>(); // Player killed by Bending
|
||||
|
||||
public PKListener(ProjectKorra plugin) {
|
||||
|
@ -853,73 +847,6 @@ public class PKListener implements Listener {
|
|||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onPlayerFish(PlayerFishEvent event) {
|
||||
if (event.isCancelled())
|
||||
return;
|
||||
Player player = event.getPlayer();
|
||||
if (GrapplingHookAPI.isGrapplingHook(player.getItemInHand())) {
|
||||
if (event.getState() == PlayerFishEvent.State.IN_GROUND) {
|
||||
Location loc = event.getHook().getLocation();
|
||||
for (Entity ent : event.getHook().getNearbyEntities(1.5, 1, 1.5)) {
|
||||
if (ent instanceof Item) {
|
||||
PlayerGrappleEvent e = new PlayerGrappleEvent(player, ent, player.getLocation());
|
||||
plugin.getServer().getPluginManager().callEvent(e);
|
||||
return;
|
||||
}
|
||||
}
|
||||
PlayerGrappleEvent e = new PlayerGrappleEvent(player, player, loc);
|
||||
plugin.getServer().getPluginManager().callEvent(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||
public void onPlayerGrapple(PlayerGrappleEvent event) {
|
||||
if (event.isCancelled())
|
||||
return;
|
||||
if (!plugin.getConfig().getBoolean("Properties.CustomItems.GrapplingHook.Enable"))
|
||||
return;
|
||||
|
||||
Player player = event.getPlayer();
|
||||
if (!GeneralMethods.isBender(player.getName(), Element.Chi) && (!GeneralMethods.isBender(player.getName(), Element.Earth) || !EarthMethods.canMetalbend(player))) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
if (GeneralMethods.isBender(player.getName(), Element.Chi) && !player.hasPermission("bending.chi.grapplinghook")) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
if (GeneralMethods.isBender(player.getName(), Element.Earth) && !player.hasPermission("bending.earth.grapplinghook")) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
if (Paralyze.isParalyzed(player) || ChiComboManager.isParalyzed(player) || Bloodbending.isBloodbended(player) || Suffocate.isBreathbent(player)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
event.getHookItem().setDurability((short) -10);
|
||||
if (noGrapplePlayers.containsKey(player.getName())) {
|
||||
return;
|
||||
}
|
||||
|
||||
Entity e = event.getPulledEntity();
|
||||
Location loc = event.getPullLocation();
|
||||
|
||||
if (player.equals(e)) {
|
||||
if (player.getLocation().distance(loc) < 3) { // Too close
|
||||
GrapplingHookAPI.pullPlayerSlightly(player, loc);
|
||||
} else {
|
||||
GrapplingHookAPI.pullEntityToLocation(player, loc);
|
||||
}
|
||||
|
||||
if (GrapplingHookAPI.addUse(player, event.getHookItem())) {
|
||||
GrapplingHookAPI.playGrappleSound(player.getLocation());
|
||||
}
|
||||
GrapplingHookAPI.addPlayerCooldown(player, 100);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||
public void onPlayerInteraction(PlayerInteractEvent event) {
|
||||
if (event.isCancelled())
|
||||
|
|
|
@ -1,5 +1,13 @@
|
|||
package com.projectkorra.projectkorra;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import com.projectkorra.projectkorra.ability.AbilityModuleManager;
|
||||
import com.projectkorra.projectkorra.ability.combo.ComboManager;
|
||||
import com.projectkorra.projectkorra.ability.combo.ComboModuleManager;
|
||||
|
@ -13,21 +21,12 @@ import com.projectkorra.projectkorra.earthbending.EarthbendingManager;
|
|||
import com.projectkorra.projectkorra.firebending.FirebendingManager;
|
||||
import com.projectkorra.projectkorra.object.Preset;
|
||||
import com.projectkorra.projectkorra.storage.DBConnection;
|
||||
import com.projectkorra.projectkorra.util.CraftingRecipes;
|
||||
import com.projectkorra.projectkorra.util.MetricsLite;
|
||||
import com.projectkorra.projectkorra.util.RevertChecker;
|
||||
import com.projectkorra.projectkorra.util.Updater;
|
||||
import com.projectkorra.projectkorra.util.logging.PKLogHandler;
|
||||
import com.projectkorra.projectkorra.waterbending.WaterbendingManager;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class ProjectKorra extends JavaPlugin {
|
||||
|
||||
public static ProjectKorra plugin;
|
||||
|
@ -61,7 +60,6 @@ public class ProjectKorra extends JavaPlugin {
|
|||
new ComboModuleManager();
|
||||
new ComboManager();
|
||||
new ChiComboManager();
|
||||
new CraftingRecipes(this);
|
||||
|
||||
DBConnection.host = getConfig().getString("Storage.MySQL.host");
|
||||
DBConnection.port = getConfig().getInt("Storage.MySQL.port");
|
||||
|
|
|
@ -1,61 +0,0 @@
|
|||
package com.projectkorra.projectkorra.event;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class PlayerGrappleEvent extends Event implements Cancellable {
|
||||
|
||||
public static final HandlerList handlers = new HandlerList();
|
||||
private Player player;
|
||||
private Entity entity;
|
||||
private Location pullLocation;
|
||||
private ItemStack hookItem;
|
||||
private boolean cancelled = false;
|
||||
|
||||
public PlayerGrappleEvent(Player player, Entity entity, Location location) {
|
||||
this.player = player;
|
||||
this.entity = entity;
|
||||
this.pullLocation = location;
|
||||
this.hookItem = player.getItemInHand();
|
||||
}
|
||||
|
||||
public Player getPlayer() {
|
||||
return player;
|
||||
}
|
||||
|
||||
public Entity getPulledEntity() {
|
||||
return entity;
|
||||
}
|
||||
|
||||
public Location getPullLocation() {
|
||||
return pullLocation;
|
||||
}
|
||||
|
||||
public ItemStack getHookItem() {
|
||||
return hookItem;
|
||||
}
|
||||
|
||||
public HandlerList getHandlers() {
|
||||
return handlers;
|
||||
}
|
||||
|
||||
public static HandlerList getHandlerList() {
|
||||
return handlers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCancelled() {
|
||||
return cancelled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCancelled(boolean set) {
|
||||
this.cancelled = set;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
package com.projectkorra.projectkorra.util;
|
||||
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.inventory.ShapedRecipe;
|
||||
|
||||
public class CraftingRecipes {
|
||||
|
||||
static ProjectKorra plugin;
|
||||
|
||||
public CraftingRecipes(ProjectKorra plugin) {
|
||||
CraftingRecipes.plugin = plugin;
|
||||
registerRecipes();
|
||||
}
|
||||
|
||||
static FileConfiguration config = ProjectKorra.plugin.getConfig();
|
||||
|
||||
public static void registerRecipes() {
|
||||
if (config.getBoolean("Properties.CustomItems.GrapplingHook.Enable")) {
|
||||
plugin.getServer().addRecipe(ironHookRecipe);
|
||||
plugin.getServer().addRecipe(goldHookRecipe);
|
||||
}
|
||||
}
|
||||
|
||||
static ShapedRecipe ironHookRecipe = new ShapedRecipe(GrapplingHookAPI.createHook(config.getInt("Properties.CustomItems.GrapplingHook.IronUses"))).shape(" **", " &*", " ").setIngredient('*', Material.IRON_INGOT).setIngredient('&', Material.FISHING_ROD);
|
||||
|
||||
static ShapedRecipe goldHookRecipe = new ShapedRecipe(GrapplingHookAPI.createHook(config.getInt("Properties.CustomItems.GrapplingHook.GoldUses"))).shape(" **", " &*", " ").setIngredient('*', Material.GOLD_INGOT).setIngredient('&', Material.FISHING_ROD);
|
||||
|
||||
}
|
|
@ -1,164 +0,0 @@
|
|||
package com.projectkorra.projectkorra.util;
|
||||
|
||||
import com.projectkorra.projectkorra.PKListener;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class GrapplingHookAPI {
|
||||
|
||||
public static ItemStack createHook(int uses) {
|
||||
ItemStack is = new ItemStack(Material.FISHING_ROD);
|
||||
ItemMeta im = is.getItemMeta();
|
||||
im.setDisplayName(ChatColor.GOLD + "Grappling Hook");
|
||||
ArrayList<String> lore = new ArrayList<String>();
|
||||
lore.add(ChatColor.GRAY + "Uses Left: " + ChatColor.GREEN + uses);
|
||||
im.setLore(lore);
|
||||
is.setItemMeta(im);
|
||||
return is;
|
||||
}
|
||||
|
||||
public static boolean isGrapplingHook(ItemStack is) {
|
||||
ItemMeta im = is.getItemMeta();
|
||||
if (is.getType() == Material.FISHING_ROD && im.getDisplayName() != null && im.getDisplayName().equals(ChatColor.GOLD + "Grappling Hook")) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static int getUses(ItemStack is) {
|
||||
ItemMeta im = is.getItemMeta();
|
||||
String usesLine = im.getLore().get(0);
|
||||
String uses = usesLine.substring(usesLine.indexOf("a") + 1, usesLine.length());
|
||||
|
||||
if (isInteger(uses)) {
|
||||
return Integer.parseInt(uses);
|
||||
} else
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static boolean playerOnCooldown(Player player) {
|
||||
if (PKListener.noGrapplePlayers.containsKey(player.getName()))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void removePlayerCooldown(Player player) {
|
||||
if (PKListener.noGrapplePlayers.containsKey(player.getName())) {
|
||||
PKListener.noGrapplePlayers.remove(player.getName());
|
||||
}
|
||||
}
|
||||
|
||||
public static void addPlayerCooldown(final Player player, int seconds) {
|
||||
if (PKListener.noGrapplePlayers.containsKey(player.getName())) {
|
||||
Bukkit.getServer().getScheduler().cancelTask(PKListener.noGrapplePlayers.get(player.getName()));
|
||||
}
|
||||
|
||||
int taskId = ProjectKorra.plugin.getServer().getScheduler().scheduleSyncDelayedTask(ProjectKorra.plugin, new Runnable() {
|
||||
public void run() {
|
||||
removePlayerCooldown(player);
|
||||
}
|
||||
}, (100));
|
||||
|
||||
PKListener.noGrapplePlayers.put(player.getName(), taskId);
|
||||
}
|
||||
|
||||
public static void setUses(ItemStack is, int uses) {
|
||||
ItemMeta im = is.getItemMeta();
|
||||
List<String> lore = new ArrayList<String>();
|
||||
|
||||
lore.add(ChatColor.GRAY + "Uses Left: " + ChatColor.GREEN + uses);
|
||||
im.setLore(lore);
|
||||
is.setItemMeta(im);
|
||||
}
|
||||
|
||||
public static boolean addUse(Player player, ItemStack hook) {
|
||||
if (player.getGameMode() == GameMode.CREATIVE)
|
||||
return true;
|
||||
|
||||
ItemMeta im = hook.getItemMeta();
|
||||
String usesLine = im.getLore().get(0);
|
||||
String uses = usesLine.substring(usesLine.indexOf("a") + 1, usesLine.length());
|
||||
|
||||
if (isInteger(uses) == false) {
|
||||
player.setItemInHand(new ItemStack(Material.AIR));
|
||||
player.getWorld().playSound(player.getLocation(), Sound.ITEM_BREAK, 10f, 1f);
|
||||
return false;
|
||||
} else {
|
||||
int currentUses = Integer.parseInt(uses);
|
||||
currentUses--;
|
||||
|
||||
if (currentUses == 0) {
|
||||
player.setItemInHand(new ItemStack(Material.AIR));
|
||||
player.getWorld().playSound(player.getLocation(), Sound.ITEM_BREAK, 10f, 1f);
|
||||
return false;
|
||||
} else {
|
||||
ArrayList<String> lore = new ArrayList<String>();
|
||||
lore.add(ChatColor.GRAY + "Uses Left: " + ChatColor.GREEN + currentUses);
|
||||
im.setLore(lore);
|
||||
hook.setItemMeta(im);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void playGrappleSound(Location loc) {
|
||||
loc.getWorld().playSound(loc, Sound.MAGMACUBE_JUMP, 10f, 1f);
|
||||
}
|
||||
|
||||
private static boolean isInteger(String s) {
|
||||
try {
|
||||
Integer.parseInt(s);
|
||||
}
|
||||
catch (NumberFormatException e) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void pullPlayerSlightly(Player p, Location loc) {
|
||||
if (loc.getY() > p.getLocation().getY()) {
|
||||
p.setVelocity(new Vector(0, 0.25, 0));
|
||||
return;
|
||||
}
|
||||
|
||||
Location playerLoc = p.getLocation();
|
||||
|
||||
Vector vector = loc.toVector().subtract(playerLoc.toVector());
|
||||
p.setVelocity(vector);
|
||||
}
|
||||
|
||||
public static void pullEntityToLocation(final Entity e, Location loc) {
|
||||
Location entityLoc = e.getLocation();
|
||||
|
||||
entityLoc.setY(entityLoc.getY() + 0.5);
|
||||
e.teleport(entityLoc);
|
||||
|
||||
double g = -0.08;
|
||||
double d = loc.distance(entityLoc);
|
||||
double t = d;
|
||||
double v_x = (1.0 + 0.07 * t) * (loc.getX() - entityLoc.getX()) / t;
|
||||
double v_y = (1.0 + 0.03 * t) * (loc.getY() - entityLoc.getY()) / t - 0.5 * g * t;
|
||||
double v_z = (1.0 + 0.07 * t) * (loc.getZ() - entityLoc.getZ()) / t;
|
||||
|
||||
Vector v = e.getVelocity();
|
||||
v.setX(v_x);
|
||||
v.setY(v_y);
|
||||
v.setZ(v_z);
|
||||
e.setVelocity(v);
|
||||
}
|
||||
|
||||
}
|
|
@ -127,7 +127,6 @@ permissions:
|
|||
bending.earth.metalbending: true
|
||||
bending.earth.lavabending: true
|
||||
bending.earth.sandbending: true
|
||||
bending.earth.grapplinghook: true
|
||||
bending.ability.LavaSurge: true
|
||||
bending.ability.LavaFlow: true
|
||||
bending.ability.EarthSmash: true
|
||||
|
@ -169,7 +168,6 @@ permissions:
|
|||
bending.ability.SwiftKick: true
|
||||
bending.ability.ChiCombo: true
|
||||
bending.chi.passive: true
|
||||
bending.chi.grapplinghook: true
|
||||
bending.avatar:
|
||||
default: false
|
||||
description: Grants the Avatar Color.
|
||||
|
|
Loading…
Reference in a new issue