mirror of
https://github.com/TotalFreedomMC/TF-ProjectKorra.git
synced 2025-02-11 19:50:37 +00:00
Cherry pick more PRs from master
This commit is contained in:
parent
0ba7dda744
commit
203c4aa0b0
12 changed files with 323 additions and 127 deletions
|
@ -1,11 +1,58 @@
|
|||
package com.projectkorra.projectkorra;
|
||||
|
||||
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 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.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.BlockState;
|
||||
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;
|
||||
|
@ -52,6 +99,7 @@ import com.projectkorra.projectkorra.firebending.Combustion;
|
|||
import com.projectkorra.projectkorra.firebending.FireBlast;
|
||||
import com.projectkorra.projectkorra.firebending.FireCombo;
|
||||
import com.projectkorra.projectkorra.firebending.FireShield;
|
||||
import com.projectkorra.projectkorra.object.Preset;
|
||||
import com.projectkorra.projectkorra.storage.DBConnection;
|
||||
import com.projectkorra.projectkorra.util.BlockCacheElement;
|
||||
import com.projectkorra.projectkorra.util.Flight;
|
||||
|
@ -62,59 +110,12 @@ import com.projectkorra.projectkorra.waterbending.WaterSpout;
|
|||
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
|
||||
import com.sk89q.worldguard.protection.flags.DefaultFlag;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.BlockState;
|
||||
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.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;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public class GeneralMethods {
|
||||
|
@ -1225,7 +1226,8 @@ public class GeneralMethods {
|
|||
GeneralMethods.stopBending();
|
||||
ConfigManager.defaultConfig.reload();
|
||||
ConfigManager.deathMsgConfig.reload();
|
||||
|
||||
ConfigManager.presetConfig.reload();
|
||||
Preset.loadExternalPresets();
|
||||
CoreAbility.registerAbilities();
|
||||
new ComboManager();
|
||||
new MultiAbilityManager();
|
||||
|
|
|
@ -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.CoreAbility;
|
||||
import com.projectkorra.projectkorra.ability.util.ComboManager;
|
||||
import com.projectkorra.projectkorra.ability.util.MultiAbilityManager;
|
||||
|
@ -9,6 +17,7 @@ import com.projectkorra.projectkorra.command.Commands;
|
|||
import com.projectkorra.projectkorra.configuration.ConfigManager;
|
||||
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.MetricsLite;
|
||||
import com.projectkorra.projectkorra.util.RevertChecker;
|
||||
|
@ -16,14 +25,6 @@ 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;
|
||||
|
@ -51,11 +52,13 @@ public class ProjectKorra extends JavaPlugin {
|
|||
CoreAbility.registerAbilities();
|
||||
new ConfigManager();
|
||||
new GeneralMethods(this);
|
||||
updater = new Updater(this, "http://projectkorra.com/forums/dev-builds.16/index.rss");
|
||||
updater = new Updater(this, "http://projectkorra.com/forum/forums/dev-builds.16/index.rss");
|
||||
new Commands(this);
|
||||
new MultiAbilityManager();
|
||||
new ComboManager();
|
||||
|
||||
Preset.loadExternalPresets();
|
||||
|
||||
DBConnection.host = getConfig().getString("Storage.MySQL.host");
|
||||
DBConnection.port = getConfig().getInt("Storage.MySQL.port");
|
||||
DBConnection.pass = getConfig().getString("Storage.MySQL.pass");
|
||||
|
|
|
@ -1,22 +1,23 @@
|
|||
package com.projectkorra.projectkorra.command;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.projectkorra.projectkorra.Element;
|
||||
import com.projectkorra.projectkorra.ability.ComboAbility;
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.ability.util.ComboManager;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Executor for /bending help. Extends {@link PKCommand}.
|
||||
*/
|
||||
public class HelpCommand extends PKCommand {
|
||||
public HelpCommand() {
|
||||
super("help", "/bending help", "This command provides information on how to use other commands in ProjectKorra.", new String[] { "help", "h" });
|
||||
super("help", "/bending help [Topic/Page]", "This command provides information on how to use other commands in ProjectKorra.", new String[] { "help", "h" });
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -24,15 +25,26 @@ public class HelpCommand extends PKCommand {
|
|||
if (!hasPermission(sender) || !correctLength(sender, args.size(), 0, 1))
|
||||
return;
|
||||
else if (args.size() == 0) {
|
||||
List<String> strings = new ArrayList<String>();
|
||||
for (PKCommand command : instances.values()) {
|
||||
sender.sendMessage(ChatColor.YELLOW + command.getProperUse());
|
||||
strings.add(command.getProperUse());
|
||||
}
|
||||
for (String s : getPage(strings, ChatColor.GOLD + "Commands: <required> [optional]", 1)) {
|
||||
sender.sendMessage(ChatColor.YELLOW + s);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
String arg = args.get(0).toLowerCase();
|
||||
|
||||
if (instances.keySet().contains(arg.toLowerCase())) { //bending help command
|
||||
if (isNumeric(arg)) {
|
||||
List<String> strings = new ArrayList<String>();
|
||||
for (PKCommand command : instances.values()) {
|
||||
strings.add(command.getProperUse());
|
||||
}
|
||||
for (String s : getPage(strings, ChatColor.GOLD + "Commands: <required> [optional]", Integer.valueOf(arg))) {
|
||||
sender.sendMessage(ChatColor.YELLOW + s);
|
||||
}
|
||||
} else if (instances.keySet().contains(arg.toLowerCase())) {//bending help command
|
||||
instances.get(arg).help(sender, true);
|
||||
} else if (Arrays.asList(Commands.comboaliases).contains(arg)) { //bending help elementcombo
|
||||
sender.sendMessage(ChatColor.GOLD + "Proper Usage: " + ChatColor.RED + "/bending display " + arg + ChatColor.GOLD + " or " + ChatColor.RED + "/bending help <Combo Name>");
|
||||
|
|
|
@ -1,13 +1,18 @@
|
|||
package com.projectkorra.projectkorra.command;
|
||||
|
||||
import java.text.NumberFormat;
|
||||
import java.text.ParsePosition;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Abstract representation of a command executor. Implements
|
||||
* {@link SubCommand}.
|
||||
|
@ -183,5 +188,52 @@ public abstract class PKCommand implements SubCommand {
|
|||
return "chi";
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns a boolean if the string provided is numerical.
|
||||
* @param id
|
||||
* @return boolean
|
||||
*/
|
||||
protected boolean isNumeric(String id) {
|
||||
NumberFormat formatter = NumberFormat.getInstance();
|
||||
ParsePosition pos = new ParsePosition(0);
|
||||
formatter.parse(id, pos);
|
||||
return id.length() == pos.getIndex();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list for of commands for a page.
|
||||
* @param entries
|
||||
* @param title
|
||||
* @param page
|
||||
* @return
|
||||
*/
|
||||
protected List<String> getPage(List<String> entries, String title, int page) {
|
||||
List<String> strings = new ArrayList<String>();
|
||||
Collections.sort(entries);
|
||||
|
||||
if (page < 1) {
|
||||
page = 1;
|
||||
}
|
||||
if ((page * 8) - 8 >= entries.size()) {
|
||||
page = Math.round(entries.size() / 8) + 1;
|
||||
if (page < 1) {
|
||||
page = 1;
|
||||
}
|
||||
}
|
||||
strings.add(ChatColor.GOLD + "ProjectKorra " + ChatColor.DARK_GRAY + "- [" + ChatColor.GRAY + page + "/" + (int) Math.ceil((entries.size()+.0)/(8+.0)) + ChatColor.DARK_GRAY + "]");
|
||||
strings.add(title);
|
||||
if (entries.size() > ((page * 8) - 8)) {
|
||||
for (int i = ((page * 8) - 8); i < entries.size(); i++) {
|
||||
if (entries.get(i) != null) {
|
||||
strings.add(entries.get(i).toString());
|
||||
}
|
||||
if (i >= (page * 8)-1) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return strings;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,19 +1,20 @@
|
|||
package com.projectkorra.projectkorra.command;
|
||||
|
||||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.util.MultiAbilityManager;
|
||||
import com.projectkorra.projectkorra.object.Preset;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.GeneralMethods;
|
||||
import com.projectkorra.projectkorra.ability.util.MultiAbilityManager;
|
||||
import com.projectkorra.projectkorra.object.Preset;
|
||||
|
||||
/**
|
||||
* Executor for /bending preset. Extends {@link PKCommand}.
|
||||
*/
|
||||
|
@ -30,7 +31,7 @@ public class PresetCommand extends PKCommand {
|
|||
|
||||
@Override
|
||||
public void execute(CommandSender sender, List<String> args) {
|
||||
if (!isPlayer(sender) || !correctLength(sender, args.size(), 1, 2)) {
|
||||
if (!isPlayer(sender) || !correctLength(sender, args.size(), 1, 3)) {
|
||||
return;
|
||||
} else if (MultiAbilityManager.hasMultiAbilityBound((Player) sender)) {
|
||||
sender.sendMessage(ChatColor.RED + "You can't edit your binds right now!");
|
||||
|
@ -74,16 +75,44 @@ public class PresetCommand extends PKCommand {
|
|||
sender.sendMessage(ChatColor.GREEN + "You have deleted your preset named: " + ChatColor.YELLOW + name);
|
||||
return;
|
||||
} else if (Arrays.asList(bindaliases).contains(args.get(0)) && hasPermission(sender, "bind")) { //bending preset bind name
|
||||
if (!Preset.presetExists(player, name)) {
|
||||
sender.sendMessage(ChatColor.RED + "You don't have a preset with that name.");
|
||||
return;
|
||||
}
|
||||
|
||||
Preset preset = Preset.getPreset(player, name);
|
||||
boolean boundAll = Preset.bindPreset(player, preset);
|
||||
sender.sendMessage(ChatColor.GREEN + "Your bound slots have been set to match the " + ChatColor.YELLOW + name + ChatColor.GREEN + " preset.");
|
||||
if (!boundAll) {
|
||||
sender.sendMessage(ChatColor.RED + "Some abilities were not bound because you cannot bend the required element.");
|
||||
if (args.size() < 3) {
|
||||
boolean boundAll = false;
|
||||
if (Preset.presetExists(player, name)) {
|
||||
Preset preset = Preset.getPreset(player, name);
|
||||
boundAll = Preset.bindPreset(player, preset);
|
||||
} else if (Preset.externalPresetExists(name) && hasPermission(sender, "bind.external")) {
|
||||
boundAll = Preset.bindExternalPreset(player, name);
|
||||
} else if (!Preset.externalPresetExists(name) && hasPermission(sender, "bind.external")) {
|
||||
sender.sendMessage(ChatColor.RED + "No external preset with that name exists.");
|
||||
return;
|
||||
} else {
|
||||
sender.sendMessage(ChatColor.RED + "You don't have a preset with that name.");
|
||||
return;
|
||||
}
|
||||
|
||||
sender.sendMessage(ChatColor.GREEN + "Your bound slots have been set to match the " + ChatColor.YELLOW + name + ChatColor.GREEN + " preset.");
|
||||
if (!boundAll) {
|
||||
sender.sendMessage(ChatColor.RED + "Some abilities were not bound because you cannot bend the required element.");
|
||||
}
|
||||
} else if (hasPermission(sender, "bind.external.other")) {
|
||||
if (!Preset.externalPresetExists(name)) {
|
||||
sender.sendMessage(ChatColor.RED + "No external preset with that name exists.");
|
||||
return;
|
||||
}
|
||||
|
||||
Player player2 = Bukkit.getPlayer(args.get(2));
|
||||
if (player2 != null && player2.isOnline()) {
|
||||
boolean boundAll = Preset.bindExternalPreset(player2, name);
|
||||
|
||||
sender.sendMessage(ChatColor.GREEN + "The bound slots of " + ChatColor.YELLOW + player2.getName() + ChatColor.GREEN + " have been set to match the " + ChatColor.YELLOW + name + ChatColor.GREEN + " preset.");
|
||||
player2.sendMessage(ChatColor.GREEN + "Your bound slots have been set to match the " + ChatColor.YELLOW + name + ChatColor.GREEN + " preset.");
|
||||
if (!boundAll) {
|
||||
player2.sendMessage(ChatColor.RED + "Some abilities were not bound, either the preset");
|
||||
}
|
||||
return;
|
||||
} else {
|
||||
sender.sendMessage(ChatColor.RED + "Player not found.");
|
||||
}
|
||||
}
|
||||
return;
|
||||
} else if (Arrays.asList(createaliases).contains(args.get(0)) && hasPermission(sender, "create")) { //bending preset create name
|
||||
|
|
|
@ -30,7 +30,7 @@ public class WhoCommand extends PKCommand {
|
|||
Map<String, String> staff = new HashMap<String, String>();
|
||||
|
||||
public WhoCommand() {
|
||||
super("who", "/bending who [Player]", "This command will tell you what element all players that are online are (If you don't specify a player) or give you information about the player that you specify.", new String[] { "who", "w" });
|
||||
super("who", "/bending who [Player/Page]", "This command will tell you what element all players that are online are (If you don't specify a player) or give you information about the player that you specify.", new String[] { "who", "w" });
|
||||
|
||||
staff.put("8621211e-283b-46f5-87bc-95a66d68880e", ChatColor.RED + "ProjectKorra Founder"); // MistPhizzle
|
||||
|
||||
|
@ -66,9 +66,13 @@ public class WhoCommand extends PKCommand {
|
|||
public void execute(CommandSender sender, List<String> args) {
|
||||
if (!hasPermission(sender) || !correctLength(sender, args.size(), 0, 1)) {
|
||||
return;
|
||||
} else if (args.size() == 1) {
|
||||
} else if (args.size() == 1 && args.get(0).length() > 2) {
|
||||
whoPlayer(sender, args.get(0));
|
||||
} else if (args.size() == 0) {
|
||||
} else if (args.size() == 0 || args.size() == 1) {
|
||||
int page = 1;
|
||||
if (args.size() == 1 && isNumeric(args.get(0))) {
|
||||
page = Integer.valueOf(args.get(0));
|
||||
}
|
||||
List<String> players = new ArrayList<String>();
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
String playerName = player.getName();
|
||||
|
@ -122,8 +126,8 @@ public class WhoCommand extends PKCommand {
|
|||
if (players.isEmpty()) {
|
||||
sender.sendMessage(ChatColor.RED + "There is no one online.");
|
||||
} else {
|
||||
for (String st : players) {
|
||||
sender.sendMessage(st);
|
||||
for (String s : getPage(players, ChatColor.GOLD + "Players:", page)) {
|
||||
sender.sendMessage(s);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,19 +7,40 @@ import java.util.ArrayList;
|
|||
|
||||
public class ConfigManager {
|
||||
|
||||
public static Config presetConfig;
|
||||
public static Config deathMsgConfig;
|
||||
public static Config defaultConfig;
|
||||
|
||||
public ConfigManager() {
|
||||
presetConfig = new Config(new File("presets.yml"));
|
||||
deathMsgConfig = new Config(new File("deathmessages.yml"));
|
||||
defaultConfig = new Config(new File("config.yml"));
|
||||
configCheck(ConfigType.DEFAULT);
|
||||
configCheck(ConfigType.DEATH_MESSAGE);
|
||||
configCheck(ConfigType.PRESETS);
|
||||
}
|
||||
|
||||
public static void configCheck(ConfigType type) {
|
||||
FileConfiguration config;
|
||||
switch (type) {
|
||||
case PRESETS:
|
||||
config = presetConfig.get();
|
||||
|
||||
ArrayList<String> abilities = new ArrayList<String>();
|
||||
abilities.add("FireBlast");
|
||||
abilities.add("AirBlast");
|
||||
abilities.add("WaterManipulation");
|
||||
abilities.add("EarthBlast");
|
||||
abilities.add("FireBurst");
|
||||
abilities.add("AirBurst");
|
||||
abilities.add("Torrent");
|
||||
abilities.add("Shockwave");
|
||||
abilities.add("AvatarState");
|
||||
|
||||
config.addDefault("Example", abilities);
|
||||
|
||||
presetConfig.save();
|
||||
break;
|
||||
case DEATH_MESSAGE:
|
||||
config = deathMsgConfig.get();
|
||||
|
||||
|
@ -202,6 +223,7 @@ public class ConfigManager {
|
|||
config.addDefault("Abilities.AvatarState.PotionEffects.Speed.Enabled", true);
|
||||
config.addDefault("Abilities.AvatarState.PotionEffects.Speed.Power", 3);
|
||||
config.addDefault("Abilities.AvatarState.PotionEffects.DamageResistance.Enabled", true);
|
||||
config.addDefault("Abilities.AvatarState.PotionEffects.DamageResistance.Power", 3);
|
||||
config.addDefault("Abilities.AvatarState.PotionEffects.FireResistance.Enabled", true);
|
||||
config.addDefault("Abilities.AvatarState.PotionEffects.FireResistance.Power", 3);
|
||||
|
||||
|
@ -640,6 +662,7 @@ public class ConfigManager {
|
|||
config.addDefault("Abilities.Earth.EarthSmash.AllowGrab", true);
|
||||
config.addDefault("Abilities.Earth.EarthSmash.AllowFlight", true);
|
||||
config.addDefault("Abilities.Earth.EarthSmash.GrabRange", 10);
|
||||
config.addDefault("Abilities.Earth.EarthSmash.SelectRange", 10);
|
||||
config.addDefault("Abilities.Earth.EarthSmash.ChargeTime", 1500);
|
||||
config.addDefault("Abilities.Earth.EarthSmash.Cooldown", 2500);
|
||||
config.addDefault("Abilities.Earth.EarthSmash.ShootRange", 30);
|
||||
|
|
|
@ -14,5 +14,9 @@ public enum ConfigType {
|
|||
/**
|
||||
* Death Message configuration represented by deathmessages.yml
|
||||
*/
|
||||
DEATH_MESSAGE;
|
||||
DEATH_MESSAGE,
|
||||
/**
|
||||
* Preset configuration represented by presets.yml
|
||||
*/
|
||||
PRESETS;
|
||||
}
|
||||
|
|
|
@ -43,6 +43,7 @@ public class EarthSmash extends EarthAbility {
|
|||
private long shootAnimationInterval;
|
||||
private long flightAnimationInterval;
|
||||
private long liftAnimationInterval;
|
||||
private double selectRange;
|
||||
private double grabRange;
|
||||
private double shootRange;
|
||||
private double damage;
|
||||
|
@ -73,6 +74,7 @@ public class EarthSmash extends EarthAbility {
|
|||
this.flightDetectionRadius = getConfig().getDouble("Abilities.Earth.EarthSmash.FlightDetectionRadius");
|
||||
this.allowGrab = getConfig().getBoolean("Abilities.Earth.EarthSmash.AllowGrab");
|
||||
this.allowFlight = getConfig().getBoolean("Abilities.Earth.EarthSmash.AllowFlight");
|
||||
this.selectRange = getConfig().getDouble("Abilities.Earth.EarthSmash.SelectRange");
|
||||
this.grabRange = getConfig().getDouble("Abilities.Earth.EarthSmash.GrabRange");
|
||||
this.shootRange = getConfig().getDouble("Abilities.Earth.EarthSmash.ShootRange");
|
||||
this.damage = getConfig().getDouble("Abilities.Earth.EarthSmash.Damage");
|
||||
|
@ -89,6 +91,7 @@ public class EarthSmash extends EarthAbility {
|
|||
|
||||
if (type == ClickType.SHIFT_DOWN || type == ClickType.SHIFT_UP && !player.isSneaking()) {
|
||||
if (bPlayer.isAvatarState()) {
|
||||
selectRange = AvatarState.getValue(selectRange);
|
||||
grabRange = AvatarState.getValue(grabRange);
|
||||
chargeTime = 0;
|
||||
cooldown = 0;
|
||||
|
@ -110,13 +113,13 @@ public class EarthSmash extends EarthAbility {
|
|||
|
||||
EarthSmash grabbedSmash = aimingAtSmashCheck(player, State.LIFTED);
|
||||
if (grabbedSmash == null) {
|
||||
if (bPlayer.isOnCooldown(this)) {
|
||||
return;
|
||||
}
|
||||
grabbedSmash = aimingAtSmashCheck(player, State.SHOT);
|
||||
}
|
||||
|
||||
if (grabbedSmash != null) {
|
||||
if (bPlayer.isOnCooldown(this)) {
|
||||
return;
|
||||
}
|
||||
grabbedSmash.state = State.GRABBED;
|
||||
grabbedSmash.grabbedDistance = grabbedSmash.location.distance(player.getEyeLocation());
|
||||
grabbedSmash.player = player;
|
||||
|
@ -168,7 +171,7 @@ public class EarthSmash extends EarthAbility {
|
|||
if (state == State.START && progressCounter > 1) {
|
||||
if (!player.isSneaking()) {
|
||||
if (System.currentTimeMillis() - startTime >= chargeTime) {
|
||||
origin = getEarthSourceBlock(grabRange);
|
||||
origin = getEarthSourceBlock(selectRange);
|
||||
if (origin == null) {
|
||||
remove();
|
||||
return;
|
||||
|
@ -540,7 +543,7 @@ public class EarthSmash extends EarthAbility {
|
|||
for (Entity entity : entities) {
|
||||
if (entity instanceof LivingEntity && entity != player && !affectedEntities.contains(entity)) {
|
||||
affectedEntities.add(entity);
|
||||
double damage = currentBlocks.size() / 13 * this.damage;
|
||||
double damage = currentBlocks.size() / 13.0 * this.damage;
|
||||
GeneralMethods.damageEntity(player, entity, damage, "EarthSmash");
|
||||
Vector travelVec = GeneralMethods.getDirection(location, entity.getLocation());
|
||||
entity.setVelocity(travelVec.setY(knockup).normalize().multiply(knockback));
|
||||
|
@ -822,6 +825,14 @@ public class EarthSmash extends EarthAbility {
|
|||
public void setGrabRange(double grabRange) {
|
||||
this.grabRange = grabRange;
|
||||
}
|
||||
|
||||
public double getSelectRange() {
|
||||
return selectRange;
|
||||
}
|
||||
|
||||
public void setSelectRange(double selectRange) {
|
||||
this.selectRange = selectRange;
|
||||
}
|
||||
|
||||
public double getShootRange() {
|
||||
return shootRange;
|
||||
|
|
|
@ -1,13 +1,5 @@
|
|||
package com.projectkorra.projectkorra.object;
|
||||
|
||||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.storage.DBConnection;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
|
@ -17,6 +9,16 @@ import java.util.List;
|
|||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.projectkorra.projectkorra.BendingPlayer;
|
||||
import com.projectkorra.projectkorra.ProjectKorra;
|
||||
import com.projectkorra.projectkorra.ability.CoreAbility;
|
||||
import com.projectkorra.projectkorra.configuration.ConfigManager;
|
||||
import com.projectkorra.projectkorra.storage.DBConnection;
|
||||
|
||||
/**
|
||||
* A savable association of abilities and hotbar slots, stored per player.
|
||||
*
|
||||
|
@ -30,6 +32,8 @@ public class Preset {
|
|||
* presets}, keyed to their UUID
|
||||
*/
|
||||
public static ConcurrentHashMap<UUID, List<Preset>> presets = new ConcurrentHashMap<UUID, List<Preset>>();
|
||||
public static FileConfiguration config = ConfigManager.presetConfig.get();
|
||||
public static HashMap<String, ArrayList<String>> externalPresets = new HashMap<String, ArrayList<String>>();
|
||||
static String loadQuery = "SELECT * FROM pk_presets WHERE uuid = ?";
|
||||
static String loadNameQuery = "SELECT * FROM pk_presets WHERE uuid = ? AND name = ?";
|
||||
static String deleteQuery = "DELETE FROM pk_presets WHERE uuid = ? AND name = ?";
|
||||
|
@ -179,6 +183,25 @@ public class Preset {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void loadExternalPresets() {
|
||||
HashMap<String, ArrayList<String>> presets = new HashMap<String, ArrayList<String>>();
|
||||
for(String name : config.getKeys(false)) {
|
||||
if (!presets.containsKey(name)) if (!config.getStringList(name).isEmpty() && config.getStringList(name).size() <= 9) {
|
||||
presets.put(name.toLowerCase(), (ArrayList<String>) config.getStringList(name));
|
||||
}
|
||||
}
|
||||
externalPresets = presets;
|
||||
}
|
||||
|
||||
public static boolean externalPresetExists(String name) {
|
||||
for (String preset : externalPresets.keySet()) {
|
||||
if (name.equalsIgnoreCase(preset)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the contents of a Preset for the specified Player.
|
||||
|
@ -198,6 +221,37 @@ public class Preset {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static boolean bindExternalPreset(Player player, String name) {
|
||||
boolean boundAll = true;
|
||||
int slot = 0;
|
||||
BendingPlayer bPlayer = BendingPlayer.getBendingPlayer(player);
|
||||
if (bPlayer == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
HashMap<Integer, String> abilities = new HashMap<Integer, String>();
|
||||
|
||||
if (externalPresetExists(name.toLowerCase())) {
|
||||
for (String ability : externalPresets.get(name.toLowerCase())) {
|
||||
slot++;
|
||||
CoreAbility coreAbil = CoreAbility.getAbility(ability);
|
||||
if (coreAbil != null) {
|
||||
abilities.put(slot, coreAbil.getName());
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 1; i <= 9; i++) {
|
||||
if (!bPlayer.canBind(CoreAbility.getAbility(abilities.get(i)))) {
|
||||
abilities.remove(i);
|
||||
boundAll = false;
|
||||
}
|
||||
}
|
||||
bPlayer.setAbilities(abilities);
|
||||
return boundAll;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes the Preset from the database.
|
||||
|
|
|
@ -35,14 +35,14 @@ public class ActionBar {
|
|||
return initialised;
|
||||
}
|
||||
|
||||
public static boolean sendActionBar(String message, Player... p) {
|
||||
public static boolean sendActionBar(String message, Player... player) {
|
||||
if (!initialised) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
Object o = chatSer.newInstance(message);
|
||||
Object packet = packetChat.newInstance(o, (byte) 2);
|
||||
sendTo(packet, p);
|
||||
sendTo(packet, player);
|
||||
}
|
||||
catch (ReflectiveOperationException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -51,8 +51,8 @@ public class ActionBar {
|
|||
return initialised;
|
||||
}
|
||||
|
||||
private static void sendTo(Object packet, Player... pl) throws ReflectiveOperationException {
|
||||
for (Player p : pl) {
|
||||
private static void sendTo(Object packet, Player... player) throws ReflectiveOperationException {
|
||||
for (Player p : player) {
|
||||
Object entityplayer = getHandle.invoke(p);
|
||||
Object PlayerConnection = playerConnection.get(entityplayer);
|
||||
sendPacket.invoke(PlayerConnection, packet);
|
||||
|
|
|
@ -33,6 +33,8 @@ permissions:
|
|||
bending.command.give: true
|
||||
bending.command.invincible: true
|
||||
bending.command.check: true
|
||||
bending.command.preset.bind.external: true
|
||||
bending.command.preset.bind.external.other: true
|
||||
bending.admin.debug: true
|
||||
bending.admin.remove: true
|
||||
bending.player:
|
||||
|
|
Loading…
Reference in a new issue