diff --git a/.gitignore b/.gitignore index c1fc8b034..970fac184 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ update Reference /Plugins/.idea/workspace.xml +/Plugins/.idea/tasks.xml /Plugins/out BungeeCord /Plugins/Mineplex.Bungee.Mineplexer/*.gitignore diff --git a/Art/Halloween Horror.jpg b/Art/Halloween Horror.jpg new file mode 100644 index 000000000..b82bc42a3 Binary files /dev/null and b/Art/Halloween Horror.jpg differ diff --git a/Art/Pumpkin.png b/Art/Pumpkin.png new file mode 100644 index 000000000..81ea7c47e Binary files /dev/null and b/Art/Pumpkin.png differ diff --git a/Art/Spooky Sale.png b/Art/Spooky Sale.png new file mode 100644 index 000000000..75ea457d6 Binary files /dev/null and b/Art/Spooky Sale.png differ diff --git a/Plugins/.idea/artifacts/Nautilus_Game_Arcade_jar.xml b/Plugins/.idea/artifacts/Nautilus_Game_Arcade_jar.xml index ca2ed67aa..619cdf3df 100644 --- a/Plugins/.idea/artifacts/Nautilus_Game_Arcade_jar.xml +++ b/Plugins/.idea/artifacts/Nautilus_Game_Arcade_jar.xml @@ -19,6 +19,7 @@ + \ No newline at end of file diff --git a/Plugins/.idea/dataSources.xml b/Plugins/.idea/dataSources.xml new file mode 100644 index 000000000..16b134887 --- /dev/null +++ b/Plugins/.idea/dataSources.xml @@ -0,0 +1,19 @@ + + + + + mysql + true + com.mysql.jdbc.Driver + jdbc:mysql://db.mineplex.com:3306 + + + + + + + + + + + \ No newline at end of file diff --git a/Plugins/.idea/modules.xml b/Plugins/.idea/modules.xml index bcc0470f4..f7936ba2e 100644 --- a/Plugins/.idea/modules.xml +++ b/Plugins/.idea/modules.xml @@ -11,7 +11,6 @@ - diff --git a/Plugins/Libraries/Votifier.jar b/Plugins/Libraries/Votifier.jar new file mode 100644 index 000000000..9751f180a Binary files /dev/null and b/Plugins/Libraries/Votifier.jar differ diff --git a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancer.java b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancer.java index 55427e477..443dc104b 100644 --- a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancer.java +++ b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancer.java @@ -96,6 +96,8 @@ public class LobbyBalancer implements Listener, Runnable if (timeSpentInLock > 50) System.out.println("[==] TIMING [==] Locked loading servers for " + timeSpentInLock + "ms"); + + _lobbyIndex = 0; } } } diff --git a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/motd/MotdManager.java b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/motd/MotdManager.java index 75cf934cf..bd381a4d8 100644 --- a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/motd/MotdManager.java +++ b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/motd/MotdManager.java @@ -55,12 +55,12 @@ public class MotdManager implements Listener, Runnable //String motdLine = "§f§l◄ §c§lMaintenance§f§l ►"; //String motdLine = "§f§l◄ §a§lCarl the Creeper§f§l ►"; - String motdLine = " §b§l◄§f§lNEW GAME§b§l► §f§l◄§b§lEVOLUTION§f§l► §b§l◄§f§lNEW GAME§b§l►"; + String motdLine = " §4§l§n H A L L O W E E N H O R R O R §f"; //String motdLine = " §f§l◄ §a§lCarl the Creeper§f§l ▬ §c§l75% OFF SALE§f§l ►"; //String motdLine = " §d§lRank Sale §a§l40% Off"); //String motdLine = " §f§l◄§c§lMAINTENANCE§f§l►"); - updateMainMotd(" §b§l§m §8§l§m[ §r §9§lMineplex§r §f§lGames§r §8§l§m ]§b§l§m §r", motdLine); + updateMainMotd(" §4§l§m §f§l§m §8§l§m[ §r §4§lMineplex§r §f§lGames§r §8§l§m ]§f§l§m §4§l§m §r", motdLine); System.out.println("Updated Bungee MOTD"); } } diff --git a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerCount/PlayerCount.java b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerCount/PlayerCount.java index 2543d2609..2b97f9b62 100644 --- a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerCount/PlayerCount.java +++ b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerCount/PlayerCount.java @@ -24,7 +24,6 @@ public class PlayerCount implements Listener, Runnable { private DataRepository _repository; private DataRepository _secondRepository; - private UUID _uuid; private Region _region; private ListenerInfo _listenerInfo; @@ -34,7 +33,6 @@ public class PlayerCount implements Listener, Runnable public PlayerCount(Plugin plugin) { - _uuid = UUID.randomUUID(); _region = !new File("eu.dat").exists() ? Region.US : Region.EU; _plugin = plugin; @@ -86,7 +84,7 @@ public class PlayerCount implements Listener, Runnable */ private BungeeServer generateSnapshot() { - String name = _uuid.toString(); // Use random UUID for unique id name. + String name = _listenerInfo.getHost().getAddress().getHostAddress(); String host = _listenerInfo.getHost().getAddress().getHostAddress(); int port = _listenerInfo.getHost().getPort(); boolean connected = InternetStatus.isConnected(); diff --git a/Plugins/Mineplex.BungeeRotator/src/mineplex/bungee/BungeeRotator.java b/Plugins/Mineplex.BungeeRotator/src/mineplex/bungee/BungeeRotator.java index 22be0d855..2dd88a8e3 100644 --- a/Plugins/Mineplex.BungeeRotator/src/mineplex/bungee/BungeeRotator.java +++ b/Plugins/Mineplex.BungeeRotator/src/mineplex/bungee/BungeeRotator.java @@ -141,7 +141,7 @@ public class BungeeRotator else euPlayers += server.getPlayerCount(); - System.out.println(server.getRegion().toString() + " " + server.getPublicAddress() + " " + server.getPlayerCount() + "/" + server.getPlayerCount()); + System.out.println(server.getRegion().toString() + " " + server.getName() + " " + server.getPublicAddress() + " " + server.getPlayerCount() + "/" + server.getPlayerCount()); } System.out.println("US Players : " + usPlayers); @@ -247,6 +247,9 @@ public class BungeeRotator new ApiDeleteCall("https://api.dnsmadeeasy.com/V2.0/dns/managed/", 962728, "/records?" + idBuilder.toString()).Execute(); log("Deleted " + recordsToDelete.size() + " records."); } + + _repository.clean(); + _secondRepository.clean(); } /* diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/Rank.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/Rank.java index 8cab61a15..45fd28921 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/Rank.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/Rank.java @@ -9,15 +9,16 @@ import mineplex.core.common.util.UtilPlayer; public enum Rank { //Staff - LT("LT", ChatColor.DARK_RED), - OWNER("Owner", ChatColor.DARK_RED), - DEVELOPER("Dev", ChatColor.RED), - ADMIN("Admin", ChatColor.RED), - JNR_DEV("Jr.Dev", ChatColor.RED), + LT("Leader", ChatColor.GOLD), + OWNER("Owner", ChatColor.GOLD), + DEVELOPER("Dev", ChatColor.GOLD), + ADMIN("Admin", ChatColor.GOLD), + JNR_DEV("Jr.Dev", ChatColor.GOLD), + SUPPORT("Support", ChatColor.BLUE), SNR_MODERATOR("Sr.Mod", ChatColor.GOLD), MODERATOR("Mod", ChatColor.GOLD), HELPER("Trainee", ChatColor.DARK_AQUA), - MAPLEAD("MapLead", ChatColor.DARK_PURPLE), + MAPLEAD("MapLead", ChatColor.BLUE), MAPDEV("Builder", ChatColor.BLUE), MEDIA("Media", ChatColor.BLUE), @@ -29,6 +30,7 @@ public enum Rank TWITCH("Twitch", ChatColor.DARK_PURPLE), //Player + TITAN("Titan", ChatColor.RED, true), LEGEND("Legend", ChatColor.GREEN, true), HERO("Hero", ChatColor.LIGHT_PURPLE, true), ULTRA("Ultra", ChatColor.AQUA, true), diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/lang/IntlString.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/lang/IntlString.java new file mode 100644 index 000000000..fada15f15 --- /dev/null +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/lang/IntlString.java @@ -0,0 +1,232 @@ +package mineplex.core.common.lang; + +import java.text.Format; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Locale; + +import org.bukkit.ChatColor; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; + +public class IntlString +{ + + public static IntlString[] toIntl(String... strings) + { + IntlString[] intl = new IntlString[strings.length]; + + for (int i = 0; i < strings.length; i++) { + final String string = strings[i]; + intl[i] = new IntlString("") + { + public String tr(Locale locale) + { + return string; + } + }; + } + + return intl; + } + + /** + * An empty {@link IntlString}. + */ + public static final IntlString EMPTY = toIntl("")[0]; + + private final Argument key; + private final List> arguments = new ArrayList<>(); + + public IntlString(String key, ChatColor... styles) + { + this.key = new Argument<>(key, styles); + } + + IntlString(String key, String style) + { + this.key = new Argument<>(key, style); + } + + private IntlString arg(Argument argument) + { + IntlString result = new IntlString(getKey().getArgument(), getKey().getStyle()); + result.arguments.addAll(getArguments()); + result.arguments.add(argument); + + return result; + } + + public Argument getKey() + { + return key; + } + + public List> getArguments() + { + return Collections.unmodifiableList(arguments); + } + + public IntlString arg(Object value, ChatColor... styles) + { + return arg(new Argument<>(value, styles)); + } + + public IntlString arg(Object value, String style) + { + return arg(new Argument<>(value, style)); + } + + public String tr() + { + return tr(Locale.getDefault()); + } + + public String tr(Entity entity) + { + if (entity instanceof Player) + return tr((Player) entity); + else + return tr(); + } + + public String tr(Player player) + { + return tr(Lang.getPlayerLocale(player)); + } + + public String tr(Locale locale) + { + if (locale == null) + locale = Locale.getDefault(); + + String formatString = Lang.get(getKey().getArgument(), locale); + + if (getKey().getArgument().equals("stats.achievements.disabled.requires.0.players")) + { + int x = 8; + } + + if (getArguments().isEmpty()) + return getKey().getStyle() + formatString; + else + { + MessageFormat format = new MessageFormat(formatString, locale); + + Format[] formats = format.getFormatsByArgumentIndex(); + Object[] argArray = new Object[getArguments().size()]; + for (int i = 0; i < formats.length; i++) + { + argArray[i] = getArguments().get(i); + if (argArray[i] instanceof IntlString) + argArray[i] = ((IntlString) argArray[i]).tr(locale); + + if (formats[i] != null) + { + argArray[i] = formats[i].format(argArray[i]); + format.setFormatByArgumentIndex(i, null); + } + + String style = getArguments().get(i).getStyle(); + if (!style.isEmpty()) + argArray[i] = style + argArray[i] + ChatColor.RESET; + + argArray[i] = argArray[i] + getKey().getStyle(); + } + + return getKey().getStyle() + format.format(argArray, new StringBuffer(), null).toString(); + } + } + + @Override + public boolean equals(Object o) + { + if (!(o instanceof IntlString)) + return false; + + IntlString s = (IntlString) o; + + return getKey().equals(s.getKey()) && getArguments().equals(s.getArguments()); + } + + @Override + public int hashCode() + { + return toString().hashCode(); + } + + @Override + public String toString() + { + return toEnglishString(); + } + + public String toEnglishString() + { + return tr(Locale.ENGLISH); + } + + private static class Argument + { + private final T argument; + private final String style; + + public Argument(T value, ChatColor... styles) + { + this.argument = value; + + String s = ""; + ChatColor color = null; + for (ChatColor style : styles) + { + if (style.isColor()) + color = style; + else if (style.isFormat()) + s += style; + } + + this.style = ChatColor.getLastColors((color == null ? "" : color) + s); + } + + public Argument(T value, String style) + { + this.argument = value; + this.style = style == null ? "" : ChatColor.getLastColors(style); + } + + public T getArgument() + { + return argument; + } + + public String getStyle() + { + return style; + } + + @Override + public boolean equals(Object o) + { + if (!(o instanceof Argument)) + return false; + + Argument p = (Argument) o; + + return getArgument().equals(p.getArgument()) && getStyle().equals(p.getStyle()); + } + + @Override + public int hashCode() + { + return toString().hashCode(); + } + + @Override + public String toString() + { + return getStyle() + getArgument(); + } + } +} \ No newline at end of file diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/lang/Lang.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/lang/Lang.java new file mode 100644 index 000000000..b91fe232a --- /dev/null +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/lang/Lang.java @@ -0,0 +1,154 @@ +package mineplex.core.common.lang; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.ResourceBundle; + +import mineplex.core.common.util.F; + +import org.bukkit.ChatColor; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; + +public final class Lang +{ + public static interface PlayerLocaleFunction + { + public Locale getLocaleOfPlayer(Player player); + } + + + private static PlayerLocaleFunction _playerLocaleFunction = null; + private static final Map _localeResourceBundles = Collections.synchronizedMap(new HashMap()); + + + public Lang() + { + init(); + } + + + private void init() + { + System.out.println(F.main("i18n","Attempting to initialize resource bundles...")); + + try + { + // Locales over which we should iterate and load. + for (Locale loc : new Locale[] { + Locale.ENGLISH, + Locale.GERMAN + }) + { + ResourceBundle bundle = ResourceBundle.getBundle("mineplex.core.common.lang.MineplexBundle", loc); + _localeResourceBundles.put(loc, bundle); + System.out.println("Loaded " + loc.toString() + "..."); + } + } + catch (MissingResourceException e) + { + System.err.println("AN ERROR OCCURED WHILE ATTEMPTING TO LOAD RESOURCE LOCALES"); + // For now at least, crash the runtime. + throw new RuntimeException(e); + } + } + + public static PlayerLocaleFunction getPlayerLocaleFunction() + { + return _playerLocaleFunction; + } + + public static void setPlayerLocaleFunction(PlayerLocaleFunction playerLocaleFunction) + { + _playerLocaleFunction = playerLocaleFunction; + } + + public static Locale getPlayerLocale(Player player) + { + if (getPlayerLocaleFunction() == null) + return Locale.getDefault(); + else + return getPlayerLocaleFunction().getLocaleOfPlayer(player); + } + + public static ResourceBundle getResourceBundle(Locale locale) + { + synchronized (_localeResourceBundles) + { + if (_localeResourceBundles.containsKey(locale)) + return _localeResourceBundles.get(locale); + else + { + return _localeResourceBundles.get(Locale.ENGLISH); + } + } + } + + public static ResourceBundle getBestResourceBundle(Locale locale) + { + ResourceBundle bundle = getResourceBundle(locale); + + if (bundle == null && !locale.equals(Locale.getDefault())) + bundle = getResourceBundle(Locale.getDefault()); + + if (bundle == null && !locale.equals(Locale.ENGLISH)) + bundle = getResourceBundle(Locale.ENGLISH); + + return bundle; + } + + /** + * Shorthand method for obtaining and translating a key. + */ + public static String tr(String key, Entity entity, Object... args) + { + IntlString string = key(key); + + for (Object a : args) + string.arg(a); + + return string.tr(entity); + } + + public static String get(String key) + { + return get(key, (Locale) null); + } + + public static String get(String key, Locale locale) + { + if (key == null) + return null; + else if (key.isEmpty()) + return ""; + else + { + if (locale == null) + locale = Locale.getDefault(); + + ResourceBundle bundle = getBestResourceBundle(locale); + if (bundle == null) + return null; + + return bundle.getString(key); + } + } + + public static String get(String key, Player player) + { + return get(key, getPlayerLocale(player)); + } + + public static IntlString key(String key, ChatColor... styles) + { + return new IntlString(key, styles); + } + + public static IntlString key(String key, String style) + { + return new IntlString(key, style); + } +} \ No newline at end of file diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/C.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/C.java index 0407bf4ab..136e6b73b 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/C.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/C.java @@ -28,6 +28,23 @@ public class C public static String cWhite = "" + ChatColor.WHITE; public static String cYellow = "" + ChatColor.YELLOW; + public static String cAquaB = "" + ChatColor.AQUA + "" + ChatColor.BOLD; + public static String cBlackB = "" + ChatColor.BLACK + "" + ChatColor.BOLD; + public static String cBlueB = "" + ChatColor.BLUE + "" + ChatColor.BOLD; + public static String cDAquaB = "" + ChatColor.DARK_AQUA + "" + ChatColor.BOLD; + public static String cDBlueB = "" + ChatColor.DARK_BLUE + "" + ChatColor.BOLD; + public static String cDGrayB = "" + ChatColor.DARK_GRAY + "" + ChatColor.BOLD; + public static String cDGreenB = "" + ChatColor.DARK_GREEN + "" + ChatColor.BOLD; + public static String cDPurpleB = "" + ChatColor.DARK_PURPLE + "" + ChatColor.BOLD; + public static String cDRedB = "" + ChatColor.DARK_RED + "" + ChatColor.BOLD; + public static String cGoldB = "" + ChatColor.GOLD + "" + ChatColor.BOLD; + public static String cGrayB = "" + ChatColor.GRAY + "" + ChatColor.BOLD; + public static String cGreenB = "" + ChatColor.GREEN + "" + ChatColor.BOLD; + public static String cPurpleB = "" + ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD; + public static String cRedB = "" + ChatColor.RED + "" + ChatColor.BOLD; + public static String cWhiteB = "" + ChatColor.WHITE + "" + ChatColor.BOLD; + public static String cYellowB = "" + ChatColor.YELLOW + "" + ChatColor.BOLD; + public static String mHead = "" + ChatColor.BLUE; public static String mBody = "" + ChatColor.GRAY; public static String mChat = "" + ChatColor.WHITE; diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilEnt.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilEnt.java index 8b489c952..1cc2d5416 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilEnt.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilEnt.java @@ -5,6 +5,7 @@ import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import net.minecraft.server.v1_7_R4.AxisAlignedBB; import net.minecraft.server.v1_7_R4.EntityBat; import net.minecraft.server.v1_7_R4.EntityCreature; import net.minecraft.server.v1_7_R4.EntityEnderDragon; @@ -26,7 +27,9 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.World; -import org.bukkit.block.BlockFace; +import org.bukkit.block.Block; +import org.bukkit.craftbukkit.v1_7_R4.CraftWorld; +import org.bukkit.craftbukkit.v1_7_R4.entity.CraftCreature; import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity; import org.bukkit.craftbukkit.v1_7_R4.entity.CraftLivingEntity; import org.bukkit.entity.Creature; @@ -36,8 +39,6 @@ import org.bukkit.entity.Giant; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.util.Vector; -import org.bukkit.craftbukkit.v1_7_R4.entity.CraftCreature; -import org.bukkit.craftbukkit.v1_7_R4.CraftWorld; public class UtilEnt { @@ -495,10 +496,14 @@ public class UtilEnt public static boolean isGrounded(Entity ent) { - if (ent instanceof CraftEntity) - return ((CraftEntity)ent).getHandle().onGround; - - return UtilBlock.solid(ent.getLocation().getBlock().getRelative(BlockFace.DOWN)); + AxisAlignedBB box = ((CraftEntity)ent).getHandle().boundingBox; + Location bottom_corner_1 = new Location(ent.getWorld(), box.a, ent.getLocation().getY()-0.1, box.c); + Location bottom_corner_2 = new Location(ent.getWorld(), box.d, ent.getLocation().getY()-0.1, box.f); + + for(Block b : UtilBlock.getInBoundingBox(bottom_corner_1, bottom_corner_2)){ + if(UtilBlock.solid(b)) return true; + } + return false; } public static void PlayDamageSound(LivingEntity damagee) diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilItem.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilItem.java index 1c874c58b..625edf4d1 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilItem.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilItem.java @@ -12,6 +12,10 @@ import org.bukkit.inventory.ItemStack; public class UtilItem { + private static final Material[] FOOD_LIST = { Material.APPLE, Material.BAKED_POTATO, Material.BREAD, Material.CARROT, Material.CARROT_ITEM, Material.COOKED_CHICKEN, + Material.COOKED_FISH, Material.GRILLED_PORK, Material.COOKIE, Material.GOLDEN_APPLE, Material.GOLDEN_CARROT, Material.MELON, Material.MUSHROOM_SOUP, Material.POISONOUS_POTATO, + Material.PUMPKIN_PIE, Material.RAW_BEEF, Material.RAW_CHICKEN, Material.RAW_FISH, Material.PORK, Material.ROTTEN_FLESH, Material.SPIDER_EYE, Material.COOKED_BEEF}; + public static LinkedList matchItem(Player caller, String items, boolean inform) { LinkedList matchList = new LinkedList(); @@ -136,4 +140,20 @@ public class UtilItem return item.getType() + ":" + item.getAmount() + ":" + item.getDurability() + ":" + data; } + + public static boolean isFood(ItemStack item) + { + return item == null ? false : isFood(item.getType()); + } + + public static boolean isFood(Material material) + { + for (Material food : FOOD_LIST) + { + if (food.equals(material)) + return true; + } + + return false; + } } diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilPlayer.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilPlayer.java index 321f16789..f9c997146 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilPlayer.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilPlayer.java @@ -653,4 +653,11 @@ public class UtilPlayer player.setPlayerListName(playerName); } */ + + public static Location getTargetLocation(Player player, double distance) + { + Vector looking = player.getLocation().getDirection().clone(); + looking.multiply(distance); + return player.getEyeLocation().clone().add(looking); + } } diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilTime.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilTime.java index 3a220464a..af77ee996 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilTime.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilTime.java @@ -29,6 +29,19 @@ public class UtilTime return sdf.format(cal.getTime()); } + public static String getDayOfMonthSuffix(final int n) + { + if (n >= 11 && n <= 13) { + return "th"; + } + switch (n % 10) { + case 1: return "st"; + case 2: return "nd"; + case 3: return "rd"; + default: return "th"; + } + } + public enum TimeUnit { FIT, diff --git a/Plugins/Mineplex.Core/src/mineplex/core/FoodDupeFix.java b/Plugins/Mineplex.Core/src/mineplex/core/FoodDupeFix.java new file mode 100644 index 000000000..3b6aafa7c --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/FoodDupeFix.java @@ -0,0 +1,29 @@ +package mineplex.core; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.player.PlayerItemConsumeEvent; +import org.bukkit.plugin.java.JavaPlugin; + +import mineplex.core.common.util.UtilItem; + +public class FoodDupeFix extends MiniPlugin +{ + public FoodDupeFix(JavaPlugin plugin) + { + super("Food Dupe Fix", plugin); + } + + // Use Lowest priority so we get called first event.getItem isn't changed + @EventHandler(priority = EventPriority.LOWEST) + public void fixFoodDupe(PlayerItemConsumeEvent event) + { + if (UtilItem.isFood(event.getItem())) + { + if (!event.getItem().equals(event.getPlayer().getItemInHand())) + { + event.setCancelled(true); + } + } + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/account/command/UpdateRank.java b/Plugins/Mineplex.Core/src/mineplex/core/account/command/UpdateRank.java index d0dfbcd93..3147eaa2c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/account/command/UpdateRank.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/account/command/UpdateRank.java @@ -60,7 +60,7 @@ public class UpdateRank extends CommandBase final Rank rank = tempRank; - if (rank == Rank.ADMIN || rank == Rank.YOUTUBE || rank == Rank.TWITCH || rank == Rank.MODERATOR || rank == Rank.JNR_DEV || rank == Rank.HELPER || rank == Rank.ALL || rank == Rank.MAPDEV || rank == Rank.SNR_MODERATOR) + if (rank == Rank.ADMIN || rank == Rank.YOUTUBE || rank == Rank.TWITCH || rank == Rank.MODERATOR || rank == Rank.JNR_DEV || rank == Rank.HELPER || rank == Rank.ALL || rank == Rank.MAPDEV || rank == Rank.SNR_MODERATOR || rank == Rank.SUPPORT) { if (!testServer && rank.has(Rank.ADMIN) && !Plugin.hasRank(caller, Rank.LT)) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/account/repository/AccountRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/account/repository/AccountRepository.java index cd64cbdfa..a5e1745a3 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/account/repository/AccountRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/account/repository/AccountRepository.java @@ -209,7 +209,7 @@ public class AccountRepository extends RepositoryBase { public void run(final Rank response) { - if (rank == Rank.ULTRA || rank == Rank.HERO || rank == Rank.LEGEND) + if (rank == Rank.ULTRA || rank == Rank.HERO || rank == Rank.LEGEND || rank == Rank.TITAN) { if (perm) executeUpdate(UPDATE_ACCOUNT_RANK_DONOR_PERM, new ColumnVarChar("rank", 100, rank.toString()), new ColumnVarChar("donorRank", 100, rank.toString()), new ColumnVarChar("uuid", 100, uuid.toString())); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java b/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java index 695164dcf..6df676034 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java @@ -15,6 +15,13 @@ public enum Achievement new String[]{"+1 for every Gem earned in any game."}, new int[]{10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000, 50000, 55000, 60000, 65000}, AchievementCategory.GLOBAL), + + GLOBAL_PUMPKIN_SMASHER_2015("2015 Pumpkin Smasher", 4000, + new String[]{"Global.Halloween Pumpkins 2015"}, + new String[]{"Smash 200 Flaming Pumpkins,", + "during Halloween 2015!"}, + new int[]{200}, + AchievementCategory.HOLIDAY), //Bridges BRIDGES_WINS("Bridge Champion", 600, @@ -56,7 +63,7 @@ public enum Achievement //Survival Games SURVIVAL_GAMES_WINS("Katniss Everdeen", 600, new String[]{"Survival Games.Wins"}, - new String[]{"Win 20 games of Survival Games"}, + new String[]{"Win 30 games of Survival Games"}, new int[]{30}, AchievementCategory.SURVIVAL_GAMES), @@ -789,7 +796,7 @@ public enum Achievement public static String getExperienceString(int level) { if (level < 0) - return C.cPurple + level; + return C.cAqua + level; if (level < 20) return C.cGray + level; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/achievement/AchievementCategory.java b/Plugins/Mineplex.Core/src/mineplex/core/achievement/AchievementCategory.java index c31b9b788..5e075c2f0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/achievement/AchievementCategory.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/achievement/AchievementCategory.java @@ -6,9 +6,11 @@ import mineplex.core.account.CoreClientManager; import mineplex.core.common.Rank; import mineplex.core.common.util.C; import mineplex.core.common.util.UtilTime; +import mineplex.core.game.GameDisplay; import mineplex.core.stats.PlayerStats; import mineplex.core.stats.StatsManager; +import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -18,17 +20,29 @@ public enum AchievementCategory new StatDisplay[] { StatDisplay.GEMS_EARNED, null, new StatDisplay("Games Played", "GamesPlayed"), StatDisplay.TIME_IN_GAME, null, new StatDisplay("Daily Rewards", "DailyReward"), new StatDisplay("Times Voted", "DailyVote"), null, new StatDisplay("Chests Opened", "Treasure.Old", "Treasure.Ancient", "Treasure.Mythical") }, Material.EMERALD, 0, GameCategory.GLOBAL, "None"), + + HOLIDAY("Holiday Achievements", null, + new StatDisplay[] {}, + Material.PUMPKIN_PIE, 0, GameCategory.HOLIDAY, "None"), BRIDGES("The Bridges", null, new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED }, Material.IRON_PICKAXE, 0, GameCategory.SURVIVAL, "Destructor Kit"), SURVIVAL_GAMES("Survival Games", null, - new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED }, + new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED, + null, null, new StatDisplay(C.Bold + "Teams Stats", true), null, + StatDisplay.fromGame("Wins", GameDisplay.SurvivalGamesTeams, "Wins"), StatDisplay.fromGame("Games Played", GameDisplay.SurvivalGamesTeams, "Wins", "Losses"), + StatDisplay.fromGame("Kills", GameDisplay.SurvivalGamesTeams, "Kills"), StatDisplay.fromGame("Deaths", GameDisplay.SurvivalGamesTeams, "Deaths"), + StatDisplay.fromGame("Gems Earned", GameDisplay.SurvivalGamesTeams, "GemsEarned") }, Material.DIAMOND_SWORD, 0, GameCategory.SURVIVAL, "Horseman Kit"), SKYWARS("Skywars",null, - new StatDisplay[]{StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED}, + new StatDisplay[]{StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED, + null, null, new StatDisplay(C.Bold + "Team Stats", true), null, + StatDisplay.fromGame("Wins", GameDisplay.SkywarsTeams, "Wins"), StatDisplay.fromGame("Games Played", GameDisplay.SkywarsTeams, "Wins", "Losses"), + StatDisplay.fromGame("Kills", GameDisplay.SkywarsTeams, "Kills"), StatDisplay.fromGame("Deaths", GameDisplay.SkywarsTeams, "Deaths"), + StatDisplay.fromGame("Gems Earned", GameDisplay.SkywarsTeams, "GemsEarned") }, Material.FEATHER, 0, GameCategory.SURVIVAL, "Destructor Kit"), UHC("Ultra Hardcore", null, @@ -49,7 +63,11 @@ public enum AchievementCategory Material.GRASS, 0, GameCategory.CLASSICS, "Infestor Kit"), SMASH_MOBS("Super Smash Mobs", null, - new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED }, + new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED, + null, null, new StatDisplay(C.Bold + "Team Stats", true), null, + StatDisplay.fromGame("Wins", GameDisplay.SmashTeams, "Wins"), StatDisplay.fromGame("Games Played", GameDisplay.SmashTeams, "Wins", "Losses"), + StatDisplay.fromGame("Kills", GameDisplay.SmashTeams, "Kills"), StatDisplay.fromGame("Deaths", GameDisplay.SmashTeams, "Deaths"), + StatDisplay.fromGame("Gems Earned", GameDisplay.SmashTeams, "GemsEarned")}, Material.SKULL_ITEM, 4, GameCategory.CLASSICS, "Sheep Kit"), MINE_STRIKE("MineStrike", null, @@ -203,6 +221,11 @@ public enum AchievementCategory lore.add(" "); continue; } + else if (_statDisplays[i].isJustDisplayName()) + { + lore.add(ChatColor.RESET + _statDisplays[i].getDisplayName()); + continue; + } String displayName = _statDisplays[i].getDisplayName(); @@ -211,9 +234,21 @@ public enum AchievementCategory continue; int statNumber = 0; - for (String statToPull : _statsToPull) + + + // This is so we could load stats from other games + // (Refer to team games, displaying team stats in the normal game view) + if (_statDisplays[i].isFullStat()) + { for (String statName : _statDisplays[i].getStats()) - statNumber += stats.getStat(statToPull + "." + statName); + statNumber += stats.getStat(statName); + } + else + { + for (String statToPull : _statsToPull) + for (String statName : _statDisplays[i].getStats()) + statNumber += stats.getStat(statToPull + "." + statName); + } String statString = C.cWhite + statNumber; // Need to display special for time @@ -224,8 +259,8 @@ public enum AchievementCategory } } - public static enum GameCategory + public enum GameCategory { - GLOBAL, SURVIVAL, CLASSICS, CHAMPIONS, ARCADE; + GLOBAL, HOLIDAY, SURVIVAL, CLASSICS, CHAMPIONS, ARCADE } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/achievement/StatDisplay.java b/Plugins/Mineplex.Core/src/mineplex/core/achievement/StatDisplay.java index b8b58f100..ea7515827 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/achievement/StatDisplay.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/achievement/StatDisplay.java @@ -1,5 +1,7 @@ package mineplex.core.achievement; +import mineplex.core.game.GameDisplay; + /** * The purpose of extracting stats to this class is so we can display stats that are a combination * of different stat values. For example, since we don't have a specific stat for games played of a game, @@ -8,19 +10,34 @@ package mineplex.core.achievement; */ public class StatDisplay { - public String _displayName; - public String[] _stats; + private String _displayName; + private String[] _stats; + private boolean _fullStat; + private boolean _justDisplayName; public StatDisplay(String stat) + { + this(stat, false); + } + + public StatDisplay(String stat, boolean justDisplayName) { _displayName = stat; _stats = new String[] { stat }; + _fullStat = false; + _justDisplayName = justDisplayName; } public StatDisplay(String displayName, String... stats) + { + this(displayName, false, stats); + } + + public StatDisplay(String displayName, boolean fullStat, String... stats) { _displayName = displayName; _stats = stats; + _fullStat = fullStat; } public String getDisplayName() @@ -28,11 +45,32 @@ public class StatDisplay return _displayName; } + public boolean isJustDisplayName() + { + return _justDisplayName; + } + public String[] getStats() { return _stats; } + public boolean isFullStat() + { + return _fullStat; + } + + public static StatDisplay fromGame(String name, GameDisplay gameDisplay, String... stats) + { + String[] formattedStats = new String[stats.length]; + for (int i = 0; i < stats.length; i++) + { + formattedStats[i] = gameDisplay.getName() + "." + stats[i]; + } + + return new StatDisplay(name, true, formattedStats); + } + public static final StatDisplay WINS = new StatDisplay("Wins"); public static final StatDisplay LOSSES = new StatDisplay("Losses"); public static final StatDisplay KILLS = new StatDisplay("Kills"); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/AchievementMainPage.java b/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/AchievementMainPage.java index 68d43a09e..66966b828 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/AchievementMainPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/AchievementMainPage.java @@ -41,7 +41,7 @@ public class AchievementMainPage extends ShopPageBase pageLayout = new ItemLayout( - "XXXXOXXXX", + "XXXXOXXXO", "OXOXOXOXO", "OXOXOXOXO", "XXOXOXOXX").getItemSlots(); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/benefit/BenefitManagerRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/benefit/BenefitManagerRepository.java index 3cb111d67..8cfe26b64 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/benefit/BenefitManagerRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/benefit/BenefitManagerRepository.java @@ -24,7 +24,7 @@ public class BenefitManagerRepository extends RepositoryBase @Override protected void initialize() { - executeUpdate(CREATE_BENEFIT_TABLE); + //executeUpdate(CREATE_BENEFIT_TABLE); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/benefit/benefits/Christmas2014.java b/Plugins/Mineplex.Core/src/mineplex/core/benefit/benefits/Christmas2014.java index 7d708bcfb..500c15269 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/benefit/benefits/Christmas2014.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/benefit/benefits/Christmas2014.java @@ -38,6 +38,6 @@ public class Christmas2014 extends BenefitBase UtilPlayer.message(player, C.cPurple + C.Strike + "============================================="); } } - }, player, "Treasure", "Treasure Key", 2); + }, player, "Treasure Key", 2); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/benefit/benefits/Players40k.java b/Plugins/Mineplex.Core/src/mineplex/core/benefit/benefits/Players40k.java index 8ce851f96..319f2e07c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/benefit/benefits/Players40k.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/benefit/benefits/Players40k.java @@ -40,6 +40,6 @@ public class Players40k extends BenefitBase UtilPlayer.message(player, C.cGold + C.Strike + "============================================="); } } - }, player, "Treasure", "Ancient Chest", 1); + }, player, "Ancient Chest", 1); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/benefit/benefits/Thanksgiving2014.java b/Plugins/Mineplex.Core/src/mineplex/core/benefit/benefits/Thanksgiving2014.java index fce4aaeb3..2ed504c9e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/benefit/benefits/Thanksgiving2014.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/benefit/benefits/Thanksgiving2014.java @@ -38,6 +38,6 @@ public class Thanksgiving2014 extends BenefitBase UtilPlayer.message(player, C.cPurple + C.Strike + "============================================="); } } - }, player, "Treasure", "Treasure Key", 1); + }, player, "Treasure Key", 1); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java index 1276e2f00..943b1eae9 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java @@ -132,8 +132,8 @@ public class BonusManager extends MiniClientPlugin implements I private int _visualTick; // Streak - private StreakRecord _dailyStreak; - private StreakRecord _voteStreak; +// private StreakRecord _dailyStreak; +// private StreakRecord _voteStreak; private ArrayList _voteList; @@ -220,7 +220,7 @@ public class BonusManager extends MiniClientPlugin implements I new VoteHandler(this)); updateOffSet(); - updateStreakRecord(); +// updateStreakRecord(); } @Override @@ -240,45 +240,45 @@ public class BonusManager extends MiniClientPlugin implements I updateOffSet(); } - @EventHandler - public void updateStreak(UpdateEvent event) - { - if (event.getType() != UpdateType.MIN_16) - return; - - updateStreakRecord(); - } - - private void updateStreakRecord() - { - _repository.getDailyStreakRecord(new Callback() - { - @Override - public void run(StreakRecord data) - { - _dailyStreak = data; - } - }); - - _repository.getVoteStreakRecord(new Callback() - { - @Override - public void run(StreakRecord data) - { - _voteStreak = data; - } - }); - } - - public StreakRecord getDailyStreak() - { - return _dailyStreak; - } - - public StreakRecord getVoteStreak() - { - return _voteStreak; - } +// @EventHandler +// public void updateStreak(UpdateEvent event) +// { +// if (event.getType() != UpdateType.MIN_16) +// return; +// +// updateStreakRecord(); +// } +// +// private void updateStreakRecord() +// { +// _repository.getDailyStreakRecord(new Callback() +// { +// @Override +// public void run(StreakRecord data) +// { +// _dailyStreak = data; +// } +// }); +// +// _repository.getVoteStreakRecord(new Callback() +// { +// @Override +// public void run(StreakRecord data) +// { +// _voteStreak = data; +// } +// }); +// } +// +// public StreakRecord getDailyStreak() +// { +// return _dailyStreak; +// } +// +// public StreakRecord getVoteStreak() +// { +// return _voteStreak; +// } public void handleVote(final Player player, final int gemsReceived) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusRepository.java index ee21b56a0..d2b7613af 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusRepository.java @@ -435,7 +435,7 @@ public class BonusRepository extends RepositoryBase @Override protected void initialize() { - executeUpdate(CREATE_BONUS_TABLE); + //executeUpdate(CREATE_BONUS_TABLE); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/buttons/DailyBonusButton.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/buttons/DailyBonusButton.java index 0c2ea37d2..ebc150b6c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/buttons/DailyBonusButton.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/buttons/DailyBonusButton.java @@ -160,13 +160,13 @@ public class DailyBonusButton implements GuiItem, Listener } } - StreakRecord streakRecord = _bonusManager.getDailyStreak(); - if (streakRecord != null) - { - lore.add(" "); - lore.add(C.cYellow + "Record: " + C.cWhite + streakRecord.getPlayerName()); - lore.add(C.cYellow + "Streak: " + C.cWhite + streakRecord.getStreak()); - } +// StreakRecord streakRecord = _bonusManager.getDailyStreak(); +// if (streakRecord != null) +// { +// lore.add(" "); +// lore.add(C.cYellow + "Record: " + C.cWhite + streakRecord.getPlayerName()); +// lore.add(C.cYellow + "Streak: " + C.cWhite + streakRecord.getStreak()); +// } _item = new ShopItem(material, itemName, lore.toArray(new String[0]), 1, false, false); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/buttons/VoteButton.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/buttons/VoteButton.java index b2d46d294..0110d5fa0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/buttons/VoteButton.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/buttons/VoteButton.java @@ -145,13 +145,13 @@ public class VoteButton implements GuiItem, Listener { lore.add(" "); lore.add(C.cYellow + "Highest Streak: " + C.cWhite + client.getMaxVoteStreak()); - StreakRecord streakRecord = _bonusManager.getVoteStreak(); - if (streakRecord != null) - { - lore.add(" "); - lore.add(C.cYellow + "Record: " + C.cWhite + streakRecord.getPlayerName()); - lore.add(C.cYellow + "Streak: " + C.cWhite + streakRecord.getStreak()); - } +// StreakRecord streakRecord = _bonusManager.getVoteStreak(); +// if (streakRecord != null) +// { +// lore.add(" "); +// lore.add(C.cYellow + "Record: " + C.cWhite + streakRecord.getPlayerName()); +// lore.add(C.cYellow + "Streak: " + C.cWhite + streakRecord.getStreak()); +// } _item = new ShopItem(material, itemName, lore.toArray(new String[0]), 1, false, false); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/MountButton.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/MountButton.java index 57cad6fce..55d34af4b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/MountButton.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/MountButton.java @@ -29,7 +29,7 @@ public class MountButton implements IButton { public void run() { - _page.getPlugin().getInventoryManager().addItemToInventory(null, player, "Mount", _mount.GetName(), 1); + _page.getPlugin().getInventoryManager().addItemToInventory(null, player, _mount.GetName(), 1); _page.refresh(); } }, _page, _mount, CurrencyType.Coins, player)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java index 1189a4162..ff4df34ed 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java @@ -140,7 +140,7 @@ public class GadgetPage extends ShopPageBase { public void run() { - getPlugin().getInventoryManager().addItemToInventory(getPlayer(), gadget.getGadgetType().name(), gadget.GetName(), (gadget instanceof ItemGadget ? ((ItemGadget) gadget).getAmmo().getQuantity() : gadget.getQuantity())); + getPlugin().getInventoryManager().addItemToInventory(getPlayer(), gadget.GetName(), (gadget instanceof ItemGadget ? ((ItemGadget) gadget).getAmmo().getQuantity() : gadget.getQuantity())); refresh(); } }, this, (gadget instanceof ItemGadget ? ((ItemGadget) gadget).getAmmo() : gadget), CurrencyType.Coins, getPlayer())); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java index 950dc9164..e77751779 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java @@ -180,7 +180,7 @@ public class Menu extends ShopPageBase { public void run() { - getPlugin().getInventoryManager().addItemToInventory(getPlayer(), "Treasure", "Treasure Key", 1); + getPlugin().getInventoryManager().addItemToInventory(getPlayer(), "Treasure Key", 1); refresh(); } }, this, new TreasureKey(), CurrencyType.Coins, getPlayer())); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java index 47d45cfa3..c9a544b93 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java @@ -75,7 +75,7 @@ public class PetPage extends ShopPageBase if (pet.GetPetType() == EntityType.WITHER) { itemLore.add(C.cBlack); - itemLore.add(ChatColor.RESET + C.cYellow + "Unlocked with Legend Rank"); + itemLore.add(ChatColor.RESET + C.cGreen + "Unlocked with Legend Rank"); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetTagPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetTagPage.java index 9bdcadd54..bebe91708 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetTagPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetTagPage.java @@ -16,6 +16,7 @@ import mineplex.core.pet.repository.token.PetChangeToken; import mineplex.core.pet.repository.token.PetToken; import mineplex.core.shop.page.ConfirmationPage; import mineplex.core.shop.page.ShopPageBase; +import mineplex.playerCache.PlayerCache; import net.minecraft.server.v1_7_R4.ItemStack; import net.minecraft.server.v1_7_R4.Items; @@ -85,6 +86,8 @@ public class PetTagPage extends ShopPageBase if (getClientManager().Get(getPlayer()) != null) token.AccountId = getClientManager().Get(getPlayer()).getAccountId(); + else + token.AccountId = PlayerCache.getInstance().getPlayer(getPlayer().getUniqueId()).getAccountId(); token.Name = getPlayer().getName(); token.PetType = _pet.GetPetType().toString(); @@ -107,7 +110,7 @@ public class PetTagPage extends ShopPageBase getPlugin().getPetManager().Get(getPlayer()).GetPets().put(_pet.GetPetType(), token.PetName); - getPlugin().getInventoryManager().addItemToInventory(null, getPlayer(), "Pet", _pet.GetPetType().toString(), 1); + getPlugin().getInventoryManager().addItemToInventory(null, getPlayer(), _pet.GetPetType().toString(), 1); getShop().openPageForPlayer(getPlayer(), new Menu(getPlugin(), getShop(), getClientManager(), getDonationManager(), getPlayer())); } }, null, _petPurchase ? _pet : tag, CurrencyType.Coins, getPlayer())); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/database/DBPool.java b/Plugins/Mineplex.Core/src/mineplex/core/database/DBPool.java index f148d31c5..8400fa954 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/database/DBPool.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/database/DBPool.java @@ -22,8 +22,8 @@ public final class DBPool source.setUrl(url); source.setUsername(username); source.setPassword(password); - source.setMaxTotal(4); - source.setMaxIdle(4); + source.setMaxTotal(3); + source.setMaxIdle(3); source.setTimeBetweenEvictionRunsMillis(180 * 1000); source.setSoftMinEvictableIdleTimeMillis(180 * 1000); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java b/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java index 0e1a9c9d5..bbc04051a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java @@ -9,31 +9,49 @@ import java.util.HashSet; import java.util.Iterator; import java.util.Map.Entry; +import mineplex.core.MiniPlugin; +import mineplex.core.common.util.NautHashMap; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.disguise.disguises.DisguiseArmorStand; +import mineplex.core.disguise.disguises.DisguiseBase; +import mineplex.core.disguise.disguises.DisguiseBlock; +import mineplex.core.disguise.disguises.DisguiseInsentient; +import mineplex.core.disguise.disguises.DisguiseLiving; +import mineplex.core.disguise.disguises.DisguisePlayer; +import mineplex.core.disguise.disguises.DisguiseRabbit; +import mineplex.core.packethandler.IPacketHandler; +import mineplex.core.packethandler.PacketHandler; +import mineplex.core.packethandler.PacketInfo; +import mineplex.core.packethandler.PacketVerifier; +import mineplex.core.timing.TimingManager; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; import net.minecraft.server.v1_7_R4.Block; import net.minecraft.server.v1_7_R4.Chunk; -import net.minecraft.server.v1_7_R4.ChunkSection; -import net.minecraft.server.v1_7_R4.EntityTrackerEntry; -import net.minecraft.server.v1_7_R4.PacketPlayOutAnimation; import net.minecraft.server.v1_7_R4.ChunkAddEntityEvent; +import net.minecraft.server.v1_7_R4.ChunkSection; import net.minecraft.server.v1_7_R4.EntityPlayer; +import net.minecraft.server.v1_7_R4.EntityTrackerEntry; import net.minecraft.server.v1_7_R4.Packet; +import net.minecraft.server.v1_7_R4.PacketPlayOutAnimation; import net.minecraft.server.v1_7_R4.PacketPlayOutBed; +import net.minecraft.server.v1_7_R4.PacketPlayOutEntityDestroy; +import net.minecraft.server.v1_7_R4.PacketPlayOutEntityEquipment; +import net.minecraft.server.v1_7_R4.PacketPlayOutEntityMetadata; import net.minecraft.server.v1_7_R4.PacketPlayOutEntityStatus; +import net.minecraft.server.v1_7_R4.PacketPlayOutEntityTeleport; +import net.minecraft.server.v1_7_R4.PacketPlayOutEntityVelocity; import net.minecraft.server.v1_7_R4.PacketPlayOutMapChunk; import net.minecraft.server.v1_7_R4.PacketPlayOutMapChunkBulk; import net.minecraft.server.v1_7_R4.PacketPlayOutNamedEntitySpawn; +import net.minecraft.server.v1_7_R4.PacketPlayOutNamedSoundEffect; import net.minecraft.server.v1_7_R4.PacketPlayOutPlayerInfo; -import net.minecraft.server.v1_7_R4.PacketPlayOutSpawnEntity; -import net.minecraft.server.v1_7_R4.PacketPlayOutEntityVelocity; -import net.minecraft.server.v1_7_R4.PacketPlayOutEntityDestroy; import net.minecraft.server.v1_7_R4.PacketPlayOutRelEntityMove; import net.minecraft.server.v1_7_R4.PacketPlayOutRelEntityMoveLook; -import net.minecraft.server.v1_7_R4.PacketPlayOutEntityTeleport; -import net.minecraft.server.v1_7_R4.PacketPlayOutEntityMetadata; +import net.minecraft.server.v1_7_R4.PacketPlayOutSpawnEntity; import net.minecraft.server.v1_7_R4.PacketPlayOutSpawnEntityLiving; import net.minecraft.server.v1_7_R4.PacketPlayOutUpdateAttributes; -import net.minecraft.server.v1_7_R4.PacketPlayOutEntityEquipment; -import net.minecraft.server.v1_7_R4.PacketPlayOutNamedSoundEffect; import net.minecraft.server.v1_7_R4.WorldServer; import org.bukkit.Bukkit; @@ -57,24 +75,6 @@ import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.event.world.ChunkUnloadEvent; import org.bukkit.plugin.java.JavaPlugin; -import mineplex.core.MiniPlugin; -import mineplex.core.common.util.NautHashMap; -import mineplex.core.common.util.UtilEnt; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.disguise.disguises.DisguiseBase; -import mineplex.core.disguise.disguises.DisguiseBlock; -import mineplex.core.disguise.disguises.DisguiseInsentient; -import mineplex.core.disguise.disguises.DisguiseLiving; -import mineplex.core.disguise.disguises.DisguisePlayer; -import mineplex.core.disguise.disguises.DisguiseRabbit; -import mineplex.core.packethandler.IPacketHandler; -import mineplex.core.packethandler.PacketHandler; -import mineplex.core.packethandler.PacketVerifier; -import mineplex.core.packethandler.PacketInfo; -import mineplex.core.timing.TimingManager; -import mineplex.core.updater.UpdateType; -import mineplex.core.updater.event.UpdateEvent; - public class DisguiseManager extends MiniPlugin implements IPacketHandler { private NautHashMap _spawnPacketMap = new NautHashMap(); @@ -831,7 +831,7 @@ public class DisguiseManager extends MiniPlugin implements IPacketHandler { final Player player = packetInfo.getPlayer(); - if (!UtilPlayer.is1_8(player) && disguise instanceof DisguiseRabbit) + if (!UtilPlayer.is1_8(player) && (disguise instanceof DisguiseRabbit || disguise instanceof DisguiseArmorStand)) { return; } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/donation/repository/DonationRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/donation/repository/DonationRepository.java index bd7a75a7b..43d5b23b4 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/donation/repository/DonationRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/donation/repository/DonationRepository.java @@ -155,7 +155,7 @@ public class DonationRepository extends RepositoryBase { if (response) { - executeUpdate(UPDATE_ACCOUNT_COINS, new ColumnInt("coins", coins), new ColumnInt("id", accountId)); + //executeUpdate(UPDATE_ACCOUNT_COINS, new ColumnInt("coins", coins), new ColumnInt("id", accountId)); //executeUpdate(INSERT_COIN_TRANSACTION, new ColumnInt("id", accountId), new ColumnVarChar("reason", 100, "Rewarded by " + giver), new ColumnInt("coins", coins)); } @@ -198,8 +198,8 @@ public class DonationRepository extends RepositoryBase @Override protected void initialize() { - executeUpdate(CREATE_COIN_TRANSACTION_TABLE); - executeUpdate(CREATE_GEM_TRANSACTION_TABLE); + //executeUpdate(CREATE_COIN_TRANSACTION_TABLE); + //executeUpdate(CREATE_GEM_TRANSACTION_TABLE); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 22f60039c..7494e9fa6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -3,19 +3,6 @@ package mineplex.core.gadget; import java.util.ArrayList; import java.util.List; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.Sound; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.entity.PlayerDeathEvent; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerMoveEvent; -import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.event.player.PlayerToggleSneakEvent; -import org.bukkit.plugin.java.JavaPlugin; - import mineplex.core.MiniPlugin; import mineplex.core.account.CoreClientManager; import mineplex.core.achievement.AchievementManager; @@ -28,7 +15,44 @@ import mineplex.core.common.util.UtilTime; import mineplex.core.disguise.DisguiseManager; import mineplex.core.donation.DonationManager; import mineplex.core.gadget.event.GadgetCollideEntityEvent; -import mineplex.core.gadget.gadgets.*; +import mineplex.core.gadget.gadgets.ItemBatGun; +import mineplex.core.gadget.gadgets.ItemCoinBomb; +import mineplex.core.gadget.gadgets.ItemDuelingSword; +import mineplex.core.gadget.gadgets.ItemEtherealPearl; +import mineplex.core.gadget.gadgets.ItemFirework; +import mineplex.core.gadget.gadgets.ItemFleshHook; +import mineplex.core.gadget.gadgets.ItemMelonLauncher; +import mineplex.core.gadget.gadgets.ItemPaintballGun; +import mineplex.core.gadget.gadgets.ItemPaintbrush; +import mineplex.core.gadget.gadgets.ItemTNT; +import mineplex.core.gadget.gadgets.MorphBat; +import mineplex.core.gadget.gadgets.MorphBlaze; +import mineplex.core.gadget.gadgets.MorphBlock; +import mineplex.core.gadget.gadgets.MorphBunny; +import mineplex.core.gadget.gadgets.MorphChicken; +import mineplex.core.gadget.gadgets.MorphCow; +import mineplex.core.gadget.gadgets.MorphCreeper; +import mineplex.core.gadget.gadgets.MorphEnderman; +import mineplex.core.gadget.gadgets.MorphPig; +import mineplex.core.gadget.gadgets.MorphPumpkinKing; +import mineplex.core.gadget.gadgets.MorphSlime; +import mineplex.core.gadget.gadgets.MorphTitan; +import mineplex.core.gadget.gadgets.MorphVillager; +import mineplex.core.gadget.gadgets.MorphWither; +import mineplex.core.gadget.gadgets.OutfitRaveSuit; +import mineplex.core.gadget.gadgets.OutfitSpaceSuit; +import mineplex.core.gadget.gadgets.OutfitTeam; +import mineplex.core.gadget.gadgets.ParticleBlizzard; +import mineplex.core.gadget.gadgets.ParticleEnchant; +import mineplex.core.gadget.gadgets.ParticleFairy; +import mineplex.core.gadget.gadgets.ParticleFireRings; +import mineplex.core.gadget.gadgets.ParticleFoot; +import mineplex.core.gadget.gadgets.ParticleGreen; +import mineplex.core.gadget.gadgets.ParticleHeart; +import mineplex.core.gadget.gadgets.ParticleHelix; +import mineplex.core.gadget.gadgets.ParticleLegend; +import mineplex.core.gadget.gadgets.ParticleRain; +import mineplex.core.gadget.gadgets.ParticleTitan; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; import mineplex.core.gadget.types.ItemGadget; @@ -43,6 +67,19 @@ import mineplex.core.pet.PetManager; import mineplex.core.preferences.PreferencesManager; import mineplex.core.projectile.ProjectileManager; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerMoveEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.event.player.PlayerToggleSneakEvent; +import org.bukkit.plugin.java.JavaPlugin; + public class GadgetManager extends MiniPlugin { private CoreClientManager _clientManager; @@ -128,6 +165,7 @@ public class GadgetManager extends MiniPlugin addGadget(new MorphWither(this)); addGadget(new MorphBunny(this)); addGadget(new MorphSlime(this, _achievementManager)); + addGadget(new MorphTitan(this)); // Particles addGadget(new ParticleFoot(this)); @@ -140,6 +178,8 @@ public class GadgetManager extends MiniPlugin addGadget(new ParticleFairy(this)); addGadget(new ParticleLegend(this)); addGadget(new ParticleBlizzard(this)); + addGadget(new ParticleTitan(this)); + //addGadget(new ParticleKronos(this)); // Music addGadget(new MusicGadget(this, "13 Disc", new String[] {""}, -2, 2256, 178000)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemFirework.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemFirework.java index 477f140e5..80a89bb76 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemFirework.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemFirework.java @@ -16,6 +16,7 @@ import mineplex.core.common.util.UtilFirework; import mineplex.core.common.util.UtilPlayer; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.types.ItemGadget; +import mineplex.core.recharge.Recharge; public class ItemFirework extends ItemGadget { @@ -29,7 +30,7 @@ public class ItemFirework extends ItemGadget }, -1, Material.FIREWORK, (byte)0, - 100, new Ammo("Fireworks", "50 Fireworks", Material.FIREWORK, (byte)0, new String[] { C.cWhite + "50 Fireworks for you to launch!" }, 500, 50)); + 250, new Ammo("Fireworks", "50 Fireworks", Material.FIREWORK, (byte)0, new String[] { C.cWhite + "50 Fireworks for you to launch!" }, 500, 50)); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemGemBomb.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemGemBomb.java index 0bc53e215..0c2e75b77 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemGemBomb.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemGemBomb.java @@ -116,7 +116,7 @@ public class ItemGemBomb extends ItemGadget } //Use Stock/Gems - Manager.getInventoryManager().addItemToInventory(player, getGadgetType().name(), GetName(), -1); + Manager.getInventoryManager().addItemToInventory(player, GetName(), -1); Manager.getDonationManager().RewardGems(null, GetName(), event.getPlayer().getName(), event.getPlayer().getUniqueId(), -2000); player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(GetName()))); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBunny.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBunny.java index 7d84e2457..78e502bc5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBunny.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBunny.java @@ -59,8 +59,7 @@ public class MorphBunny extends MorphGadget " ", C.cRed +C.Bold + "WARNING: " + ChatColor.RESET + "Hide Easter Egg uses 500 Coins" , " ", - C.cPurple + "Special Limited Time Morph", - C.cPurple + "Purchase at www.mineplex.com/shop", + C.cPurple + "No longer available", }, -1, Material.MONSTER_EGG, (byte)98); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphPig.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphPig.java index f132e9e7a..44662f5a1 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphPig.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphPig.java @@ -38,7 +38,7 @@ public class MorphPig extends MorphGadget C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Oink", C.cYellow + "Collide" + C.cGray + " to use " + C.cGreen + "Pig Bounce", " ", - C.cPurple + "Unlocked with Ultra Rank", + C.cAqua + "Unlocked with Ultra Rank", }, -1, Material.PORK, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphTitan.java new file mode 100644 index 000000000..ad7c925bf --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphTitan.java @@ -0,0 +1,35 @@ +package mineplex.core.gadget.gadgets; + +import org.bukkit.Material; +import org.bukkit.entity.Player; + +import mineplex.core.common.util.C; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.MorphGadget; + +public class MorphTitan extends MorphGadget +{ + public MorphTitan(GadgetManager manager) + { + super(manager, "Titanic Morph", new String[] + { + C.cWhite + "Coming Soon...", + " ", + C.cRed + "Unlocked with Titan Rank", + }, + -1, + Material.REDSTONE_BLOCK, (byte)0); + } + + @Override + public void EnableCustom(Player player) + { + + } + + @Override + public void DisableCustom(Player player) + { + + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphWither.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphWither.java index da9d82ebd..f5007eba2 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphWither.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphWither.java @@ -4,36 +4,36 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; -import org.bukkit.GameMode; -import org.bukkit.Material; -import org.bukkit.Sound; -import org.bukkit.entity.Player; -import org.bukkit.entity.WitherSkull; -import org.bukkit.event.EventHandler; -import org.bukkit.event.entity.EntityExplodeEvent; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.util.Vector; - import mineplex.core.common.Rank; import mineplex.core.common.util.C; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilEvent; -import mineplex.core.common.util.UtilParticle; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilEvent.ActionType; +import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; import mineplex.core.disguise.disguises.DisguiseBase; import mineplex.core.disguise.disguises.DisguiseWither; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.MorphGadget; import mineplex.core.recharge.Recharge; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; -import mineplex.core.gadget.GadgetManager; -import mineplex.core.gadget.types.MorphGadget; + +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.entity.WitherSkull; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.entity.EntityExplodeEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.util.Vector; public class MorphWither extends MorphGadget { @@ -47,7 +47,7 @@ public class MorphWither extends MorphGadget " ", C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Wither Skull", " ", - C.cPurple + "Unlocked with Legend Rank", + C.cGreen + "Unlocked with Legend Rank", }, -1, Material.SKULL_ITEM, (byte)1); @@ -107,7 +107,7 @@ public class MorphWither extends MorphGadget player.getWorld().playSound(player.getLocation(), Sound.WITHER_SHOOT, 0.5f, 1f); } - @EventHandler + @EventHandler(priority = EventPriority.LOWEST) public void explode(EntityExplodeEvent event) { if (!_skulls.contains(event.getEntity())) @@ -115,6 +115,8 @@ public class MorphWither extends MorphGadget event.setCancelled(true); + event.getEntity().remove(); + WitherSkull skull = (WitherSkull)event.getEntity(); UtilParticle.PlayParticle(ParticleType.LARGE_EXPLODE, skull.getLocation(), 0, 0, 0, 0, 1, @@ -177,10 +179,7 @@ public class MorphWither extends MorphGadget @EventHandler public void legendOwner(PlayerJoinEvent event) { - if (Manager.getClientManager().Get(event.getPlayer()).GetRank() == Rank.LEGEND || - Manager.getClientManager().Get(event.getPlayer()).GetRank() == Rank.ADMIN || - Manager.getClientManager().Get(event.getPlayer()).GetRank() == Rank.DEVELOPER || - Manager.getClientManager().Get(event.getPlayer()).GetRank() == Rank.OWNER) + if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.LEGEND)) { Manager.getDonationManager().Get(event.getPlayer().getName()).AddUnknownSalesPackagesOwned(GetName()); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleKronos.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleKronos.java new file mode 100644 index 000000000..dd74addb9 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleKronos.java @@ -0,0 +1,87 @@ +package mineplex.core.gadget.gadgets; + +import java.util.HashMap; + +import mineplex.core.common.Rank; +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.ParticleGadget; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +public class ParticleKronos extends ParticleGadget +{ + private HashMap _glass = new HashMap(); + + public ParticleKronos(GadgetManager manager) + { + super(manager, "Titanic Aura", new String[] + { + C.cWhite + "A symbol of Titan power", + C.cWhite + "whos ancestry traces back to Kronos,", + C.cWhite + "Titan Lord of Time.", + " ", + C.cRed + "???" + //When purchasable: C.cRed + "Unlocked with Titan Rank" + }, + -2, + Material.EYE_OF_ENDER, (byte)0); + } + + @EventHandler + public void playParticle(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + for (Player player : GetActive()) + { + if (!shouldDisplay(player)) + continue; + + //Create + if (!_glass.containsKey(player)) + _glass.put(player, new ParticleKronosData(player)); + + _glass.get(player).update(Manager.isMoving(player)); + } + } + + @EventHandler + public void titanOwner(PlayerJoinEvent event) + { + /*Until it becomes purchasable*/if (Manager.getClientManager().Get(event.getPlayer()).GetRank().equals(Rank.TITAN)) + //if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.TITAN)) + { + Manager.getDonationManager().Get(event.getPlayer().getName()).AddUnknownSalesPackagesOwned(GetName()); + } + } + + @Override + public void DisableCustom(Player player) + { + if (_active.remove(player)) + UtilPlayer.message(player, F.main("Gadget", "You unsummoned " + F.elem(GetName()) + ".")); + + clean(player); + } + + @EventHandler + public void quit(PlayerQuitEvent event) + { + clean(event.getPlayer()); + } + + private void clean(Player player) + { + _glass.remove(player); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleKronosData.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleKronosData.java new file mode 100644 index 000000000..5d78b2b3d --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleKronosData.java @@ -0,0 +1,112 @@ +package mineplex.core.gadget.gadgets; + +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.common.util.UtilServer; + +import org.bukkit.Location; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.util.Vector; + +public class ParticleKronosData +{ + private static class Sin + { + static final float[] table = new float[16384]; + + static + { + for (int i = 0; i < 16384; i++) + { + table[i] = ((float)Math.sin((i + 0.5F) / 16384.0F * 6.283186F)); + } + for (int i = 0; i < 360; i += 90) + { + table[((int)(i * 45.511112F) & 0x3FFF)] = ((float)Math.sin(i * 0.01745329F)); + } + } + } + + private int _step; + private Player _player; + + public ParticleKronosData(Player player) + { + _player = player; + } + + public void update(boolean moving) + { + if (moving) + UtilParticle.PlayParticle(ParticleType.ENCHANTMENT_TABLE, _player.getLocation().add(0, 1f, 0), 0.2f, 0.2f, 0.2f, 0, 1, + ViewDist.NORMAL, UtilServer.getPlayers()); + else + { + Vector v = new Vector(); + Location loc = _player.getLocation().clone(); + for (int i = 0; i < 8; i++) + { + _step += 1; + + float f1 = 3.141593F / 120 * _step; + float f2 = sinFloat(f1 * 2.718282F * 8 / 120) * 1F; + float f3 = f2 * 3.141593F * f1; + + v.setX(1F * f2 * -cosFloat(f3)); + v.setZ(1F * f2 * -sinFloat(f3)); + v.setY(0.6F * f2 + 0.6F + 2.0F); + + rotateVector(v, 0, 0, 0); + + UtilParticle.PlayParticle(ParticleType.ENCHANTMENT_TABLE, loc.add(v), 0, 0, 0, 0, 1, + ViewDist.NORMAL, UtilServer.getPlayers()); + + loc.subtract(v); + } + + //Sound + _player.getWorld().playSound(_player.getLocation(), Sound.CAT_HISS, 0.2f, 1f); + } + } + + private void rotateVector(Vector vector, double x, double y, double z) + { + double cos; + double sin; + double new1; + double new2; + + //x-axis + cos = Math.cos(x); + sin = Math.sin(x); + new1 = vector.getY() * cos - vector.getZ() * sin; + new2 = vector.getY() * sin + vector.getZ() * cos; + vector.setY(new1).setZ(new2); + + //y-axis + cos = Math.cos(y); + sin = Math.sin(y); + new1 = vector.getX() * cos - vector.getZ() * sin; + new2 = vector.getX() * sin + vector.getZ() * cos; + vector.setX(new1).setZ(new2); + + //z-axis + cos = Math.cos(z); + sin = Math.sin(z); + new1 = vector.getX() * cos - vector.getY() * sin; + new2 = vector.getX() * sin + vector.getY() * cos; + vector.setX(new1).setY(new2); + } + + private float sinFloat(float f) + { + return Sin.table[((int)(f * 2607.5945F) & 0x3FFF)]; + } + + private float cosFloat(float f) + { + return Sin.table[((int)((f + 1.570796F) * 2607.5945F) & 0x3FFF)]; + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleLegend.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleLegend.java index 094c1ff39..7be1a9609 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleLegend.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleLegend.java @@ -22,7 +22,7 @@ public class ParticleLegend extends ParticleGadget C.cWhite + "These mystic particle attach to", C.cWhite + "only the most legendary of players!", " ", - C.cPurple + "Unlocked with Legend Rank", + C.cGreen + "Unlocked with Legend Rank", }, -2, Material.ENDER_PORTAL, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleTitan.java new file mode 100644 index 000000000..53e35329f --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleTitan.java @@ -0,0 +1,22 @@ +package mineplex.core.gadget.gadgets; + +import org.bukkit.Material; + +import mineplex.core.common.util.C; +import mineplex.core.gadget.types.ParticleGadget; +import mineplex.core.gadget.GadgetManager; + +public class ParticleTitan extends ParticleGadget +{ + public ParticleTitan(GadgetManager manager) + { + super(manager, "Titanic Particle", new String[] + { + C.cWhite + "Coming Soon...", + " ", + C.cRed + "Unlocked with Titan Rank", + }, + -1, + Material.REDSTONE_BLOCK, (byte)0); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java index 9ce8dfa8c..441f04535 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java @@ -159,7 +159,7 @@ public abstract class ItemGadget extends Gadget return; } - Manager.getInventoryManager().addItemToInventory(player, getGadgetType().name(), GetName(), -1); + Manager.getInventoryManager().addItemToInventory(player, GetName(), -1); player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java b/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java index 8117ceeed..c7c76207a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java @@ -16,7 +16,6 @@ import mineplex.core.account.CoreClientManager; import mineplex.core.common.util.Callback; import mineplex.core.common.util.NautHashMap; import mineplex.core.inventory.command.GiveItemCommand; -import mineplex.core.inventory.data.Category; import mineplex.core.inventory.data.InventoryRepository; import mineplex.core.inventory.data.Item; import mineplex.core.updater.UpdateType; @@ -30,9 +29,9 @@ public class InventoryManager extends MiniDbClientPlugin private InventoryRepository _repository; private NautHashMap _items = new NautHashMap(); - private NautHashMap _categories = new NautHashMap(); + private NautHashMap _itemIdNameMap = new NautHashMap(); - private NautHashMap>> _inventoryQueue = new NautHashMap>>(); + private NautHashMap> _inventoryQueue = new NautHashMap>(); public InventoryManager(JavaPlugin plugin, CoreClientManager clientManager) { @@ -45,7 +44,6 @@ public class InventoryManager extends MiniDbClientPlugin public void run() { updateItems(); - updateCategories(); } }, 20L); } @@ -59,24 +57,12 @@ public class InventoryManager extends MiniDbClientPlugin for (Item item : items) { _items.put(item.Name, item); + _itemIdNameMap.put(item.Id, item.Name); } } } - private void updateCategories() - { - List categories = _repository.retrieveCategories(); - - synchronized (_inventoryLock) - { - for (Category category : categories) - { - _categories.put(category.Name, category); - } - } - } - - public void addItemToInventory(final Player player, String category, final String item, final int count) + public void addItemToInventory(final Player player, final String item, final int count) { if (_items.containsKey(item)) { @@ -84,20 +70,17 @@ public class InventoryManager extends MiniDbClientPlugin } if (!_inventoryQueue.containsKey(player)) - _inventoryQueue.put(player, new NautHashMap>()); - - if (!_inventoryQueue.get(player).containsKey(category)) - _inventoryQueue.get(player).put(category, new NautHashMap()); - + _inventoryQueue.put(player, new NautHashMap()); + int totalAmount = count; - if (_inventoryQueue.get(player).get(category).containsKey(item)) - totalAmount += _inventoryQueue.get(player).get(category).get(item); + if (_inventoryQueue.get(player).containsKey(item)) + totalAmount += _inventoryQueue.get(player).get(item); - _inventoryQueue.get(player).get(category).put(item, totalAmount); + _inventoryQueue.get(player).put(item, totalAmount); } - public void addItemToInventory(final Callback callback, final Player player, String category, final String item, final int count) + public void addItemToInventory(final Callback callback, final Player player, final String item, final int count) { addItemToInventoryForOffline(new Callback() { @@ -116,16 +99,7 @@ public class InventoryManager extends MiniDbClientPlugin if (callback != null) callback.run(success); } - }, player.getUniqueId(), category, item, count); - - } - - public boolean validCategory(String category) - { - synchronized (_inventoryLock) - { - return _categories.containsKey(category); - } + }, player.getUniqueId(), item, count); } public boolean validItem(String item) @@ -151,28 +125,17 @@ public class InventoryManager extends MiniDbClientPlugin return item; } - public void addItemToInventoryForOffline(final Callback callback, final UUID uuid, final String category, final String item, final int count) + public void addItemToInventoryForOffline(final Callback callback, final UUID uuid, final String item, final int count) { Bukkit.getServer().getScheduler().runTaskAsynchronously(getPlugin(), new Runnable() { public void run() { - synchronized (_inventoryLock) - { - if (!_categories.containsKey(category)) - { - _repository.addCategory(category); - System.out.println("InventoryManager Adding Category : " + category); - } - } - - updateCategories(); - synchronized (_inventoryLock) { if (!_items.containsKey(item)) { - _repository.addItem(item, _categories.get(category).Id); + _repository.addItem(item); System.out.println("InventoryManager Adding Item : " + item); } } @@ -206,28 +169,25 @@ public class InventoryManager extends MiniDbClientPlugin for (final Player player : _inventoryQueue.keySet()) { - for (final String category : _inventoryQueue.get(player).keySet()) + for (final String item : _inventoryQueue.get(player).keySet()) { - for (final String item : _inventoryQueue.get(player).get(category).keySet()) - { - final int count = _inventoryQueue.get(player).get(category).get(item); + final int count = _inventoryQueue.get(player).get(item); - addItemToInventoryForOffline(new Callback() + addItemToInventoryForOffline(new Callback() + { + public void run(Boolean success) { - public void run(Boolean success) + if (!success) { - if (!success) + System.out.println("Add item to Inventory FAILED for " + player); + + if (_items.containsKey(item)) { - System.out.println("Add item to Inventory FAILED for " + player); - - if (_items.containsKey(item)) - { - Get(player).addItem(new ClientItem(_items.get(item), -count)); - } + Get(player).addItem(new ClientItem(_items.get(item), -count)); } } - }, player.getUniqueId(), category, item, count); - } + } + }, player.getUniqueId(), item, count); } //Clean @@ -254,12 +214,12 @@ public class InventoryManager extends MiniDbClientPlugin @Override public void processLoginResultSet(String playerName, int accountId, ResultSet resultSet) throws SQLException { - Set(playerName, _repository.loadClientInformation(resultSet)); + Set(playerName, _repository.loadClientInformation(resultSet, _itemIdNameMap)); } @Override public String getQuery(int accountId, String uuid, String name) { - return "SELECT items.name, ic.name as category, count FROM accountInventory AS ai INNER JOIN items ON items.id = ai.itemId INNER JOIN itemCategories AS ic ON ic.id = items.categoryId WHERE ai.accountId = '" + accountId + "';"; + return "SELECT ai.itemId, count FROM accountInventory AS ai WHERE ai.accountId = '" + accountId + "';"; } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/inventory/command/GiveItemCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/inventory/command/GiveItemCommand.java index 006688a96..ce6804e86 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/inventory/command/GiveItemCommand.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/inventory/command/GiveItemCommand.java @@ -4,19 +4,14 @@ import java.util.UUID; import org.bukkit.entity.Player; -import mineplex.core.account.CoreClient; import mineplex.core.command.CommandBase; import mineplex.core.common.Rank; import mineplex.core.common.util.Callback; import mineplex.core.common.util.F; -import mineplex.core.common.util.UUIDFetcher; import mineplex.core.common.util.UtilPlayer; import mineplex.core.inventory.InventoryManager; import mineplex.core.inventory.data.Item; -/** - * Created by Shaun on 10/26/2014. - */ public class GiveItemCommand extends CommandBase { public GiveItemCommand(InventoryManager plugin) @@ -54,7 +49,7 @@ public class GiveItemCommand extends CommandBase } else if (player != null) { - Plugin.addItemToInventory(player, item.Category, item.Name, amount); + Plugin.addItemToInventory(player, item.Name, amount); UtilPlayer.message(caller, F.main("Item", "You gave " + F.elem(amount + " " + itemName) + " to player " + F.name(playerName))); UtilPlayer.message(player, F.main("Item", F.name(caller.getName()) + " gave you " + F.elem(amount + " " + itemName))); } @@ -74,7 +69,7 @@ public class GiveItemCommand extends CommandBase { UtilPlayer.message(caller, F.main("Item", "You gave " + F.elem(amount + " " + itemName) + " to offline player " + F.name(playerName))); } - }, uuid, item.Category, item.Name, amount); + }, uuid, item.Name, amount); } else { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/inventory/data/InventoryRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/inventory/data/InventoryRepository.java index 95837a935..a21d6c9ec 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/inventory/data/InventoryRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/inventory/data/InventoryRepository.java @@ -7,6 +7,7 @@ import java.util.List; import org.bukkit.plugin.java.JavaPlugin; +import mineplex.core.common.util.NautHashMap; import mineplex.core.database.DBPool; import mineplex.core.database.RepositoryBase; import mineplex.core.database.ResultSetCallable; @@ -17,16 +18,12 @@ import mineplex.core.inventory.ClientItem; public class InventoryRepository extends RepositoryBase { - private static String CREATE_INVENTORY_TABLE = "CREATE TABLE IF NOT EXISTS items (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100), categoryId INT, rarity INT, PRIMARY KEY (id), FOREIGN KEY (categoryId) REFERENCES itemCategories(id), UNIQUE INDEX uniqueNameCategoryIndex (name, categoryId));"; - private static String CREATE_INVENTORY_CATEGORY_TABLE = "CREATE TABLE IF NOT EXISTS itemCategories (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100), PRIMARY KEY (id), UNIQUE INDEX nameIndex (name));"; + private static String CREATE_INVENTORY_TABLE = "CREATE TABLE IF NOT EXISTS items (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100), rarity INT, PRIMARY KEY (id), INDEX mameIndex (name));"; private static String CREATE_INVENTORY_RELATION_TABLE = "CREATE TABLE IF NOT EXISTS accountInventory (id INT NOT NULL AUTO_INCREMENT, accountId INT NOT NULL, itemId INT NOT NULL, count INT NOT NULL, PRIMARY KEY (id), FOREIGN KEY (accountId) REFERENCES accounts(id), FOREIGN KEY (itemId) REFERENCES items(id), UNIQUE INDEX accountItemIndex (accountId, itemId));"; - private static String INSERT_ITEM = "INSERT INTO items (name, categoryId) VALUES (?, ?);"; - private static String RETRIEVE_ITEMS = "SELECT items.id, items.name, itemCategories.name FROM items INNER JOIN itemCategories ON itemCategories.id = items.categoryId;"; - - private static String INSERT_CATEGORY = "INSERT INTO itemCategories (name) VALUES (?);"; - private static String RETRIEVE_CATEGORIES = "SELECT id, name FROM itemCategories;"; - + private static String INSERT_ITEM = "INSERT INTO items (name) VALUES (?);"; + private static String RETRIEVE_ITEMS = "SELECT items.id, items.name FROM items;"; + private static String INSERT_CLIENT_INVENTORY = "INSERT INTO accountInventory (accountId, itemId, count) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE count=count + VALUES(count);"; private static String UPDATE_CLIENT_INVENTORY = "UPDATE accountInventory SET count = count + ? WHERE accountId = ? AND itemId = ?;"; @@ -39,7 +36,6 @@ public class InventoryRepository extends RepositoryBase protected void initialize() { /* - executeUpdate(CREATE_INVENTORY_CATEGORY_TABLE); executeUpdate(CREATE_INVENTORY_TABLE); executeUpdate(CREATE_INVENTORY_RELATION_TABLE); */ @@ -49,33 +45,10 @@ public class InventoryRepository extends RepositoryBase protected void update() { } - - public List retrieveCategories() - { - final List categories = new ArrayList(); - - executeQuery(RETRIEVE_CATEGORIES, new ResultSetCallable() - { - public void processResultSet(ResultSet resultSet) throws SQLException - { - while (resultSet.next()) - { - categories.add(new Category(resultSet.getInt(1), resultSet.getString(2))); - } - } - }); - - return categories; - } - public void addItem(String name, int categoryId) + public void addItem(String name) { - executeUpdate(INSERT_ITEM, new ColumnVarChar("name", 100, name), new ColumnInt("categoryId", categoryId)); - } - - public void addCategory(String name) - { - executeUpdate(INSERT_CATEGORY, new ColumnVarChar("name", 100, name)); + executeUpdate(INSERT_ITEM, new ColumnVarChar("name", 100, name)); } public List retrieveItems() @@ -88,7 +61,7 @@ public class InventoryRepository extends RepositoryBase { while (resultSet.next()) { - items.add(new Item(resultSet.getInt(1), resultSet.getString(2), resultSet.getString(3))); + items.add(new Item(resultSet.getInt(1), resultSet.getString(2))); } } }); @@ -108,13 +81,13 @@ public class InventoryRepository extends RepositoryBase return true; } - public ClientInventory loadClientInformation(ResultSet resultSet) throws SQLException + public ClientInventory loadClientInformation(ResultSet resultSet, NautHashMap itemIdMap) throws SQLException { final ClientInventory clientInventory = new ClientInventory(); while (resultSet.next()) { - clientInventory.addItem(new ClientItem(new Item(resultSet.getString(1), resultSet.getString(2)), resultSet.getInt(3))); + clientInventory.addItem(new ClientItem(new Item(resultSet.getInt(1), itemIdMap.get(resultSet.getInt(1))), resultSet.getInt(2))); } return clientInventory; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/inventory/data/Item.java b/Plugins/Mineplex.Core/src/mineplex/core/inventory/data/Item.java index 5f4b3efdb..7b4c4db31 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/inventory/data/Item.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/inventory/data/Item.java @@ -4,17 +4,11 @@ public class Item { public int Id; public String Name; - public String Category; - public Item(String name, String category) - { - this(-1, name, category); - } - - public Item(int id, String name, String category) + + public Item(int id, String name) { Id = id; Name = name; - Category = category; } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/MountManager.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/MountManager.java index 38152a878..78d19c59a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/MountManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/MountManager.java @@ -3,6 +3,25 @@ package mineplex.core.mount; import java.util.ArrayList; import java.util.List; +import mineplex.core.MiniPlugin; +import mineplex.core.account.CoreClientManager; +import mineplex.core.blockrestore.BlockRestore; +import mineplex.core.common.util.F; +import mineplex.core.common.util.NautHashMap; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.disguise.DisguiseManager; +import mineplex.core.donation.DonationManager; +import mineplex.core.mount.types.MountCart; +import mineplex.core.mount.types.MountDragon; +import mineplex.core.mount.types.MountFrost; +import mineplex.core.mount.types.MountMule; +import mineplex.core.mount.types.MountSlime; +import mineplex.core.mount.types.MountSpider; +import mineplex.core.mount.types.MountTitan; +import mineplex.core.mount.types.MountUndead; +import mineplex.core.mount.types.MountZombie; + import org.bukkit.Material; import org.bukkit.entity.Entity; import org.bukkit.entity.Horse; @@ -14,17 +33,6 @@ import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.plugin.java.JavaPlugin; -import mineplex.core.MiniPlugin; -import mineplex.core.account.CoreClientManager; -import mineplex.core.blockrestore.BlockRestore; -import mineplex.core.common.util.F; -import mineplex.core.common.util.NautHashMap; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilServer; -import mineplex.core.disguise.DisguiseManager; -import mineplex.core.donation.DonationManager; -import mineplex.core.mount.types.*; - public class MountManager extends MiniPlugin { private CoreClientManager _clientManager; @@ -57,6 +65,9 @@ public class MountManager extends MiniPlugin _types.add(new MountDragon(this)); _types.add(new MountSlime(this)); _types.add(new MountCart(this)); + _types.add(new MountSpider(this)); + _types.add(new MountZombie(this)); + _types.add(new MountTitan(this)); //_types.add(new MountSheep(this)); } @@ -168,5 +179,15 @@ public class MountManager extends MiniPlugin return _disguiseManager; } - + public boolean isMount(Entity ent) + { + for (Mount mount : _playerActiveMountMap.values()) + { + if (mount.GetActive().values().contains(ent)) + { + return true; + } + } + return false; + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountCart.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountCart.java index 0c3c5d113..af5e1db39 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountCart.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountCart.java @@ -1,21 +1,8 @@ package mineplex.core.mount.types; -import org.bukkit.ChatColor; -import org.bukkit.EntityEffect; -import org.bukkit.Material; -import org.bukkit.Sound; -import org.bukkit.entity.Minecart; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.entity.EntityTargetEvent; -import org.bukkit.event.player.PlayerInteractEntityEvent; -import org.bukkit.event.vehicle.VehicleDamageEvent; - import mineplex.core.common.util.F; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; -import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; import mineplex.core.mount.Mount; @@ -24,6 +11,17 @@ import mineplex.core.recharge.Recharge; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.craftbukkit.v1_7_R4.entity.CraftMinecart; +import org.bukkit.entity.Minecart; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.EntityTargetEvent; +import org.bukkit.event.player.PlayerInteractEntityEvent; +import org.bukkit.event.vehicle.VehicleDamageEvent; + public class MountCart extends Mount { public MountCart(MountManager manager) @@ -112,13 +110,18 @@ public class MountCart extends Mount if (cart.getPassenger() == null) continue; - if (!UtilEnt.isGrounded(cart)) + if (!((CraftMinecart) cart).getHandle().onGround) continue; +// if (!UtilEnt.isGrounded(cart)) +// continue; + if (!(cart.getPassenger() instanceof Player)) continue; - UtilAction.velocity(cart, cart.getPassenger().getLocation().getDirection(), 1.4, true, 0, 0, 1, false); + Player player = (Player) cart.getPassenger(); + + UtilAction.velocity(cart, UtilAlg.getTrajectory2d(player.getEyeLocation(), UtilPlayer.getTargetLocation(player, 5)), 1.4, true, 0, 0, 1, false); if (Math.random() > 0.8) cart.getWorld().playSound(cart.getLocation(), Sound.MINECART_BASE, 0.05f, 2f); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSpider.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSpider.java new file mode 100644 index 000000000..704a588d1 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSpider.java @@ -0,0 +1,233 @@ +package mineplex.core.mount.types; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Map.Entry; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.disguise.disguises.DisguiseSpider; +import mineplex.core.mount.HorseMount; +import mineplex.core.mount.MountManager; +import mineplex.core.recharge.Recharge; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import net.minecraft.server.v1_7_R4.EntityLiving; + +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; +import org.bukkit.entity.Horse; +import org.bukkit.entity.Horse.Color; +import org.bukkit.entity.Horse.Style; +import org.bukkit.entity.Horse.Variant; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.inventory.ItemStack; +import org.bukkit.util.Vector; + +public class MountSpider extends HorseMount +{ + /** + * @author Mysticate + */ + + public MountSpider(MountManager manager) + { + super(manager, "Spider Mount", new String[] + { + C.cWhite + "Why ride a horse when you can", + C.cWhite + "ride a cute and cuddly spider!", + C.cBlack, + C.cYellow + "Look Up" + C.cGray + " to use " + C.cGreen + "Wall Climb", + C.cYellow + "Jump" + C.cGray + " to use " + C.cGreen + "Leap", + C.cBlack, + C.cPurple + "Only available during " + C.Line + "Halloween 2015", + C.cPurple + "Purchase at " + C.Line + "www.mineplex.com/shop" + }, Material.WEB, (byte) 0, -1, Color.BLACK, Style.NONE, Variant.HORSE, 2.0, Material.AIR); + } + + @Override + public void EnableCustom(Player player) + { + player.leaveVehicle(); + player.eject(); + + //Remove other mounts + Manager.DeregisterAll(player); + + Horse horse = player.getWorld().spawn(player.getLocation(), Horse.class); + horse.setAdult(); + horse.setAgeLock(true); + horse.setColor(_color); + horse.setStyle(_style); + horse.setVariant(_variant); + horse.setOwner(player); + horse.setMaxDomestication(1); + horse.setJumpStrength(_jump); + horse.setMaxHealth(20); + horse.setHealth(horse.getMaxHealth()); + horse.getInventory().setSaddle(new ItemStack(Material.SADDLE)); + + if (horse.getVariant() == Variant.MULE) + horse.setCarryingChest(true); + + if (_armor != null) + horse.getInventory().setArmor(new ItemStack(_armor)); + + horse.setCustomName(player.getName() + "'s " + GetName()); + + //Inform + UtilPlayer.message(player, F.main("Mount", "You spawned " + F.elem(GetName()) + ".")); + + //Store + _active.put(player, horse); + + DisguiseSpider spider = new DisguiseSpider(horse); + spider.setName(player.getName() + "'s Spider Mount"); + Manager.getDisguiseManager().disguise(spider); + + UtilEnt.silence(horse, true); + } + + @EventHandler + public void sounds(UpdateEvent event) + { + if (event.getType() != UpdateType.FASTEST) + return; + + ArrayList used = new ArrayList(); + for (Player player : GetActive().keySet()) + { + Horse horse = GetActive().get(player); + + used.add(horse); + + if (!Recharge.Instance.use(player, "Spider Mount Sounds", (1000 * UtilMath.r(3)) + 500, false, false)) + continue; + + //Moving + if (horse.getVelocity().length() != 0 && UtilEnt.isGrounded(horse)) + { + horse.getWorld().playSound(horse.getLocation(), Sound.SPIDER_WALK, .4F, 1.0F); + } + } + } + + @EventHandler + public void wallClimb(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + for (Entry horse : GetActive().entrySet()) + { + if (horse.getValue().getPassenger() != horse.getKey()) + continue; + + //If player is looking up + if (horse.getKey().getEyeLocation().getPitch() > -45) + continue; + + for (Block block : UtilBlock.getSurrounding(horse.getValue().getLocation().getBlock(), true)) + { + if (UtilBlock.airFoliage(block) || block.isLiquid()) + continue; + + UtilAction.velocity(horse.getValue(), new Vector(horse.getValue().getVelocity().getX(), 0.2, horse.getValue().getVelocity().getZ())); + continue; + } + } + } + +// @EventHandler(priority = EventPriority.LOW) +// public void doubleJump(PlayerToggleFlightEvent event) +// { +// Player player = event.getPlayer(); +// +// if (player.getGameMode() == GameMode.CREATIVE) +// return; +// +// if (!GetActive().containsKey(player)) +// return; +// +// if (GetActive().get(player).getPassenger() != event.getPlayer()) +// return; +// +// //Chicken Cancel +// DisguiseBase disguise = Manager.getDisguiseManager().getDisguise(player); +// if (disguise != null && ((disguise instanceof DisguiseChicken && !((DisguiseChicken)disguise).isBaby()) || disguise instanceof DisguiseBat || disguise instanceof DisguiseEnderman || disguise instanceof DisguiseWither)) +// return; +// +// Horse horse = GetActive().get(event.getPlayer()); +// +// if (!UtilEnt.isGrounded(horse)) +// return; +// +// event.setCancelled(true); +// player.setFlying(false); +// +// //Disable Flight +// player.setAllowFlight(false); +// +// //Velocity +// UtilAction.velocity(horse, 1.4, 0.38, 1, true); +// +// //Sound +// player.playSound(horse.getLocation(), Sound.SPIDER_IDLE, .4F, 1.0F); +// } + + @EventHandler + public void jump(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + for (Player player : GetActive().keySet()) + { + final Horse horse = GetActive().get(player); + + if (horse.getPassenger() != player) + continue; + + if (!UtilEnt.isGrounded(horse)) + continue; + + if (!Recharge.Instance.use(player, "Spider Mount Jump", 100, false, false)) + continue; + + try + { + Field jump = EntityLiving.class.getDeclaredField("bc"); + final boolean accessable = jump.isAccessible(); + + jump.setAccessible(true); + boolean isJumping = jump.getBoolean(((CraftPlayer) player).getHandle()); + + jump.setAccessible(accessable); + + if (!isJumping) + continue; + + //Not jumping anymore + ((CraftPlayer) player).getHandle().f(false); + + //Velocity + UtilAction.velocity(horse, 1.4, 0.38, .8, true); + + //Sound + player.playSound(horse.getLocation(), Sound.SPIDER_IDLE, .4F, 1.0F); + } + catch (Exception ex) + { + ex.printStackTrace(); + } + } + } +} \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountTitan.java new file mode 100644 index 000000000..80a3f1e00 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountTitan.java @@ -0,0 +1,27 @@ +package mineplex.core.mount.types; + +import org.bukkit.Material; +import org.bukkit.entity.Horse.Color; +import org.bukkit.entity.Horse.Style; +import org.bukkit.entity.Horse.Variant; + +import mineplex.core.common.util.C; +import mineplex.core.mount.HorseMount; +import mineplex.core.mount.MountManager; + +public class MountTitan extends HorseMount +{ + public MountTitan(MountManager manager) + { + super(manager, "Titanic Mount", new String[] + { + C.cWhite + "Coming Soon...", + " ", + C.cRed + "Unlocked with Titan Rank", + }, + Material.REDSTONE_BLOCK, + (byte)0, + -1, + Color.BLACK, Style.BLACK_DOTS, Variant.UNDEAD_HORSE, 0.8, null); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountUndead.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountUndead.java index 20a398d80..ebe2216c5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountUndead.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountUndead.java @@ -1,23 +1,22 @@ package mineplex.core.mount.types; +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.common.util.UtilServer; +import mineplex.core.mount.HorseMount; +import mineplex.core.mount.MountManager; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; + import org.bukkit.Material; import org.bukkit.entity.Horse; import org.bukkit.entity.Horse.Color; import org.bukkit.entity.Horse.Style; import org.bukkit.entity.Horse.Variant; -import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; -import mineplex.core.common.util.C; -import mineplex.core.common.util.UtilParticle; -import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilParticle.ParticleType; -import mineplex.core.common.util.UtilParticle.ViewDist; -import mineplex.core.mount.HorseMount; -import mineplex.core.mount.MountManager; -import mineplex.core.updater.UpdateType; -import mineplex.core.updater.event.UpdateEvent; - public class MountUndead extends HorseMount { public MountUndead(MountManager manager) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountZombie.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountZombie.java new file mode 100644 index 000000000..9b396f6b5 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountZombie.java @@ -0,0 +1,30 @@ +package mineplex.core.mount.types; + +import org.bukkit.Material; +import org.bukkit.entity.Horse.Color; +import org.bukkit.entity.Horse.Style; +import org.bukkit.entity.Horse.Variant; + +import mineplex.core.common.util.C; +import mineplex.core.mount.HorseMount; +import mineplex.core.mount.MountManager; + +public class MountZombie extends HorseMount +{ + public MountZombie(MountManager manager) + { + super(manager, "Decrepit Warhorse", new String[] + { + C.cWhite + "Once a fierce warhorse, this", + C.cWhite + "undead beast will send fear", + C.cWhite + "into the hearts of your enemies.", + " ", + C.cYellow + "Earned by defeating the Pumpkin King", + C.cYellow + "in the 2015 Halloween Horror Event.", + }, + Material.ROTTEN_FLESH, + (byte)0, + -1, + Color.BLACK, Style.BLACK_DOTS, Variant.UNDEAD_HORSE, 0.8, null); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/notifier/NotificationManager.java b/Plugins/Mineplex.Core/src/mineplex/core/notifier/NotificationManager.java index d5097e318..53c841b6c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/notifier/NotificationManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/notifier/NotificationManager.java @@ -17,36 +17,37 @@ import mineplex.core.updater.event.UpdateEvent; public class NotificationManager extends MiniPlugin { - private boolean _enabled = true; + private boolean _enabled = false; private CoreClientManager _clientManager; - + private String _summerLine = C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + - C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + - C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + - C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + - C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + - C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█"; + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█"; public NotificationManager(JavaPlugin plugin, CoreClientManager client) { super("Notification Manager", plugin); - + _clientManager = client; } - + @EventHandler public void notify(UpdateEvent event) { if (!_enabled) return; - + // if (event.getType() == UpdateType.MIN_08) // hugeSale(); + +// if (event.getType() == UpdateType.MIN_16) +// sale(); - if (event.getType() == UpdateType.MIN_16) - sale(); } private void sale() @@ -54,36 +55,36 @@ public class NotificationManager extends MiniPlugin for (Player player : UtilServer.getPlayers()) { Rank rank = _clientManager.Get(player).GetRank(); - + if (rank.has(Rank.LEGEND)) continue; - + if (rank == Rank.ALL) { - UtilPlayer.message(player, C.cWhite + "50% Off Sale! " + " Purchase " + C.cAqua + C.Bold + "Ultra Rank" + C.cWhite + " for $15"); + UtilPlayer.message(player, C.cWhite + " 50% Off Sale! " + " Purchase " + C.cAqua + C.Bold + "Ultra Rank" + C.cWhite + " for $15"); } else if (rank == Rank.ULTRA) { - UtilPlayer.message(player, C.cWhite + "50% Off Sale! " + " Upgrade to " + C.cPurple + C.Bold + "Hero Rank" + C.cWhite + " for $15!"); + UtilPlayer.message(player, C.cWhite + " 50% Off Sale! " + " Upgrade to " + C.cPurple + C.Bold + "Hero Rank" + C.cWhite + " for $15!"); } else if (rank == Rank.HERO) { - UtilPlayer.message(player, C.cWhite + "50% Off Sale! " + "Upgrade to " + C.cGreen + C.Bold + "Legend Rank" + C.cWhite + " for $15!"); + UtilPlayer.message(player, C.cWhite + " 50% Off Sale! " + "Upgrade to " + C.cGreen + C.Bold + "Legend Rank" + C.cWhite + " for $15!"); } - - UtilPlayer.message(player, C.cWhite + " Visit " + F.link("www.mineplex.com/shop") + " for 50% Off Ranks!"); + + UtilPlayer.message(player, C.cWhite + " Visit " + F.link("www.mineplex.com/shop") + C.cWhite + " for 50% Off Ranks!"); } } - + private void hugeSale() { for (Player player : UtilServer.getPlayers()) { Rank rank = _clientManager.Get(player).GetRank(); - + if (rank.has(Rank.LEGEND)) continue; - + UtilPlayer.message(player, _summerLine); UtilPlayer.message(player, " "); UtilPlayer.message(player, " " + @@ -91,7 +92,7 @@ public class NotificationManager extends MiniPlugin C.cYellow + C.Bold + " SUMMER SUPER SALE " + C.cGreen + C.Bold + "75% OFF"); UtilPlayer.message(player, " "); - + if (rank == Rank.ALL) { UtilPlayer.message(player, C.cWhite + " " + player.getName() + ", you can get 75% Off " + C.cAqua + C.Bold + "All Lifetime Ranks" + C.cWhite + "!"); @@ -107,7 +108,7 @@ public class NotificationManager extends MiniPlugin UtilPlayer.message(player, C.cWhite + " Hello " + player.getName() + ", upgrade to " + C.cGreen + C.Bold + "LEGEND RANK" + C.cWhite + " for only $7.50!"); UtilPlayer.message(player, C.cWhite + " This is our biggest sale ever, " + C.cRed + C.Line + "ends Sunday 16th" + C.cWhite + "!"); } - + UtilPlayer.message(player, " "); UtilPlayer.message(player, " " + C.cGreen + "www.mineplex.com/shop"); UtilPlayer.message(player, " "); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketHandler.java b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketHandler.java index f01efc2da..3f1b4b3a7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketHandler.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketHandler.java @@ -51,9 +51,25 @@ public class PacketHandler extends MiniPlugin EnumProtocol.PLAY.a().put(2, PacketPlayUseEntity.class); EnumProtocol.PLAY.a().put(PacketPlayUseEntity.class, 2); +<<<<<<< HEAD Method method = ProtocolInjector.class.getDeclaredMethod("addPacket", EnumProtocol.class, boolean.class, int.class, Class.class); +======= + +// NBT Overflow Exploit Handlers + EnumProtocol.PLAY.a().put(8, PacketPlayInBlockPace.class); + EnumProtocol.PLAY.a().put(PacketPlayInBlockPace.class, 8); + + EnumProtocol.PLAY.a().put(14, PacketPlayInWindowClick.class); + EnumProtocol.PLAY.a().put(PacketPlayInWindowClick.class, 14); + + EnumProtocol.PLAY.a().put(16, PacketPlayInSetCreativeSlot.class); + EnumProtocol.PLAY.a().put(PacketPlayInSetCreativeSlot.class, 16); +// ---------------------------- + + Method method = ProtocolInjector.class.getDeclaredMethod("addPacket", EnumProtocol.class,boolean.class, int.class, Class.class); +>>>>>>> 1aecc9505c702167aeca5fd3301762264ce46c5d method.setAccessible(true); method.invoke(null, EnumProtocol.PLAY, true, 67, PacketPlayOutCamera.class); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayInBlockPace.java b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayInBlockPace.java new file mode 100644 index 000000000..4e4eea5df --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayInBlockPace.java @@ -0,0 +1,15 @@ +package mineplex.core.packethandler; + +import net.minecraft.server.v1_7_R4.PacketDataSerializer; +import net.minecraft.server.v1_7_R4.PacketPlayInBlockPlace; + +public class PacketPlayInBlockPace extends PacketPlayInBlockPlace +{ + + @Override + public void a(PacketDataSerializer data) + { + super.a(WrappedPacketDataSerializer.wrapDataSerializer(data)); + } + +} \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayInSetCreativeSlot.java b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayInSetCreativeSlot.java new file mode 100644 index 000000000..23b7482c7 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayInSetCreativeSlot.java @@ -0,0 +1,15 @@ +package mineplex.core.packethandler; + +import net.minecraft.server.v1_7_R4.PacketDataSerializer; + +public class PacketPlayInSetCreativeSlot extends net.minecraft.server.v1_7_R4.PacketPlayInSetCreativeSlot +{ + + @Override + public void a(PacketDataSerializer data) + { + super.a(WrappedPacketDataSerializer.wrapDataSerializer(data)); + } + + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayInWindowClick.java b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayInWindowClick.java new file mode 100644 index 000000000..baee403be --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayInWindowClick.java @@ -0,0 +1,14 @@ +package mineplex.core.packethandler; + +import net.minecraft.server.v1_7_R4.PacketDataSerializer; + +public class PacketPlayInWindowClick extends net.minecraft.server.v1_7_R4.PacketPlayInWindowClick +{ + + @Override + public void a(PacketDataSerializer data) + { + super.a(WrappedPacketDataSerializer.wrapDataSerializer(data)); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/packethandler/WrappedPacketDataSerializer.java b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/WrappedPacketDataSerializer.java new file mode 100644 index 000000000..0be73da27 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/WrappedPacketDataSerializer.java @@ -0,0 +1,85 @@ +package mineplex.core.packethandler; + +import java.io.DataInputStream; +import java.io.InputStream; +import java.lang.reflect.Field; + +import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftItemStack; +import org.spigotmc.LimitStream; + +import net.minecraft.server.v1_7_R4.Item; +import net.minecraft.server.v1_7_R4.ItemStack; +import net.minecraft.server.v1_7_R4.NBTCompressedStreamTools; +import net.minecraft.server.v1_7_R4.NBTReadLimiter; +import net.minecraft.server.v1_7_R4.NBTTagCompound; +import net.minecraft.server.v1_7_R4.PacketDataSerializer; +import net.minecraft.util.io.netty.buffer.ByteBuf; +import net.minecraft.util.io.netty.buffer.ByteBufInputStream; + +public class WrappedPacketDataSerializer extends PacketDataSerializer +{ + + public WrappedPacketDataSerializer(ByteBuf bytebuf) + { + super(bytebuf); + } + + public WrappedPacketDataSerializer(ByteBuf bytebuf, int version) + { + super(bytebuf, version); + } + + @Override + public ItemStack c() + { + try { + ItemStack itemstack = null; + short short0 = readShort(); + if (short0 >= 0) + { + byte b0 = readByte(); + short short1 = readShort(); + + itemstack = new ItemStack(Item.getById(short0), b0, short1); + itemstack.setTag(b()); + if (itemstack.getTag() != null) { + CraftItemStack.setItemMeta(itemstack, CraftItemStack.getItemMeta(itemstack)); + } + } + return itemstack; + } catch (Exception e) { + this.clear(); + return null; + } + } + + @Override + public NBTTagCompound b() + { + int i = readerIndex(); + byte b0 = readByte(); + if (b0 == 0) { + return null; + } + readerIndex(i); + ByteBufInputStream data = new ByteBufInputStream(this); + NBTReadLimiter nbtreadlimiter = new NBTReadLimiter(2097152L); + return NBTCompressedStreamTools.a(new DataInputStream(new LimitStream((InputStream)data, nbtreadlimiter)), nbtreadlimiter); + } + + public static WrappedPacketDataSerializer wrapDataSerializer(PacketDataSerializer data) { + try + { + Field a = data.getClass().getDeclaredField("a"); + a.setAccessible(true); + ByteBuf buff = (ByteBuf) a.get(data); + WrappedPacketDataSerializer w = new WrappedPacketDataSerializer(buff, data.version); + return w; + } + catch (Exception e) + { + e.printStackTrace(); + return null; + } + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/pet/PetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/pet/PetManager.java index 0983baf8c..46488298a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/pet/PetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/pet/PetManager.java @@ -146,7 +146,7 @@ public class PetManager extends MiniClientPlugin { Player p = event.getPlayer(); Rank rank = _clientManager.Get(p).GetRank(); - if (rank == Rank.LEGEND || rank == Rank.ADMIN || rank == Rank.DEVELOPER || rank == Rank.OWNER) + if (rank.has(Rank.LEGEND)) { _donationManager.Get(p.getName()).AddUnknownSalesPackagesOwned("Widder"); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/pet/repository/PetRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/pet/repository/PetRepository.java index 85973eeb9..efb2331c0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/pet/repository/PetRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/pet/repository/PetRepository.java @@ -34,6 +34,9 @@ public class PetRepository extends RepositoryBase { public void run() { + if (token.PetId == 0 || token.AccountId == 0) + return; + executeInsert("INSERT INTO accountPets(petName, petId, accountId) VALUES (?, ?, ?);", null, new ColumnVarChar("petName", 32, token.PetName) , new ColumnInt("petId", token.PetId) , new ColumnInt("accountId", token.AccountId)); @@ -49,6 +52,9 @@ public class PetRepository extends RepositoryBase { public void run() { + if (token.PetId == 0 || token.AccountId == 0) + return; + executeUpdate("DELETE FROM accountPets WHERE petId = ? AND accountId = ?;" , new ColumnInt("petId", token.PetId) , new ColumnInt("accountId", token.AccountId)); @@ -69,6 +75,9 @@ public class PetRepository extends RepositoryBase { public void run() { + if (token.PetId == 0 || token.AccountId == 0) + return; + int rowsChanged = executeUpdate("UPDATE accountPets SET petName = ? WHERE petId = ? AND accountId = ?;", new ColumnVarChar("petName", 32, token.PetName) , new ColumnInt("petId", token.PetId) , new ColumnInt("accountId", token.AccountId)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/poll/PollRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/poll/PollRepository.java index 53884c66f..588d3d549 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/poll/PollRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/poll/PollRepository.java @@ -35,8 +35,8 @@ public class PollRepository extends RepositoryBase @Override protected void initialize() { - executeUpdate(CREATE_POLL_TABLE); - executeUpdate(CREATE_RELATION_TABLE); + //executeUpdate(CREATE_POLL_TABLE); + //executeUpdate(CREATE_RELATION_TABLE); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/preferences/ui/PreferencesPage.java b/Plugins/Mineplex.Core/src/mineplex/core/preferences/ui/PreferencesPage.java index 8007a3aef..2d4b29462 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/preferences/ui/PreferencesPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/preferences/ui/PreferencesPage.java @@ -165,7 +165,22 @@ public class PreferencesPage extends ShopPageBase if (player.isOnline()) continue; - int uploadKey = PlayerCache.getInstance().getPlayer(player.getUniqueId()).getAccountId(); - - uploadQueue.put(uploadKey, new NautHashMap()); - - for (String statName : _statUploadQueue.get(player).keySet()) + try { - int statId = _stats.get(statName); - uploadQueue.get(uploadKey).put(statId, _statUploadQueue.get(player).get(statName)); - System.out.println(player.getName() + " saving stat : " + statName + " adding " + _statUploadQueue.get(player).get(statName)); + int uploadKey = PlayerCache.getInstance().getPlayer(player.getUniqueId()).getAccountId(); + + uploadQueue.put(uploadKey, new NautHashMap()); + + for (String statName : _statUploadQueue.get(player).keySet()) + { + int statId = _stats.get(statName); + uploadQueue.get(uploadKey).put(statId, _statUploadQueue.get(player).get(statName)); + System.out.println(player.getName() + " saving stat : " + statName + " adding " + _statUploadQueue.get(player).get(statName)); + } + + statIterator.remove(); + } + catch (Exception e) + { + //System.out.println("[StatsManager] AccountId was not set for " + player.getName()); } - - statIterator.remove(); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/titangiveaway/GiveawayMessageHandler.java b/Plugins/Mineplex.Core/src/mineplex/core/titangiveaway/GiveawayMessageHandler.java new file mode 100644 index 000000000..b2c47a912 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/titangiveaway/GiveawayMessageHandler.java @@ -0,0 +1,47 @@ +package mineplex.core.titangiveaway; + +import org.bukkit.Bukkit; +import org.bukkit.Sound; +import org.bukkit.World; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTextMiddle; +import mineplex.core.common.util.UtilTime; +import mineplex.serverdata.commands.CommandCallback; +import mineplex.serverdata.commands.ServerCommand; + +public class GiveawayMessageHandler implements CommandCallback +{ + private JavaPlugin _plugin; + + public GiveawayMessageHandler(JavaPlugin plugin) + { + _plugin = plugin; + } + + @Override + public void run(ServerCommand command) + { + if (command instanceof TitanGiveawayMessage) + { + TitanGiveawayMessage message = ((TitanGiveawayMessage) command); + String playerName = message.getPlayerName(); + int count = message.getTitanCount(); + String countString = count + UtilTime.getDayOfMonthSuffix(count); + String chatMessage = C.cRed + playerName + C.cWhite + " has become the " + C.cRed + countString + " Titan "; + UtilTextMiddle.display(C.cDRed + C.Bold + "TITAN", chatMessage, 20, 80, 20, UtilServer.getPlayers()); + World world = UtilServer.getPlayers().length > 0 ? UtilServer.getPlayers()[0].getWorld() : Bukkit.getWorlds().get(0); + LightFlicker lightFlicker = new LightFlicker(world); + lightFlicker.runTaskTimer(_plugin, 1, 1); + + for (Player player : UtilServer.getPlayers()) + { + player.sendMessage(chatMessage); + player.playSound(player.getEyeLocation(), Sound.AMBIENCE_CAVE, 1, 1); + } + } + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/titangiveaway/LightFlicker.java b/Plugins/Mineplex.Core/src/mineplex/core/titangiveaway/LightFlicker.java new file mode 100644 index 000000000..483df366d --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/titangiveaway/LightFlicker.java @@ -0,0 +1,52 @@ +package mineplex.core.titangiveaway; + +import java.util.Random; + +import org.bukkit.Sound; +import org.bukkit.World; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; + +public class LightFlicker extends BukkitRunnable +{ + private static int MAX_TICKS = 100; + + private World _world; + private Random _random; + private int _ticks; + private long _previousTime; + + public LightFlicker(World world) + { + _world = world; + _random = new Random(); + _ticks = 0; + _previousTime = world.getTime(); + } + + @Override + public void run() + { + if (_ticks >= MAX_TICKS) + { + _world.setTime(_previousTime); + cancel(); + } + + if (_ticks % 5 == 0) + { + long time = (long) (24000 * _random.nextDouble()); + _world.setTime(time); + } + + if (_ticks % 10 == 0) + { + for (Player player : _world.getPlayers()) + { + player.playSound(player.getEyeLocation(), Sound.AMBIENCE_THUNDER, 1, 1); + } + } + + _ticks++; + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/titangiveaway/TitanGiveawayAnimation.java b/Plugins/Mineplex.Core/src/mineplex/core/titangiveaway/TitanGiveawayAnimation.java new file mode 100644 index 000000000..2a5e70db6 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/titangiveaway/TitanGiveawayAnimation.java @@ -0,0 +1,65 @@ +package mineplex.core.titangiveaway; + +import mineplex.core.common.util.UtilFirework; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTime; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; + +import org.bukkit.Bukkit; +import org.bukkit.Color; +import org.bukkit.FireworkEffect.Type; +import org.bukkit.Location; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.HandlerList; +import org.bukkit.event.Listener; + +public class TitanGiveawayAnimation implements Listener +{ + private Location _location; + private Long _duration, _startTime, _worldTime; + + public TitanGiveawayAnimation(TitanGiveawayManager manager, Location start, Long duration) + { + _location = start.clone(); + _duration = duration; + _startTime = System.currentTimeMillis(); +// _worldTime = start.getWorld().getTime(); + Bukkit.getPluginManager().registerEvents(this, manager.getPlugin()); + } + + public TitanGiveawayAnimation(TitanGiveawayManager manager, Location start) + { + this(manager, start, 11111L); + } + + @EventHandler(priority = EventPriority.MONITOR) + public void tick(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + if (UtilTime.elapsed(_startTime, _duration)) + { + remove(); + return; + } + +// _location.getWorld().setTime(UtilMath.random.nextLong()); + for (Player player : UtilServer.getPlayers()) + { + player.playSound(_location, Sound.ORB_PICKUP, 5, 5); + UtilFirework.packetPlayFirework(player, _location, Type.BURST, Color.RED, true, false); + } + } + + private void remove() + { +// _location.getWorld().setTime(_worldTime); + HandlerList.unregisterAll(this); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/titangiveaway/TitanGiveawayManager.java b/Plugins/Mineplex.Core/src/mineplex/core/titangiveaway/TitanGiveawayManager.java new file mode 100644 index 000000000..0c66030eb --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/titangiveaway/TitanGiveawayManager.java @@ -0,0 +1,127 @@ +package mineplex.core.titangiveaway; + +import java.util.Random; + +import org.bukkit.Location; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import org.bukkit.plugin.java.JavaPlugin; + +import mineplex.core.MiniPlugin; +import mineplex.core.account.CoreClientManager; +import mineplex.core.common.Rank; +import mineplex.core.common.util.Callback; +import mineplex.core.status.ServerStatusManager; +import mineplex.serverdata.Region; +import mineplex.serverdata.commands.ServerCommandManager; + +public class TitanGiveawayManager extends MiniPlugin +{ + private static final double RANK_FIND_CHANCE = 0.001; +// private static final double RANK_FIND_CHANCE = 1; + + private TitanGiveawayRepository _repository; + private CoreClientManager _clientManager; + private ServerStatusManager _statusManager; + private Random _random; + + public TitanGiveawayManager(JavaPlugin plugin, CoreClientManager clientManager, ServerStatusManager statusManager) + { + super("Titan Giveaway", plugin); + + _repository = new TitanGiveawayRepository(plugin); + _clientManager = clientManager; + _statusManager = statusManager; + _random = new Random(); + + ServerCommandManager.getInstance().registerCommandType("TitanGiveawayMessage", TitanGiveawayMessage.class, new GiveawayMessageHandler(plugin)); + } + + public void openPumpkin(final Player player, final Runnable onSuccess) + { + double rand = _random.nextDouble(); + if (!hasTitan(player) && rand < RANK_FIND_CHANCE) + { + final int accountId = _clientManager.getAccountId(player); + final Region region = getRegion(); + final String serverName = getServerName(); + + // Need to check database that we can give away a rank + runAsync(new Runnable() + { + @Override + public void run() + { + final boolean pass = _repository.canGiveaway(region); + + if (pass && _repository.addTitan(accountId, region, serverName)) + { + runSync(new Runnable() + { + @Override + public void run() + { + giveRank(new Callback() + { + @Override + public void run(Rank rank) + { + if (rank == Rank.TITAN) + { + TitanGiveawayMessage message = new TitanGiveawayMessage(player.getName(), _repository.getTitanCount() + 1); + message.publish(); + if (onSuccess != null) onSuccess.run(); + } + } + }, Rank.TITAN, player); + } + }); + } + } + }); + } + } + + /** + * Confirm that the player doesn't already have TITAN rank + */ + private boolean hasTitan(Player player) + { + return _clientManager.hasRank(player, Rank.TITAN); + } + + public Region getRegion() + { + return _statusManager.getRegion(); + } + + public String getServerName() + { + return _statusManager.getCurrentServerName(); + } + + private void giveRank(Callback callback, Rank rank, Player player) + { + _clientManager.Get(player).SetRank(rank); + _clientManager.getRepository().saveRank(callback, player.getName(), player.getUniqueId(), rank, true); + } + +// @EventHandler +// public void onCommand(final PlayerCommandPreprocessEvent event) +// { +// if (event.getMessage().contains("pumpkin")) +// { +// openPumpkin(event.getPlayer(), new Runnable() +// { +// @Override +// public void run() +// { +// Location location = event.getPlayer().getLocation().add(1, 0.5, 1); +// new TitanGiveawayAnimation(TitanGiveawayManager.this, location, 3000L); +// } +// }); +// event.setCancelled(true); +// } +// } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/titangiveaway/TitanGiveawayMessage.java b/Plugins/Mineplex.Core/src/mineplex/core/titangiveaway/TitanGiveawayMessage.java new file mode 100644 index 000000000..ae37cf7be --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/titangiveaway/TitanGiveawayMessage.java @@ -0,0 +1,32 @@ +package mineplex.core.titangiveaway; + +import mineplex.serverdata.commands.ServerCommand; + +public class TitanGiveawayMessage extends ServerCommand +{ + private String _playerName; + private int _titanCount; + + public TitanGiveawayMessage(String playerName, int titanCount) + { + _playerName = playerName; + _titanCount = titanCount; + } + + public String getPlayerName() + { + return _playerName; + } + + public int getTitanCount() + { + return _titanCount; + } + + @Override + public void run() + { + // Handled in Command Callback + } +} + diff --git a/Plugins/Mineplex.Core/src/mineplex/core/titangiveaway/TitanGiveawayRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/titangiveaway/TitanGiveawayRepository.java new file mode 100644 index 000000000..4eb95a46d --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/titangiveaway/TitanGiveawayRepository.java @@ -0,0 +1,70 @@ +package mineplex.core.titangiveaway; + +import java.sql.CallableStatement; +import java.sql.Connection; +import java.sql.Types; + +import org.bukkit.plugin.java.JavaPlugin; + +import mineplex.core.database.DBPool; +import mineplex.core.database.RepositoryBase; +import mineplex.core.database.column.ColumnInt; +import mineplex.core.database.column.ColumnVarChar; +import mineplex.serverdata.Region; + +public class TitanGiveawayRepository extends RepositoryBase +{ + private static final String ADD_TITAN = "INSERT INTO titanGiveaway (accountId, region, serverName) VALUES (?, ?, ?)"; + + private int _titanCount; + + public TitanGiveawayRepository(JavaPlugin plugin) + { + super(plugin, DBPool.ACCOUNT); + _titanCount = 0; + } + + @Override + protected void initialize() + { + + } + + @Override + protected void update() + { + + } + + public boolean addTitan(int accountId, Region region, String serverName) + { + return 1 == executeUpdate(ADD_TITAN, new ColumnInt("accountId", accountId), new ColumnVarChar("region", 10, region.name()), new ColumnVarChar("serverName", 64, serverName)); + } + + public boolean canGiveaway(Region region) + { + try (Connection connection = getConnection(); + CallableStatement callableStatement = connection.prepareCall("{call check_titanGiveaway(?, ?, ?)}")) + { + callableStatement.setString(1, region.name()); + callableStatement.registerOutParameter(2, Types.BOOLEAN); + callableStatement.registerOutParameter(3, Types.INTEGER); + callableStatement.executeUpdate(); + + boolean pass = callableStatement.getBoolean(2); + int titanCount = callableStatement.getInt(3); + + _titanCount = titanCount; + return pass; + } + catch (Exception e) + { + } + return false; + } + + public int getTitanCount() + { + return _titanCount; + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureLocation.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureLocation.java index 7368f718a..167d4cd77 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureLocation.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureLocation.java @@ -132,7 +132,7 @@ public class TreasureLocation implements Listener int itemCount = _inventoryManager.Get(player).getItemCount(treasureType.getItemName()); if (itemCount > 0) { - _inventoryManager.addItemToInventory(player, "Item", treasureType.getItemName(), -1); + _inventoryManager.addItemToInventory(player, treasureType.getItemName(), -1); return true; } return false; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/BuyChestButton.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/BuyChestButton.java index e1afeaf64..9f13d2518 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/BuyChestButton.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/BuyChestButton.java @@ -49,7 +49,7 @@ public class BuyChestButton implements IButton { public void run() { - _inventoryManager.addItemToInventory(player, "Item", _chestName, 1); + _inventoryManager.addItemToInventory(player, _chestName, 1); _page.refresh(); } }, _page, new ChestPackage(_chestName, _chestMat, _chestCost), CurrencyType.Coins, player)); diff --git a/Plugins/Mineplex.EnjinTranslator/src/mineplex/enjinTranslator/Enjin.java b/Plugins/Mineplex.EnjinTranslator/src/mineplex/enjinTranslator/Enjin.java index 2a33236df..d256a560a 100644 --- a/Plugins/Mineplex.EnjinTranslator/src/mineplex/enjinTranslator/Enjin.java +++ b/Plugins/Mineplex.EnjinTranslator/src/mineplex/enjinTranslator/Enjin.java @@ -336,7 +336,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor { public void run() { - if (_clientManager.Get(name).GetRank() == Rank.ALL || !_clientManager.Get(name).GetRank().has(rank) || _clientManager.Get(name).GetRank() == rank) + if (rank == Rank.ALL || _clientManager.Get(name).GetRank() == Rank.ALL || !_clientManager.Get(name).GetRank().has(rank) || _clientManager.Get(name).GetRank() == rank) { _clientManager.SaveRank(name, playerUUID, rank, perm); System.out.println("[" + _dateFormat.format(new Date()) + "] " + name + " received " + rank + " " + (perm ? "permanently." : "for 1 month.")); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java b/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java index e196f062c..169aedbf4 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java @@ -44,6 +44,7 @@ import mineplex.core.stats.StatsManager; import mineplex.core.status.ServerStatusManager; import mineplex.core.task.TaskManager; import mineplex.core.teleport.Teleport; +import mineplex.core.titangiveaway.TitanGiveawayManager; import mineplex.core.updater.FileUpdater; import mineplex.core.updater.Updater; import mineplex.core.velocity.VelocityFix; @@ -107,6 +108,7 @@ public class Hub extends JavaPlugin implements IRelation //Main Modules ServerStatusManager serverStatusManager = new ServerStatusManager(this, clientManager, new LagMeter(this, clientManager)); + new TitanGiveawayManager(this, clientManager, serverStatusManager); Portal portal = new Portal(this, clientManager, serverStatusManager.getCurrentServerName()); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index 72e575a1a..b2839d5af 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -3,6 +3,78 @@ package mineplex.hub; import java.util.ArrayList; import java.util.HashMap; +import mineplex.core.MiniClientPlugin; +import mineplex.core.account.CoreClient; +import mineplex.core.account.CoreClientManager; +import mineplex.core.achievement.AchievementManager; +import mineplex.core.aprilfools.AprilFoolsManager; +import mineplex.core.benefit.BenefitManager; +import mineplex.core.blockrestore.BlockRestore; +import mineplex.core.bonuses.BonusManager; +import mineplex.core.botspam.BotSpamManager; +import mineplex.core.common.Rank; +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilInv; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTime; +import mineplex.core.common.util.UtilWorld; +import mineplex.core.cosmetic.CosmeticManager; +import mineplex.core.disguise.DisguiseManager; +import mineplex.core.disguise.disguises.DisguiseSlime; +import mineplex.core.donation.DonationManager; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.event.GadgetActivateEvent; +import mineplex.core.gadget.event.GadgetCollideEntityEvent; +import mineplex.core.hologram.HologramManager; +import mineplex.core.inventory.InventoryManager; +import mineplex.core.message.PrivateMessageEvent; +import mineplex.core.mount.MountManager; +import mineplex.core.mount.event.MountActivateEvent; +import mineplex.core.notifier.NotificationManager; +import mineplex.core.npc.NpcManager; +import mineplex.core.packethandler.PacketHandler; +import mineplex.core.party.Party; +import mineplex.core.party.PartyManager; +import mineplex.core.personalServer.PersonalServerManager; +import mineplex.core.pet.PetManager; +import mineplex.core.poll.PollManager; +import mineplex.core.portal.Portal; +import mineplex.core.preferences.PreferencesManager; +import mineplex.core.projectile.ProjectileManager; +import mineplex.core.punish.Punish; +import mineplex.core.stats.StatsManager; +import mineplex.core.task.TaskManager; +import mineplex.core.treasure.TreasureManager; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import mineplex.hub.commands.DisguiseCommand; +import mineplex.hub.commands.ForcefieldRadius; +import mineplex.hub.commands.GadgetToggle; +import mineplex.hub.commands.GameModeCommand; +import mineplex.hub.commands.NewsCommand; +import mineplex.hub.modules.ForcefieldManager; +import mineplex.hub.modules.HubVisibilityManager; +import mineplex.hub.modules.JumpManager; +import mineplex.hub.modules.KothManager; +import mineplex.hub.modules.NewsManager; +import mineplex.hub.modules.ParkourManager; +import mineplex.hub.modules.SoccerManager; +import mineplex.hub.modules.TextManager; +import mineplex.hub.modules.WorldManager; +import mineplex.hub.profile.gui.GUIProfile; +import mineplex.hub.tutorial.TutorialManager; +import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent; +import mineplex.minecraft.game.classcombat.item.event.ItemTriggerEvent; +import mineplex.minecraft.game.core.combat.DeathMessageType; +import mineplex.minecraft.game.core.combat.event.CombatDeathEvent; +import mineplex.minecraft.game.core.condition.ConditionManager; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; + import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.GameMode; @@ -34,89 +106,15 @@ import org.bukkit.event.player.PlayerVelocityEvent; import org.bukkit.event.server.ServerListPingEvent; import org.bukkit.event.world.ChunkLoadEvent; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.BookMeta; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scoreboard.DisplaySlot; import org.bukkit.scoreboard.Objective; import org.bukkit.scoreboard.Scoreboard; -import mineplex.core.MiniClientPlugin; -import mineplex.core.account.CoreClient; -import mineplex.core.account.CoreClientManager; -import mineplex.core.achievement.AchievementManager; -import mineplex.core.aprilfools.AprilFoolsManager; -import mineplex.core.benefit.BenefitManager; -import mineplex.core.blockrestore.BlockRestore; -import mineplex.core.botspam.BotSpamManager; -import mineplex.core.common.Rank; -import mineplex.core.common.util.C; -import mineplex.core.common.util.F; -import mineplex.core.common.util.UtilAction; -import mineplex.core.common.util.UtilAlg; -import mineplex.core.common.util.UtilInv; -import mineplex.core.common.util.UtilMath; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilTime; -import mineplex.core.common.util.UtilWorld; -import mineplex.core.cosmetic.CosmeticManager; -import mineplex.core.disguise.DisguiseManager; -import mineplex.core.disguise.disguises.DisguiseSlime; -import mineplex.core.donation.DonationManager; -import mineplex.core.gadget.GadgetManager; -import mineplex.core.gadget.event.GadgetActivateEvent; -import mineplex.core.gadget.event.GadgetCollideEntityEvent; -import mineplex.core.hologram.HologramManager; -import mineplex.core.inventory.InventoryManager; -import mineplex.core.message.PrivateMessageEvent; -import mineplex.core.mount.MountManager; -import mineplex.core.mount.event.MountActivateEvent; -import mineplex.core.notifier.NotificationManager; -import mineplex.core.npc.NpcManager; -import mineplex.core.packethandler.PacketHandler; -import mineplex.core.party.Party; -import mineplex.core.party.PartyManager; -import mineplex.core.personalServer.PersonalServerManager; -import mineplex.core.pet.PetManager; -import mineplex.core.portal.Portal; -import mineplex.core.preferences.PreferencesManager; -import mineplex.core.projectile.ProjectileManager; -import mineplex.core.punish.Punish; -import mineplex.core.reward.RewardManager; -import mineplex.core.stats.StatsManager; -import mineplex.core.task.TaskManager; -import mineplex.core.treasure.TreasureManager; -import mineplex.core.updater.UpdateType; -import mineplex.core.updater.event.UpdateEvent; -import mineplex.core.bonuses.BonusManager; -import mineplex.hub.commands.DisguiseCommand; -import mineplex.hub.commands.ForcefieldRadius; -import mineplex.hub.commands.GadgetToggle; -import mineplex.hub.commands.GameModeCommand; -import mineplex.hub.commands.NewsCommand; -import mineplex.hub.modules.ForcefieldManager; -import mineplex.hub.modules.HubVisibilityManager; -import mineplex.hub.modules.JumpManager; -import mineplex.hub.modules.KothManager; -import mineplex.hub.modules.NewsManager; -import mineplex.hub.modules.ParkourManager; -import mineplex.hub.modules.SoccerManager; -import mineplex.hub.modules.TextManager; -import mineplex.hub.modules.WorldManager; -import mineplex.core.poll.PollManager; -import mineplex.hub.profile.gui.GUIProfile; -import mineplex.hub.tutorial.TutorialManager; -import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent; -import mineplex.minecraft.game.classcombat.item.event.ItemTriggerEvent; -import mineplex.minecraft.game.core.combat.DeathMessageType; -import mineplex.minecraft.game.core.combat.event.CombatDeathEvent; -import mineplex.minecraft.game.core.condition.ConditionManager; -import mineplex.minecraft.game.core.damage.CustomDamageEvent; - public class HubManager extends MiniClientPlugin { // ☃❅ Snowman! - public HubType Type = HubType.Normal; + public HubType Type = HubType.Halloween; private BlockRestore _blockRestore; private CoreClientManager _clientManager; @@ -142,6 +140,7 @@ public class HubManager extends MiniClientPlugin private PetManager _petManager; private PacketHandler _packetHandler; private PersonalServerManager _personalServerManager; +// private HalloweenSpookinessManager _halloweenManager; private Location _spawn; private int _scoreboardTick = 0; @@ -220,7 +219,8 @@ public class HubManager extends MiniClientPlugin new BonusManager(plugin, clientManager, donationManager, pollManager , npcManager, hologramManager, statsManager, _inventoryManager, petManager); - +// _halloweenManager = new HalloweenSpookinessManager(this); + // NotificationManager notificationManager = new NotificationManager(plugin, clientManager, donationManager); // new MailManager(_plugin, notificationManager); @@ -843,6 +843,11 @@ public class HubManager extends MiniClientPlugin return _visibilityManager; } +// public HalloweenSpookinessManager getHalloweenManager() +// { +// return _halloweenManager; +// } + @EventHandler(priority = EventPriority.MONITOR) public void gadgetCollide(GadgetCollideEntityEvent event) { diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/HalloweenSpookinessManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/HalloweenSpookinessManager.java new file mode 100644 index 000000000..1369420a2 --- /dev/null +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/HalloweenSpookinessManager.java @@ -0,0 +1,233 @@ +package mineplex.hub.modules; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Set; + +import mineplex.core.MiniPlugin; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTime; +import mineplex.core.disguise.disguises.DisguiseArmorStand; +import mineplex.core.itemstack.ItemBuilder; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import mineplex.hub.HubManager; +import mineplex.hub.HubType; + +import org.bukkit.Color; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.entity.Skeleton; +import org.bukkit.event.EventHandler; +import org.bukkit.util.Vector; + +public class HalloweenSpookinessManager extends MiniPlugin +{ + /** + * + * This class doesn't work (yet.) I haven't had time to debug it due to the halloween update + * releasing in.. one hour..? + * Maybe release later this week or in future halloweens. + * @author Mysticate + * + */ + + protected class CreepyDudeData + { + public final Location Location; + public final Skeleton Skeleton; + public final DisguiseArmorStand Disguise; + + public CreepyDudeData(Location loc, Skeleton skel, DisguiseArmorStand stand) + { + Location = loc; + Skeleton = skel; + Disguise = stand; + } + + public void resetStare() + { + Disguise.setHeadPosition(new Vector(UtilAlg.GetPitch(Location.getDirection()), UtilAlg.GetYaw(Location.getDirection()), 0)); + } + } + + private HubManager _manager; + private final boolean _enabled; + + private Set _creepyDudes = new HashSet(); + + private Player _target; + private long _targetTime = System.currentTimeMillis(); + private long _lastTarget = System.currentTimeMillis(); + + public HalloweenSpookinessManager(HubManager manager) + { + super("Halloween Manager", manager.getPlugin()); + + _manager = manager; + _enabled = manager.Type == HubType.Halloween; + } + + @Override + public void enable() + { + if (!_enabled) + return; + + Location creepyDudeLoc = new Location(_manager.GetSpawn().getWorld(), 9.5, 72.0, -8.5, 70, 46); + Location creepyLittleDude1Loc = new Location(_manager.GetSpawn().getWorld(), 10.25, 72.0, -7.75, 70, 46); + Location creepyLittleDude2Loc = new Location(_manager.GetSpawn().getWorld(), 8.75, 72.0, -9.25, 70, 46); + + Skeleton creepyDude = spawnCreepyDude(creepyDudeLoc); + Skeleton creepyLittleDude1 = spawnCreepyDude(creepyLittleDude1Loc); + Skeleton creepyLittleDude2 = spawnCreepyDude(creepyLittleDude2Loc); + + DisguiseArmorStand creepyDudeDisguise = disguiseCreepyDude(creepyDude, creepyDudeLoc, false); + DisguiseArmorStand creepyLittleDude1Disguise = disguiseCreepyDude(creepyLittleDude1, creepyLittleDude1Loc, true); + DisguiseArmorStand creepyLittleDude2Disguise = disguiseCreepyDude(creepyLittleDude2, creepyLittleDude2Loc, true); + + _creepyDudes.add(new CreepyDudeData(creepyDudeLoc, creepyDude, creepyDudeDisguise)); + _creepyDudes.add(new CreepyDudeData(creepyLittleDude1Loc, creepyLittleDude1, creepyLittleDude1Disguise)); + _creepyDudes.add(new CreepyDudeData(creepyLittleDude2Loc, creepyLittleDude2, creepyLittleDude2Disguise)); + } + + @Override + public void disable() + { + if (!_enabled) + return; + + for (CreepyDudeData data : _creepyDudes) + { + data.Skeleton.remove(); + } + } + + private Skeleton spawnCreepyDude(Location loc) + { + Skeleton skeleton = loc.getWorld().spawn(loc, Skeleton.class); + + UtilEnt.silence(skeleton, true); + UtilEnt.Vegetate(skeleton); + UtilEnt.ghost(skeleton, true, false); + + skeleton.getEquipment().setItemInHand(ItemStackFactory.Instance.CreateStack(0)); + skeleton.getEquipment().setHelmet(ItemStackFactory.Instance.CreateStack(Material.SKULL_ITEM)); + skeleton.getEquipment().setChestplate(new ItemBuilder(Material.LEATHER_CHESTPLATE).setUnbreakable(true).setColor(Color.BLACK).build()); + skeleton.getEquipment().setLeggings(new ItemBuilder(Material.LEATHER_LEGGINGS).setUnbreakable(true).setColor(Color.BLACK).build()); + skeleton.getEquipment().setHelmet(new ItemBuilder(Material.LEATHER_BOOTS).setUnbreakable(true).setColor(Color.BLACK).build()); + + return skeleton; + } + + private DisguiseArmorStand disguiseCreepyDude(Skeleton creepyDude, Location loc, boolean small) + { + DisguiseArmorStand disguise = new DisguiseArmorStand(creepyDude); + disguise.setHeadPosition(new Vector(UtilAlg.GetPitch(loc.getDirection()), UtilAlg.GetYaw(loc.getDirection()), 0)); + + disguise.setCustomNameVisible(false); + disguise.setInvisible(true); + disguise.setRemoveBase(); + + if (small) + disguise.setSmall(); + + _manager.GetDisguise().disguise(disguise); + return disguise; + } + + @EventHandler + public void creepSmallChildOut(UpdateEvent event) + { + if (!_enabled) + return; + + if (event.getType() != UpdateType.TICK) + return; + + if (_target == null) + return; + + //Follow for 2 seconds + if (!_target.isOnline() || _manager.getPreferences().Get(_target).Invisibility || UtilTime.elapsed(_targetTime, 2000)) + { + resetFollowing(); + return; + } + + for (CreepyDudeData data : _creepyDudes) + { + Vector vec = UtilAlg.getTrajectory(data.Skeleton.getEyeLocation(), _target.getEyeLocation()); + data.Disguise.setHeadPosition(new Vector(UtilAlg.GetPitch(vec), UtilAlg.GetYaw(vec), 0)); + } + } + + @EventHandler + public void targetSmallChild(UpdateEvent event) + { + if (!_enabled) + return; + + if (event.getType() != UpdateType.FAST) + return; + + if (_target != null) + return; + + if (!UtilTime.elapsed(_lastTarget, 1000 * 60 + UtilMath.r(30) * 1000)) + return; + + Player target = findTarget(); + if (target == null) + return; + + _target = target; + _targetTime = System.currentTimeMillis(); + } + + private void resetFollowing() + { + _target = null; + _lastTarget = System.currentTimeMillis(); + + for (CreepyDudeData data : _creepyDudes) + { + data.resetStare(); + } + } + + private Player findTarget() + { + ArrayList dudeLocations = new ArrayList(); + for (CreepyDudeData data : _creepyDudes) + { + dudeLocations.add(data.Location); + } + + Location average = UtilAlg.getAverageLocation(dudeLocations); + ArrayList best = new ArrayList(); + + for (Player player : UtilServer.getPlayers()) + { + if (!UtilPlayer.is1_8(player)) + continue; + + if (_manager.getPreferences().Get(player).Invisibility) + continue; + + if (UtilMath.offset(player.getLocation(), average) <= 7) + best.add(player); + } + + if (best.isEmpty()) + return null; + + return UtilAlg.Random(best); + } +} diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/JumpManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/JumpManager.java index 4222e31de..28573f0ba 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/JumpManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/JumpManager.java @@ -40,6 +40,11 @@ public class JumpManager extends MiniPlugin if (player.getGameMode() == GameMode.CREATIVE) return; + if (Manager.getPreferences().Get(player).Invisibility) + { + return; + } + //Chicken Cancel DisguiseBase disguise = Manager.GetDisguise().getDisguise(player); if (disguise != null && @@ -70,6 +75,12 @@ public class JumpManager extends MiniPlugin if (player.getGameMode() == GameMode.CREATIVE) continue; + if (Manager.getPreferences().Get(player).Invisibility) + { + player.setAllowFlight(true); + continue; + } + if (Manager.GetParkour().isParkourMode(player)) { player.setAllowFlight(false); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/NewsManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/NewsManager.java index efc323beb..b41043b9d 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/NewsManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/NewsManager.java @@ -3,14 +3,6 @@ package mineplex.hub.modules; import java.util.HashMap; import java.util.Iterator; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.entity.Creature; -import org.bukkit.entity.Player; -import org.bukkit.entity.Wither; -import org.bukkit.event.EventHandler; -import org.bukkit.event.player.PlayerJoinEvent; - import mineplex.core.MiniPlugin; import mineplex.core.common.Rank; import mineplex.core.common.util.C; @@ -18,9 +10,9 @@ import mineplex.core.common.util.Callback; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTextMiddle; import mineplex.core.common.util.UtilTextTop; import mineplex.core.common.util.UtilTime; -import mineplex.core.common.util.UtilTextMiddle; import mineplex.core.gadget.gadgets.MorphWither; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; @@ -30,6 +22,15 @@ import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.hub.HubManager; import mineplex.hub.HubRepository; +import mineplex.hub.HubType; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.entity.Creature; +import org.bukkit.entity.Player; +import org.bukkit.entity.Wither; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerJoinEvent; public class NewsManager extends MiniPlugin { @@ -39,7 +40,7 @@ public class NewsManager extends MiniPlugin private int _newsIndex = 0; private long _newsTime = System.currentTimeMillis(); - private int _mineplexIndex = 0; + private int _animationIndex = 0; private HubRepository _repository = new HubRepository(); @@ -228,30 +229,169 @@ public class NewsManager extends MiniPlugin RefreshNews(); } + @EventHandler + public void joinNewsOverlay(final PlayerJoinEvent event) + { + for (int i=0 ; i<_news.length ; i++) + { + final int count = i; + + UtilServer.getServer().getScheduler().runTaskLater(Manager.getPlugin(), new Runnable() + { + @Override + public void run() + { + UtilTextMiddle.display(C.cGold + C.Bold + "MINEPLEX" + ChatColor.RESET, _news[_news.length - 1 - count] + ChatColor.RESET, (count == 0) ? 20 : 0, 60, 20, event.getPlayer()); + } + }, 60 * i + (i != 0 ? 20 : 0)); + } + } + @EventHandler public void DragonBarUpdate(UpdateEvent event) { if (event.getType() != UpdateType.FASTEST) return; - - _mineplexIndex = (_mineplexIndex + 1)%6; - //News Change - if (UtilTime.elapsed(_newsTime, 4500)) + String text = ""; + double healthPercent = 1; + + if (Manager.Type == HubType.Halloween) { - _newsIndex = (_newsIndex + 1)%_news.length; - _newsTime = System.currentTimeMillis(); + /** + * @author Mysticate + * Myst's sexy ass animation :> + */ + + _animationIndex = (_animationIndex + 1) % 147; + + if (_animationIndex == 0) text = C.cGoldB + " "; + if (_animationIndex == 1) text = C.cGoldB + " H"; + if (_animationIndex == 2) text = C.cGoldB + " HA"; + if (_animationIndex == 3) text = C.cGoldB + " HAP"; + if (_animationIndex == 4) text = C.cGoldB + " HAPP"; + if (_animationIndex == 5) text = C.cGoldB + " HAPPY"; + if (_animationIndex == 6) text = C.cGoldB + " HAPPY "; + if (_animationIndex == 7) text = C.cGoldB + " HAPPY H"; + if (_animationIndex == 8) text = C.cGoldB + " HAPPY HA"; + if (_animationIndex == 9) text = C.cGoldB + " HAPPY HAL"; + if (_animationIndex == 10) text = C.cGoldB + " HAPPY HALL"; + if (_animationIndex == 11) text = C.cGoldB + " HAPPY HALLO"; + if (_animationIndex == 12) text = C.cGoldB + " HAPPY HALLOW"; + if (_animationIndex == 13) text = C.cGoldB + " HAPPY HALLOWE"; + if (_animationIndex == 14) text = C.cGoldB + " HAPPY HALLOWEE"; + if (_animationIndex == 15) text = C.cGoldB + " HAPPY HALLOWEEN"; + if (_animationIndex == 16) text = C.cGoldB + " HAPPY HALLOWEEN "; + if (_animationIndex == 17) text = C.cGoldB + " HAPPY HALLOWEEN "; + if (_animationIndex == 18) text = C.cGoldB + " HAPPY HALLOWEEN "; + if (_animationIndex == 19) text = C.cGoldB + " HAPPY HALLOWEEN "; + if (_animationIndex == 20) text = C.cGoldB + " HAPPY HALLOWEEN "; + if (_animationIndex == 20) text = C.cGoldB + " HAPPY HALLOWEEN "; + if (_animationIndex == 21 || _animationIndex == 22) text = C.cGoldB + " HAPPY HALLOWEEN "; + + if (_animationIndex > 22 && _animationIndex <= 42) + { + if (_animationIndex % 3 == 0) text = C.cWhiteB + "2015" + C.cGoldB + " HAPPY HALLOWEEN " + C.cWhiteB + "2015"; + else if (_animationIndex % 3 == 1) text = C.cWhiteB + "2015" + C.cRedB + " HAPPY HALLOWEEN " + C.cWhiteB + "2015"; + else text = C.cWhiteB + "2015" + C.cYellowB + " HAPPY HALLOWEEN " + C.cWhiteB + "2015"; + } + + if (_animationIndex == 43 || _animationIndex == 44) text = C.cGoldB + " HAPPY HALLOWEEN "; + if (_animationIndex == 45) text = C.cGoldB + " HAPPY HALLOWEEN "; + if (_animationIndex == 46) text = C.cGoldB + " HAPPY HALLOWEEN "; + if (_animationIndex == 47) text = C.cGoldB + " HAPPY HALLOWEEN "; + if (_animationIndex == 48) text = C.cGoldB + " HAPPY HALLOWEEN "; + if (_animationIndex == 49) text = C.cGoldB + " HAPPY HALLOWEEN "; + if (_animationIndex == 50) text = C.cGoldB + " HAPPY HALLOWEEN "; + if (_animationIndex == 51) text = C.cGoldB + "HAPPY HALLOWEEN "; + if (_animationIndex == 52) text = C.cGoldB + "APPY HALLOWEEN "; + if (_animationIndex == 53) text = C.cGoldB + "PPY HALLOWEEN "; + if (_animationIndex == 54) text = C.cGoldB + "PY HALLOWEEN "; + if (_animationIndex == 55) text = C.cGoldB + "Y HALLOWEEN "; + if (_animationIndex == 56) text = C.cGoldB + " HALLOWEEN "; + if (_animationIndex == 57) text = C.cGoldB + "HALLOWEEN "; + if (_animationIndex == 58) text = C.cGoldB + "ALLOWEEN "; + if (_animationIndex == 59) text = C.cGoldB + "LLOWEEN "; + if (_animationIndex == 60) text = C.cGoldB + "LOWEEN "; + if (_animationIndex == 61) text = C.cGoldB + "OWEEN "; + if (_animationIndex == 62) text = C.cGoldB + "WEEN "; + if (_animationIndex == 63) text = C.cGoldB + "EEN "; + if (_animationIndex == 64) text = C.cGoldB + "EN "; + if (_animationIndex == 65) text = C.cGoldB + "N "; + if (_animationIndex == 66) text = C.cGoldB + " "; + + if (_animationIndex == 66) text = C.cGoldB + " S"; + if (_animationIndex == 67) text = C.cGoldB + " SP"; + if (_animationIndex == 68) text = C.cGoldB + " SPO"; + if (_animationIndex == 69) text = C.cGoldB + " SPOO"; + if (_animationIndex == 70) text = C.cGoldB + " SPOOK"; + if (_animationIndex == 71) text = C.cGoldB + " SPOOKY"; + if (_animationIndex == 72) text = C.cGoldB + " SPOOKY "; + if (_animationIndex == 73) text = C.cGoldB + " SPOOKY S"; + if (_animationIndex == 74) text = C.cGoldB + " SPOOKY SA"; + if (_animationIndex == 75) text = C.cGoldB + " SPOOKY SAL"; + if (_animationIndex == 76) text = C.cGoldB + " SPOOKY SALE"; + if (_animationIndex == 77) text = C.cGoldB + " SPOOKY SALE "; + if (_animationIndex == 78) text = C.cGoldB + " SPOOKY SALE "; + if (_animationIndex == 79) text = C.cGoldB + " SPOOKY SALE "; + if (_animationIndex == 80) text = C.cGoldB + " SPOOKY SALE "; + if (_animationIndex == 81) text = C.cGoldB + " SPOOKY SALE "; + if (_animationIndex == 82) text = C.cGoldB + " SPOOKY SALE "; + if (_animationIndex == 83) text = C.cGoldB + " SPOOKY SALE "; + if (_animationIndex == 84 || _animationIndex == 85) text = C.cGoldB + " SPOOKY SALE "; + + if (_animationIndex > 84 && _animationIndex <= 124) + { + if (_animationIndex % 2 == 0) text = C.cWhiteB + "50% OFF" + C.cGoldB + " SPOOKY SALE " + C.cWhiteB + "50% OFF"; + else if (_animationIndex % 2 == 1) text = C.cWhiteB + "50% OFF" + C.cRedB + " SPOOKY SALE " + C.cWhiteB + "50% OFF"; + else text = C.cWhiteB + "50% OFF" + C.cYellowB + " SPOOKY SALE " + C.cWhiteB + "50% OFF"; + } + + if (_animationIndex == 125 || _animationIndex == 126) text = C.cGoldB + " SPOOKY SALE "; + if (_animationIndex == 127) text = C.cGoldB + " SPOOKY SALE "; + if (_animationIndex == 128) text = C.cGoldB + " SPOOKY SALE "; + if (_animationIndex == 129) text = C.cGoldB + " SPOOKY SALE "; + if (_animationIndex == 130) text = C.cGoldB + " SPOOKY SALE "; + if (_animationIndex == 131) text = C.cGoldB + " SPOOKY SALE "; + if (_animationIndex == 132) text = C.cGoldB + " SPOOKY SALE "; + if (_animationIndex == 133) text = C.cGoldB + " SPOOKY SALE "; + if (_animationIndex == 134) text = C.cGoldB + " SPOOKY SALE "; + if (_animationIndex == 135) text = C.cGoldB + "SPOOKY SALE "; + if (_animationIndex == 136) text = C.cGoldB + "POOKY SALE "; + if (_animationIndex == 137) text = C.cGoldB + "OOKY SALE "; + if (_animationIndex == 138) text = C.cGoldB + "OKY SALE "; + if (_animationIndex == 139) text = C.cGoldB + "KY SALE "; + if (_animationIndex == 140) text = C.cGoldB + "Y SALE "; + if (_animationIndex == 141) text = C.cGoldB + " SALE "; + if (_animationIndex == 142) text = C.cGoldB + "SALE "; + if (_animationIndex == 143) text = C.cGoldB + "ALE "; + if (_animationIndex == 144) text = C.cGoldB + "LE "; + if (_animationIndex == 145) text = C.cGoldB + "E "; + if (_animationIndex == 146) text = C.cGoldB + " "; } - if (_newsIndex >= _news.length) + else { - // Resets newsIndex if outside of bounds of news array after RefreshNews but before UtilTime.elapsed above - _newsIndex = 0; + + + //News Change + if (UtilTime.elapsed(_newsTime, 4500)) + { + _newsIndex = (_newsIndex + 1)%_news.length; + _newsTime = System.currentTimeMillis(); + } + if (_newsIndex >= _news.length) + { + // Resets newsIndex if outside of bounds of news array after RefreshNews but before UtilTime.elapsed above + _newsIndex = 0; + } + + healthPercent = (double)_newsIndex/(double)(_news.length-1); + text = _news[_newsIndex]; } - double healthPercent = (double)_newsIndex/(double)(_news.length-1); - String text = _news[_newsIndex]; - UtilTextTop.display(text, UtilServer.getPlayers()); + + //Fix Entity Names for (Creature pet : Manager.getPetManager().getPets()) { if (pet instanceof Wither) @@ -277,22 +417,4 @@ public class NewsManager extends MiniPlugin } } } - - @EventHandler - public void joinNewsOverlay(final PlayerJoinEvent event) - { - for (int i=0 ; i<_news.length ; i++) - { - final int count = i; - - UtilServer.getServer().getScheduler().runTaskLater(Manager.getPlugin(), new Runnable() - { - @Override - public void run() - { - UtilTextMiddle.display(C.cGold + C.Bold + "MINEPLEX" + ChatColor.RESET, _news[_news.length - 1 - count] + ChatColor.RESET, (count == 0) ? 20 : 0, 60, 20, event.getPlayer()); - } - }, 60 * i + (i != 0 ? 20 : 0)); - } - } -} +} \ No newline at end of file diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/queue/QueueRepository.java b/Plugins/Mineplex.Hub/src/mineplex/hub/queue/QueueRepository.java index 3e66c7a84..0dfdf8640 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/queue/QueueRepository.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/queue/QueueRepository.java @@ -30,32 +30,6 @@ public class QueueRepository public void initialize() { - PreparedStatement preparedStatement = null; - - try (Connection connection = DBPool.QUEUE.getConnection()) - { - // Create table - preparedStatement = connection.prepareStatement(CREATE_ELO_QUEUE_TABLE); - preparedStatement.execute(); - } - catch (Exception exception) - { - exception.printStackTrace(); - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } } public void deleteQueueRecord(PlayerMatchStatus matchStatus) diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java index 3e17d1070..17f606598 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java @@ -64,7 +64,7 @@ public class ServerGameMenu extends ShopPageBase ChatColor.RESET + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("BR") + ChatColor.RESET + " other players!", })); - setItem(2, ItemStackFactory.Instance.CreateStack(Material.IRON_SWORD.getId(), (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Survival Games " + C.cGray + "Solo/Team Survival", new String[] + setItem(2, ItemStackFactory.Instance.CreateStack(Material.DIAMOND_SWORD.getId(), (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Survival Games " + C.cGray + "Solo/Team Survival", new String[] { ChatColor.RESET + "", ChatColor.RESET + "Search for chests to find loot and ", diff --git a/Plugins/Mineplex.MapParser/src/mineplex/mapparser/MapParser.java b/Plugins/Mineplex.MapParser/src/mineplex/mapparser/MapParser.java index 622e7516c..e929d625d 100644 --- a/Plugins/Mineplex.MapParser/src/mineplex/mapparser/MapParser.java +++ b/Plugins/Mineplex.MapParser/src/mineplex/mapparser/MapParser.java @@ -1,6 +1,8 @@ package mineplex.mapparser; +import java.io.BufferedWriter; import java.io.File; +import java.io.FileWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -29,6 +31,7 @@ import org.bukkit.event.block.BlockIgniteEvent; import org.bukkit.event.block.BlockIgniteEvent.IgniteCause; import org.bukkit.event.block.BlockSpreadEvent; import org.bukkit.event.block.LeavesDecayEvent; +import org.bukkit.event.block.SignChangeEvent; import org.bukkit.event.entity.EntitySpawnEvent; import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; @@ -50,30 +53,32 @@ import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilGear; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTime; +import mineplex.core.common.util.UtilWorld; import mineplex.mapparser.command.*; public class MapParser extends JavaPlugin implements Listener { private WorldManager _worldManager; - + private Parse _curParse = null; private HashMap _mapData = new HashMap(); private HashSet _mapsBeingZipped = new HashSet(); private List _commands = new ArrayList(); private Location _spawnLocation; - + private HashMap _permissionMap = new HashMap(); - + @Override public void onEnable() { _worldManager = new WorldManager(this); - + getServer().getPluginManager().registerEvents(this, this); - + getServer().getWorlds().get(0).setSpawnLocation(0, 106, 0); _spawnLocation = new Location(getServer().getWorlds().get(0), 0, 106, 0); - + //Updates getServer().getScheduler().scheduleSyncRepeatingTask(this, new Ticker(this), 1, 1); @@ -101,21 +106,21 @@ public class MapParser extends JavaPlugin implements Listener @Override public void onDisable() { - + } - + @EventHandler public void PlayerJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); - + player.teleport(getSpawnLocation()); - + ResetInventory(event.getPlayer()); - + DisplayHelp(player); } - + @EventHandler public void permissionUpdate(TickEvent event) { @@ -124,11 +129,11 @@ public class MapParser extends JavaPlugin implements Listener permissionSet(player); } } - + public void permissionSet(Player player) { boolean hasPermission = GetData(player.getWorld().getName()).HasAccess(player); - + if (!_permissionMap.containsKey(player) || _permissionMap.get(player) != hasPermission) { for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) @@ -137,18 +142,18 @@ public class MapParser extends JavaPlugin implements Listener player.addAttachment(plugin, "voxelsniper.sniper", hasPermission); player.addAttachment(plugin, "voxelsniper.brush.*", hasPermission); } - + _permissionMap.put(player, hasPermission); - + UtilPlayer.message(player, "Plugin Permissions: " + F.tf(hasPermission)); } } - - + + public void DisplayHelp(Player player) { UtilPlayer.message(player, F.main("Parser", "Listing Commands;")); - UtilPlayer.message(player, F.value("Parameters", "Parameters: = Required, [?] = Optional")); + UtilPlayer.message(player, F.value("Parameters", "Parameters: = Required, [?] = Optional")); UtilPlayer.message(player, F.value("/hub", "Return to hub world")); UtilPlayer.message(player, " "); UtilPlayer.message(player, F.value("/name ", "Set name for current map")); @@ -165,9 +170,9 @@ public class MapParser extends JavaPlugin implements Listener UtilPlayer.message(player, F.value("/map [gametype]", "Teleport to a map")); UtilPlayer.message(player, " "); UtilPlayer.message(player, C.cYellow + "Documentation: " + C.cGreen + "http://tinyurl.com/mpxmaps"); - + } - + @EventHandler public void Command(PlayerCommandPreprocessEvent event) { @@ -186,7 +191,7 @@ public class MapParser extends JavaPlugin implements Listener if (event.getMessage().toLowerCase().startsWith("/help")) { event.setCancelled(true); - + DisplayHelp(player); } @@ -197,7 +202,7 @@ public class MapParser extends JavaPlugin implements Listener if (alias.equalsIgnoreCase(commandLabel)) { event.setCancelled(true); - + if (!command.execute(player, commandLabel, args)) { UtilPlayer.message(player, F.main("Parser", "Invalid Input.")); @@ -229,13 +234,13 @@ public class MapParser extends JavaPlugin implements Listener { if (_curParse == null) return; - + if (_curParse.Update()) { Announce("Parse Completed!"); - + Announce("Cleaning and Creating ZIP..."); - + try { _worldManager.finalizeParsedWorld(_curParse.getWorld()); @@ -245,55 +250,55 @@ public class MapParser extends JavaPlugin implements Listener Announce("Creating ZIP Failed! Please Try Again!"); e.printStackTrace(); } - + _curParse = null; } } - + @EventHandler public void DisableCreatures(EntitySpawnEvent event) { if (event.getEntityType() == EntityType.DROPPED_ITEM || event.getEntity() instanceof LivingEntity) event.setCancelled(true); } - + @EventHandler public void DisableBurn(BlockBurnEvent event) { event.setCancelled(true); } - + @EventHandler public void DisableIgnite(BlockIgniteEvent event) { if (event.getCause() == IgniteCause.LAVA || event.getCause() == IgniteCause.SPREAD) event.setCancelled(true); } - + @EventHandler public void DisableFire(BlockSpreadEvent event) { event.setCancelled(true); } - + @EventHandler public void DisableFade(BlockFadeEvent event) { event.setCancelled(true); } - + @EventHandler public void DisableDecay(LeavesDecayEvent event) { event.setCancelled(true); } - + @EventHandler public void DisableIceForm(BlockFormEvent event) { event.setCancelled(true); } - + @EventHandler public void Updates(PlayerMoveEvent event) { @@ -305,12 +310,12 @@ public class MapParser extends JavaPlugin implements Listener world.setTime(8000); world.setStorm(false); } - - + + if (event.getPlayer().getGameMode() != GameMode.CREATIVE) event.getPlayer().setGameMode(GameMode.CREATIVE); } - + @EventHandler public void SaveUnloadWorlds(TickEvent event) { @@ -333,14 +338,14 @@ public class MapParser extends JavaPlugin implements Listener _mapsBeingZipped.add(world.getName()); System.out.println("Starting backup of " + world); BackupTask backupTask = new BackupTask(this, world.getName(), new Callback() - { + { @Override public void run(Boolean data) { System.out.println("Finished backup of " + world); _mapsBeingZipped.remove(world.getName()); } - }); + }); } } } @@ -466,13 +471,13 @@ public class MapParser extends JavaPlugin implements Listener public void ResetInventory(Player player) { -// UtilInv.Clear(player); -// -// player.getInventory().addItem(new ItemStack(Material.STONE_SWORD)); -// player.getInventory().addItem(new ItemStack(Material.STONE_SPADE)); -// player.getInventory().addItem(new ItemStack(Material.STONE_PICKAXE)); -// player.getInventory().addItem(new ItemStack(Material.STONE_AXE)); -// player.getInventory().addItem(new ItemStack(Material.WOOD_AXE)); + // UtilInv.Clear(player); + // + // player.getInventory().addItem(new ItemStack(Material.STONE_SWORD)); + // player.getInventory().addItem(new ItemStack(Material.STONE_SPADE)); + // player.getInventory().addItem(new ItemStack(Material.STONE_PICKAXE)); + // player.getInventory().addItem(new ItemStack(Material.STONE_AXE)); + // player.getInventory().addItem(new ItemStack(Material.WOOD_AXE)); } public WorldManager getWorldManager() @@ -531,14 +536,14 @@ public class MapParser extends JavaPlugin implements Listener public void commandCancel(PlayerCommandPreprocessEvent event) { if (event.getMessage().startsWith("/tp") || - event.getMessage().startsWith("/hub") || - event.getMessage().startsWith("/list") || - event.getMessage().startsWith("/map") || - event.getMessage().startsWith("/create") || - event.getMessage().startsWith("/copy") || - event.getMessage().startsWith("/delete")) + event.getMessage().startsWith("/hub") || + event.getMessage().startsWith("/list") || + event.getMessage().startsWith("/map") || + event.getMessage().startsWith("/create") || + event.getMessage().startsWith("/copy") || + event.getMessage().startsWith("/delete")) return; - + //Permission if (!GetData(event.getPlayer().getWorld().getName()).HasAccess(event.getPlayer())) { @@ -563,24 +568,24 @@ public class MapParser extends JavaPlugin implements Listener { event.setQuitMessage(F.sys("Player Quit", event.getPlayer().getName())); } - + @EventHandler(priority = EventPriority.LOWEST) public void TeleportCommand(PlayerCommandPreprocessEvent event) { if (!event.getMessage().toLowerCase().startsWith("/tp")) return; - + Player player = event.getPlayer(); - + String[] tokens = event.getMessage().split(" "); - + if (tokens.length != 2) { return; } - + event.setCancelled(true); - + Player target = UtilPlayer.searchOnline(player, tokens[1], true); if (target != null) { @@ -588,30 +593,30 @@ public class MapParser extends JavaPlugin implements Listener player.teleport(target); } } - + @EventHandler(priority = EventPriority.LOWEST) public void FlySpeed(PlayerCommandPreprocessEvent event) { if (!event.getMessage().toLowerCase().startsWith("/speed")) return; - + Player player = event.getPlayer(); - + String[] tokens = event.getMessage().split(" "); - + if (tokens.length != 2) { return; } - + event.setCancelled(true); - + try { float speed = Float.parseFloat(tokens[1]); - + player.setFlySpeed(speed); - + UtilPlayer.message(player, F.main("Game", "Fly Speed set to " + F.elem("" + speed) + ".")); } catch (Exception e) @@ -619,28 +624,28 @@ public class MapParser extends JavaPlugin implements Listener UtilPlayer.message(player, F.main("Game", "Invalid Speed Input.")); } } - + private HashMap>> treeHistory = new HashMap>>(); - + @EventHandler(priority = EventPriority.HIGHEST) public void treeRemover(PlayerInteractEvent event) { if (event.isCancelled()) return; - + //Permission if (!GetData(event.getPlayer().getWorld().getName()).HasAccess(event.getPlayer())) { return; } - + Player player = event.getPlayer(); - + if (!UtilGear.isMat(player.getItemInHand(), Material.NETHER_STAR)) return; - + event.setCancelled(true); - + //Remove if (event.getAction() == Action.LEFT_CLICK_BLOCK) { @@ -649,31 +654,31 @@ public class MapParser extends JavaPlugin implements Listener player.sendMessage(C.cRed + C.Bold + "TreeTool: " + ChatColor.RESET + "Left-Click on Log"); return; } - + HashSet toRemove = searchLog(new HashSet(), event.getClickedBlock()); - + if (toRemove.isEmpty()) { player.sendMessage(C.cRed + C.Bold + "TreeTool: " + ChatColor.RESET + "Left-Click on Log"); return; } - + HashSet history = new HashSet(); - + for (Block block : toRemove) { history.add(new BlockData(block)); - + block.setType(Material.AIR); } - + if (!treeHistory.containsKey(player)) treeHistory.put(player, new ArrayList>()); - + treeHistory.get(player).add(0, history); - + player.sendMessage(C.cRed + C.Bold + "TreeTool: " + ChatColor.RESET + "Tree Removed"); - + while (treeHistory.get(player).size() > 10) treeHistory.get(player).remove(10); } @@ -684,12 +689,12 @@ public class MapParser extends JavaPlugin implements Listener player.sendMessage(C.cGreen + C.Bold + "TreeTool: " + ChatColor.RESET + "No Tree History"); return; } - + HashSet datas = treeHistory.get(player).remove(0); - + for (BlockData data : datas) data.restore(); - + player.sendMessage(C.cGreen + C.Bold + "TreeTool: " + ChatColor.RESET + "Tree Restored"); } } @@ -699,51 +704,82 @@ public class MapParser extends JavaPlugin implements Listener //Not Tree if (current.getType() != Material.LOG && current.getType() != Material.LEAVES) return blocks; - + if (!blocks.add(current)) return blocks; - + for (Block other : UtilBlock.getSurrounding(current, true)) { if (current.getType() != Material.LOG && current.getType() != Material.LEAVES) continue; - + if (blocks.contains(other)) continue; - + //Dont spread from leaves to log if (current.getType() == Material.LEAVES && other.getType() == Material.LOG) continue; - + searchLog(blocks, other); } - + return blocks; } - + long lastUse = 0; @EventHandler(priority = EventPriority.LOWEST) public void leaptest(PlayerInteractEvent event) { - + if (event.getPlayer().getItemInHand() == null) return; - + if (event.getPlayer().getItemInHand().getType() != Material.FEATHER) return; - + if (System.currentTimeMillis() - lastUse < 800) { Bukkit.broadcastMessage("Cooldown"); return; } - - + + lastUse = System.currentTimeMillis(); - + Vector vel = event.getPlayer().getLocation().getDirection().multiply(1.2); vel.add(new Vector(0,0.6,0)); - + event.getPlayer().setVelocity(vel); } + + @EventHandler + public void signChangeLog(SignChangeEvent event) + { + if (GetData(event.getPlayer().getWorld().getName()).HasAccess(event.getPlayer())) + { + try + { + File file = new File(event.getPlayer().getWorld().getName() + "/" + "sign_log.txt"); + + if (!file.exists()) + file.createNewFile(); + + FileWriter fw = new FileWriter(file.getAbsoluteFile(), true); + BufferedWriter bw = new BufferedWriter(fw); + + bw.write("\n\n"); + bw.write("\n" + "Date: " + UtilTime.now()); + bw.write("\n" + "Player: " + event.getPlayer().getName()); + bw.write("\n" + "Location: " + UtilWorld.locToStrClean(event.getBlock().getLocation())); + for (int i=0 ; i private boolean isSkillLocked(ISkill skill) { - if (skill.IsFree() || getClientManager().Get(getPlayer().getName()).GetRank().has(Rank.ULTRA) || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions ULTRA") || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions " + skill.GetName())) + if (skill.IsFree() || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions " + skill.GetName())) return false; return true; @@ -411,7 +411,7 @@ public class SkillPage extends ShopPageBase private boolean isItemLocked(Item item) { - if (item.isFree() || getClientManager().Get(getPlayer().getName()).GetRank().has(Rank.ULTRA) || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions ULTRA") || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions " + item.GetName())) + if (item.isFree() || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions " + item.GetName())) return false; return true; diff --git a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java index ca9557402..6725da134 100644 --- a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java +++ b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java @@ -183,12 +183,19 @@ public class ServerMonitor log("Using " + usedCpuPercent + "% of available CPU (" + availableCPU + " Free) and " + usedRamPercent + "% of available RAM (" + availableRAM / 1000 + "GB Free)"); - _historyRepository.saveDedicatedServerStats(_dedicatedServers); - log("Saved Dedicated Server Stats."); - _historyRepository.saveServerGroupStats((int)totalCPU, (int)totalRAM, _serverGroupMap.values()); - log("Saved ServerGroup Stats."); - _historyRepository.saveNetworkStats(usedCpuPercent, usedRamPercent, availableCPU, availableRAM, _region); - log("Saved Network Stats."); + try + { + _historyRepository.saveDedicatedServerStats(_dedicatedServers); + log("Saved Dedicated Server Stats."); + _historyRepository.saveServerGroupStats((int)totalCPU, (int)totalRAM, _serverGroupMap.values()); + log("Saved ServerGroup Stats."); + _historyRepository.saveNetworkStats(usedCpuPercent, usedRamPercent, availableCPU, availableRAM, _region); + log("Saved Network Stats."); + } + catch (Exception ex) + { + ex.printStackTrace(); + } if (_count == 0) { @@ -366,7 +373,7 @@ public class ServerMonitor catch (Exception ex) { log("Error doing something : " + ex.getMessage()); - + ex.printStackTrace(); try { Thread.sleep(1000); @@ -454,20 +461,26 @@ public class ServerMonitor // Minimum 1500 slot bufferzone if (serverGroup.getName().equalsIgnoreCase("Lobby")) { + if (_region == Region.EU) + { + requiredTotal = 10; + requiredJoinable = 10; + } + int availableSlots = serverGroup.getMaxPlayerCount() - serverGroup.getPlayerCount(); - if (availableSlots < 1500) + if (availableSlots < 1000) { - serversToAdd = Math.max(1, (1500 - availableSlots) / serverGroup.getMaxPlayers()); + serversToAdd = Math.max(1, (1000 - availableSlots) / serverGroup.getMaxPlayers()); serversToAdd = Math.min(250 - totalServers, serversToAdd); serversToKill = 0; } else if (serversToKill > 0) - serversToKill = Math.min(serversToKill, (availableSlots - 1500) / 80); + serversToKill = Math.min(serversToKill, (availableSlots - 1000) / 80); else if (serversToAdd == 0 && joinableServers > requiredJoinable && totalServers > requiredTotal) { serversToRestart = Math.min(joinableServers - requiredJoinable, joinableServers - requiredTotal); - serversToRestart = Math.min(serversToRestart, (availableSlots - 1500) / 80); + serversToRestart = Math.min(serversToRestart, (availableSlots - 1000) / 80); if (serversToRestart <= 5) serversToRestart = 0; diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/password/PasswordRepository.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/password/PasswordRepository.java index 20cb041e0..f0cf867d4 100644 --- a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/password/PasswordRepository.java +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/password/PasswordRepository.java @@ -31,7 +31,7 @@ public class PasswordRepository extends RepositoryBase @Override protected void initialize() { - executeUpdate(CREATE_SERVER_PASSWORD_TABLE); + //executeUpdate(CREATE_SERVER_PASSWORD_TABLE); } @Override diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/ItemCommand.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/ItemCommand.java index 336fd3c46..a7760bad9 100644 --- a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/ItemCommand.java +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/ItemCommand.java @@ -40,12 +40,6 @@ public class ItemCommand extends CommandBase final String itemName = tempName; final int amount = amountSpecified; - if (!Plugin.getInventoryManager().validCategory(category)) - { - caller.sendMessage(F.main(Plugin.getName(), "You have entered an invalid Category.")); - return; - } - if (!Plugin.getInventoryManager().validItem(itemName)) { caller.sendMessage(F.main(Plugin.getName(), "You have entered an invalid Item.")); @@ -76,7 +70,7 @@ public class ItemCommand extends CommandBase UtilPlayer.message(caller, F.main(Plugin.getName(), "ERROR processing " + playerName + " " + amount + " " + itemName + ".")); } } - }, uuid, category, itemName, amount); + }, uuid, itemName, amount); } }, playerName, client.getAccountId(), (amount == 1 ? itemName : itemName + " " + amount), false, 0, false); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java index d38023f34..71fa876f8 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java @@ -4,6 +4,8 @@ import java.io.File; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; + +import mineplex.core.FoodDupeFix; import org.omg.CORBA._PolicyStub; import net.minecraft.server.v1_7_R4.BiomeBase; @@ -154,6 +156,7 @@ public class Arcade extends JavaPlugin new MemoryFix(this); new CustomTagFix(this, packetHandler); new TablistFix(this); + new FoodDupeFix(this); //Updates getServer().getScheduler().scheduleSyncRepeatingTask(this, new Updater(this), 1, 1); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java index 3faaa2e52..5c921e156 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java @@ -26,6 +26,7 @@ import org.bukkit.event.block.BlockFadeEvent; import org.bukkit.event.block.BlockSpreadEvent; import org.bukkit.event.block.LeavesDecayEvent; import org.bukkit.event.entity.CreatureSpawnEvent; +import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerJoinEvent; @@ -63,6 +64,7 @@ import mineplex.core.donation.DonationManager; import mineplex.core.elo.EloManager; import mineplex.core.energy.Energy; import mineplex.core.explosion.Explosion; +import mineplex.core.explosion.ExplosionEvent; import mineplex.core.gadget.gadgets.OutfitTeam; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; @@ -93,6 +95,7 @@ import mineplex.core.status.ServerStatusManager; import mineplex.core.task.TaskManager; import mineplex.core.teleport.Teleport; import mineplex.core.timing.TimingManager; +import mineplex.core.titangiveaway.TitanGiveawayManager; import mineplex.core.updater.event.UpdateEvent; import mineplex.minecraft.game.classcombat.Class.ClassManager; import mineplex.minecraft.game.classcombat.Condition.SkillConditionManager; @@ -135,6 +138,7 @@ import nautilus.game.arcade.managers.GameSpectatorManager; import nautilus.game.arcade.managers.GameStatManager; import nautilus.game.arcade.managers.GameTournamentManager; import nautilus.game.arcade.managers.GameWorldManager; +import nautilus.game.arcade.managers.HolidayManager; import nautilus.game.arcade.managers.IdleManager; import nautilus.game.arcade.managers.MiscManager; import nautilus.game.arcade.shop.ArcadeShop; @@ -295,7 +299,8 @@ public class ArcadeManager extends MiniPlugin implements IRelation new MiscManager(this); _hologramManager = hologramManager; _idleManager = new IdleManager(this); - //new HolidayManager(this); + TitanGiveawayManager titanGiveaway = new TitanGiveawayManager(getPlugin(), clientManager, serverStatusManager); + new HolidayManager(this, titanGiveaway); // Game Addons new CompassAddon(plugin, this); @@ -1560,4 +1565,47 @@ public class ArcadeManager extends MiniPlugin implements IRelation { _requiredRank = rank; } -} \ No newline at end of file +<<<<<<< HEAD +} +======= + + @EventHandler(priority=EventPriority.LOWEST) + public void explosionCancel(EntityExplodeEvent event) + { + if (GetGame() == null || !GetGame().InProgress()) + { + event.blockList().clear(); + event.setCancelled(true); + } + } + + @EventHandler(priority = EventPriority.LOWEST) + public void explosionCancel(ExplosionEvent event) + { + if (GetGame() == null || !GetGame().InProgress()) + { + event.GetBlocks().clear(); + } + } + + @EventHandler + public void spawnDebug(PlayerCommandPreprocessEvent event) + { + if (event.getPlayer().isOp() && event.getMessage().contains("setmax")) + { + try + { + int i = Integer.parseInt(event.getMessage().split(" ")[1]); + + _serverConfig.MaxPlayers = i; + } + catch (Exception e) + { + + } + + event.setCancelled(true); + } + } +} +>>>>>>> 1aecc9505c702167aeca5fd3301762264ce46c5d diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/Build.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/Build.java index 92ead83b8..8fe75397a 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/Build.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/Build.java @@ -4,7 +4,42 @@ import java.util.AbstractMap; import java.util.ArrayList; import java.util.Map.Entry; +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.NautHashMap; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilEvent; +import mineplex.core.common.util.UtilEvent.ActionType; +import mineplex.core.common.util.UtilGear; +import mineplex.core.common.util.UtilInv; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTextBottom; +import mineplex.core.common.util.UtilTextMiddle; +import mineplex.core.common.util.UtilTime; +import mineplex.core.explosion.ExplosionEvent; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.recharge.Recharge; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; +import nautilus.game.arcade.ArcadeManager; +import nautilus.game.arcade.GameType; +import nautilus.game.arcade.events.GameStateChangeEvent; +import nautilus.game.arcade.events.PlayerPrepareTeleportEvent; +import nautilus.game.arcade.game.SoloGame; +import nautilus.game.arcade.game.games.build.gui.MobShop; +import nautilus.game.arcade.game.games.build.gui.OptionsShop; +import nautilus.game.arcade.game.games.build.kits.KitBuilder; +import nautilus.game.arcade.kit.Kit; + import org.bukkit.ChatColor; +import org.bukkit.Effect; import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Material; @@ -13,6 +48,7 @@ import org.bukkit.block.Block; import org.bukkit.entity.Boat; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; +import org.bukkit.entity.FallingBlock; import org.bukkit.entity.Hanging; import org.bukkit.entity.Item; import org.bukkit.entity.ItemFrame; @@ -41,6 +77,7 @@ import org.bukkit.event.block.BlockPistonRetractEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; +import org.bukkit.event.entity.EntityChangeBlockEvent; import org.bukkit.event.entity.EntityCombustEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent; @@ -63,42 +100,6 @@ import org.bukkit.event.vehicle.VehicleCreateEvent; import org.bukkit.event.vehicle.VehicleDamageEvent; import org.bukkit.inventory.ItemStack; -import mineplex.core.common.Rank; -import mineplex.core.common.util.C; -import mineplex.core.common.util.F; -import mineplex.core.common.util.NautHashMap; -import mineplex.core.common.util.UtilAction; -import mineplex.core.common.util.UtilAlg; -import mineplex.core.common.util.UtilEvent; -import mineplex.core.common.util.UtilEvent.ActionType; -import mineplex.core.common.util.UtilParticle.ParticleType; -import mineplex.core.common.util.UtilParticle.ViewDist; -import mineplex.core.common.util.UtilGear; -import mineplex.core.common.util.UtilInv; -import mineplex.core.common.util.UtilMath; -import mineplex.core.common.util.UtilParticle; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilTextBottom; -import mineplex.core.common.util.UtilTime; -import mineplex.core.common.util.UtilTextMiddle; -import mineplex.core.explosion.ExplosionEvent; -import mineplex.core.itemstack.ItemStackFactory; -import mineplex.core.recharge.Recharge; -import mineplex.core.updater.UpdateType; -import mineplex.core.updater.event.UpdateEvent; -import mineplex.minecraft.game.core.damage.CustomDamageEvent; -import nautilus.game.arcade.ArcadeManager; -import nautilus.game.arcade.GameType; -import nautilus.game.arcade.events.GameStateChangeEvent; -import nautilus.game.arcade.events.PlayerPrepareTeleportEvent; -import nautilus.game.arcade.game.SoloGame; -import nautilus.game.arcade.game.Game.GameState; -import nautilus.game.arcade.game.games.build.gui.MobShop; -import nautilus.game.arcade.game.games.build.gui.OptionsShop; -import nautilus.game.arcade.game.games.build.kits.KitBuilder; -import nautilus.game.arcade.kit.Kit; - public class Build extends SoloGame { private NautHashMap _data = new NautHashMap(); @@ -932,6 +933,30 @@ public class Build extends SoloGame return; } } + + @EventHandler + public void blockForm(EntityChangeBlockEvent event) + { + if (!(event.getEntity() instanceof FallingBlock)) + return; + + if (!event.getBlock().isLiquid()) + return; + + for (BuildData data : _data.values()) + { + if (!data.inBuildArea(event.getBlock())) + { + event.setCancelled(true); + + event.getEntity().remove(); + + //Effect + event.getBlock().getWorld().playEffect(event.getBlock().getLocation(), Effect.STEP_SOUND, ((FallingBlock) event.getEntity()).getBlockId()); + return; + } + } + } @EventHandler public void entityCombust(EntityCombustEvent event) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/BuildData.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/BuildData.java index a8306e7d1..61d8ac2a5 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/BuildData.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/BuildData.java @@ -308,6 +308,17 @@ public class BuildData if (mat == Material.LAVA_BUCKET) mat = Material.LAVA; else if (mat == Material.WATER_BUCKET) mat = Material.WATER; + //Set everything to air first to prevent the forming of obby. + if (mat == Material.LAVA || mat == Material.WATER) + { + int y = Math.min(CornerA.getBlockY(), CornerB.getBlockY()) - 1; + for (int x= Math.min(CornerA.getBlockX(), CornerB.getBlockX()) ; x <= Math.max(CornerA.getBlockX(), CornerB.getBlockX()) ; x++) + for (int z= Math.min(CornerA.getBlockZ(), CornerB.getBlockZ()) ; z <= Math.max(CornerA.getBlockZ(), CornerB.getBlockZ()) ; z++) + { + MapUtil.QuickChangeBlockAt(Player.getWorld(), x, y, z, Material.AIR, data); + } + } + int y = Math.min(CornerA.getBlockY(), CornerB.getBlockY()) - 1; for (int x= Math.min(CornerA.getBlockX(), CornerB.getBlockX()) ; x <= Math.max(CornerA.getBlockX(), CornerB.getBlockX()) ; x++) for (int z= Math.min(CornerA.getBlockZ(), CornerB.getBlockZ()) ; z <= Math.max(CornerA.getBlockZ(), CornerB.getBlockZ()) ; z++) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/gui/page/GroundPage.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/gui/page/GroundPage.java index 369b13f2c..454d84971 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/gui/page/GroundPage.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/gui/page/GroundPage.java @@ -32,7 +32,7 @@ public class GroundPage extends ShopPageBase new GroundData(Material.STAINED_CLAY, (byte) 0), new GroundData(Material.STAINED_CLAY, (byte) 15), new GroundData(Material.STAINED_CLAY, (byte) 4), new GroundData(Material.STAINED_CLAY, (byte) 3), new GroundData(Material.STAINED_CLAY, (byte) 5), new GroundData(Material.STAINED_CLAY, (byte) 6), - new GroundData(Material.QUARTZ_BLOCK), new GroundData(Material.ICE), new GroundData(Material.IRON_BLOCK), + new GroundData(Material.QUARTZ_BLOCK), new GroundData(Material.PACKED_ICE), new GroundData(Material.IRON_BLOCK), new GroundData(Material.GOLD_BLOCK), new GroundData(Material.DIAMOND_BLOCK)}; private Build _game; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/Evolution.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/Evolution.java index 0d34b7797..39ceda806 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/Evolution.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/Evolution.java @@ -25,7 +25,6 @@ import mineplex.core.recharge.Recharge; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.minecraft.game.core.combat.CombatComponent; -import mineplex.minecraft.game.core.combat.DeathMessageType; import mineplex.minecraft.game.core.combat.CombatManager.AttackReason; import mineplex.minecraft.game.core.combat.DeathMessageType; import mineplex.minecraft.game.core.combat.event.CombatDeathEvent; @@ -74,6 +73,7 @@ import org.bukkit.event.entity.EntityCombustEvent; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerItemHeldEvent; +import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.util.Vector; public class Evolution extends SoloGame @@ -223,6 +223,12 @@ public class Evolution extends SoloGame upgradeKit(event.GetPlayer(), false); } + @EventHandler + public void removeToken(PlayerQuitEvent event) + { + _tokens.remove(event.getPlayer().getName()); + } + // //Double Kit // @EventHandler(priority = EventPriority.MONITOR) // public void storeTokens(GameStateChangeEvent event) @@ -369,9 +375,12 @@ public class Evolution extends SoloGame } } - @EventHandler + @EventHandler(priority = EventPriority.MONITOR) public void onDamage(CustomDamageEvent event) { + if (event.IsCancelled()) + return; + if (!IsLive()) return; @@ -747,7 +756,11 @@ public class Evolution extends SoloGame for (int i = 0 ; i < tokens.size() ; i++) { - players.add(tokens.get(i).Player); + Player cur = tokens.get(i).Player; + if (!cur.isOnline()) + continue; + + players.add(cur); } //Award Gems diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/kits/KitHealth.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/kits/KitHealth.java index b9d93c102..71ae6fc03 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/kits/KitHealth.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/kits/KitHealth.java @@ -61,7 +61,7 @@ public class KitHealth extends Kit if (!Manager.GetGame().IsLive()) return; - Player killer = UtilPlayer.searchExact(event.GetLog().GetPlayer().GetName()); + Player killer = UtilPlayer.searchExact(event.GetLog().GetKiller().GetName()); if (killer == null || !killer.isOnline()) return; @@ -74,6 +74,6 @@ public class KitHealth extends Kit if (!HasKit(killer)) return; - killer.setHealth(killer.getMaxHealth()); + UtilPlayer.health(killer, 9999); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/KitChicken.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/KitChicken.java index 32587d144..82536ec47 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/KitChicken.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/KitChicken.java @@ -1,6 +1,7 @@ package nautilus.game.arcade.game.games.evolution.mobs; import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilGear; @@ -66,6 +67,9 @@ public class KitChicken extends EvoKit if (!UtilEvent.isAction(event, ActionType.R)) return; + if (UtilBlock.usable(event.getClickedBlock())) + return; + if (!Manager.GetGame().IsLive()) return; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkBounceEVO.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkBounceEVO.java index 063a22493..d200e76e9 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkBounceEVO.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkBounceEVO.java @@ -55,6 +55,9 @@ public class PerkBounceEVO extends Perk if (!UtilEvent.isAction(event, ActionType.R)) return; + + if (UtilBlock.usable(event.getClickedBlock())) + return; if (UtilBlock.usable(event.getClickedBlock())) return; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkDoubleJumpEVO.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkDoubleJumpEVO.java index 11978b075..bc457ab77 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkDoubleJumpEVO.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkDoubleJumpEVO.java @@ -65,6 +65,9 @@ public class PerkDoubleJumpEVO extends Perk if (player.getGameMode() == GameMode.CREATIVE) return; + + event.setCancelled(true); + player.setFlying(false); EvolutionAbilityUseEvent useEvent = new EvolutionAbilityUseEvent(player, GetName(), 0); Bukkit.getServer().getPluginManager().callEvent(useEvent); @@ -72,9 +75,6 @@ public class PerkDoubleJumpEVO extends Perk if (useEvent.isCancelled()) return; - event.setCancelled(true); - player.setFlying(false); - //Disable Flight player.setAllowFlight(false); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkFlamingSwordEVO.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkFlamingSwordEVO.java index 6e226b34e..8f38ff279 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkFlamingSwordEVO.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkFlamingSwordEVO.java @@ -5,6 +5,7 @@ import java.util.Map.Entry; import mineplex.core.common.util.C; import mineplex.core.common.util.NautHashMap; +import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilTime; @@ -49,6 +50,9 @@ public class PerkFlamingSwordEVO extends Perk if (!UtilEvent.isAction(event, ActionType.R)) return; + if (UtilBlock.usable(event.getClickedBlock())) + return; + if (!Manager.GetGame().IsLive()) return; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkSiesmicSlamEVO.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkSiesmicSlamEVO.java index 02435d894..48f655fd4 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkSiesmicSlamEVO.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkSiesmicSlamEVO.java @@ -71,6 +71,9 @@ public class PerkSiesmicSlamEVO extends Perk if (!UtilEvent.isAction(event, ActionType.R)) return; + if (UtilBlock.usable(event.getClickedBlock())) + return; + if (!UtilInv.IsItem(event.getItem(), Material.IRON_INGOT, (byte) 0)) return; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkSulphurBombEVO.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkSulphurBombEVO.java index a11c63035..b38629a80 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkSulphurBombEVO.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkSulphurBombEVO.java @@ -2,6 +2,7 @@ package nautilus.game.arcade.game.games.evolution.mobs.perks; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilEvent.ActionType; @@ -55,6 +56,9 @@ public class PerkSulphurBombEVO extends Perk implements IThrown if (!UtilEvent.isAction(event, ActionType.R)) return; + if (UtilBlock.usable(event.getClickedBlock())) + return; + if (!UtilInv.IsItem(event.getItem(), Material.SULPHUR, (byte) 0)) return; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkWebEVO.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkWebEVO.java index 7abe68567..03aeaa0d8 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkWebEVO.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/perks/PerkWebEVO.java @@ -1,6 +1,7 @@ package nautilus.game.arcade.game.games.evolution.mobs.perks; import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilInv; @@ -39,6 +40,9 @@ public class PerkWebEVO extends Perk implements IThrown if (!UtilEvent.isAction(event, ActionType.R)) return; + if (UtilBlock.usable(event.getClickedBlock())) + return; + if (!Manager.GetGame().IsLive()) return; @@ -109,7 +113,11 @@ public class PerkWebEVO extends Perk implements IThrown public void Web(ProjectileUser data) { Location loc = data.GetThrown().getLocation(); + data.GetThrown().remove(); + + if (loc.getBlock().getType() != Material.AIR) + return; Manager.GetBlockRestore().Add(loc.getBlock(), 30, (byte)0, 4000); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/trackers/NoAbilityTracker.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/trackers/NoAbilityTracker.java index 655eb6f79..68b0cee22 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/trackers/NoAbilityTracker.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/trackers/NoAbilityTracker.java @@ -29,6 +29,9 @@ public class NoAbilityTracker extends StatTracker @EventHandler(priority = EventPriority.MONITOR) public void onEvolutionAbility(EvolutionAbilityUseEvent event) { + if (event.isCancelled()) + return; + if (!getGame().IsLive()) return; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/Halloween.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/Halloween.java index 8d03a03a9..6c6bac0b8 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/Halloween.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/Halloween.java @@ -401,12 +401,20 @@ public class Halloween extends SoloGame { for (Player player : GetPlayers(false)) { - Manager.GetDonation().PurchaseUnknownSalesPackage(null, player.getName(), Manager.GetClients().Get(player).getAccountId(), "Pumpling", false, 0, true); Manager.GetGame().AddGems(player, 30, "Killing the Pumpkin King", false, false); Manager.GetGame().AddGems(player, 10, "Participation", false, false); } - SetCustomWinLine("You earned Pumpling Pet!"); + if (Manager.IsRewardItems()) + { + SetCustomWinLine("You earned the Decrepit Warhorse Mount!"); + + for (Player player : GetPlayers(false)) + { + Manager.GetDonation().PurchaseUnknownSalesPackage(null, player.getName(), Manager.GetClients().Get(player).getAccountId(), "Decrepit Warhorse", false, 0, true); + } + } + AnnounceEnd(this.GetTeamList().get(0)); SetState(GameState.End); @@ -430,6 +438,9 @@ public class Halloween extends SoloGame @EventHandler(priority = EventPriority.LOWEST) public void Explosion(EntityExplodeEvent event) { + if (!IsLive()) + return; + if (event.getEntity() instanceof Fireball) { event.blockList().clear(); @@ -513,7 +524,7 @@ public class Halloween extends SoloGame //Rounds Scoreboard.WriteBlank(); Scoreboard.Write(C.cYellow + "Wave"); - Scoreboard.Write((_wave+1) + " of 6"); + Scoreboard.Write(Math.min(6, _wave+1) + " of 6"); Scoreboard.WriteBlank(); Scoreboard.Write(C.cYellow + "Monsters"); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitFinn.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitFinn.java index 996312035..ad817be05 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitFinn.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitFinn.java @@ -1,13 +1,7 @@ package nautilus.game.arcade.game.games.halloween.kits; -import org.bukkit.Material; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.inventory.ItemStack; - import mineplex.core.common.util.C; +import mineplex.core.common.util.F; import mineplex.core.common.util.UtilMath; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.updater.UpdateType; @@ -16,7 +10,16 @@ import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.kit.AbbreviatedKit; import nautilus.game.arcade.kit.KitAvailability; import nautilus.game.arcade.kit.Perk; -import nautilus.game.arcade.kit.perks.*; +import nautilus.game.arcade.kit.perks.PerkBlizzardFinn; +import nautilus.game.arcade.kit.perks.PerkFlameSlam; +import nautilus.game.arcade.kit.perks.PerkFletcher; + +import org.bukkit.Material; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.inventory.ItemStack; public class KitFinn extends AbbreviatedKit { @@ -46,9 +49,9 @@ public class KitFinn extends AbbreviatedKit @Override public void GiveItems(Player player) { - player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.GOLD_AXE, (byte)0, 1, "Flaming Axe")); - player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_SWORD, (byte)0, 1, "Icy Sword")); - player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.BOW, (byte)0, 1, "Bow")); + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.GOLD_AXE, (byte)0, 1, F.item("Flaming Axe"))); + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_SWORD, (byte)0, 1, F.item("Icy Sword"))); + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.BOW, (byte)0, 1, F.item("Bow"))); player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.MUSHROOM_SOUP)); player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.MUSHROOM_SOUP)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitRobinHood.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitRobinHood.java index 2049db690..db2a8e825 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitRobinHood.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitRobinHood.java @@ -1,13 +1,7 @@ package nautilus.game.arcade.game.games.halloween.kits; -import org.bukkit.Material; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.inventory.ItemStack; - import mineplex.core.common.util.C; +import mineplex.core.common.util.F; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; import mineplex.core.itemstack.ItemStackFactory; @@ -17,7 +11,16 @@ import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.kit.AbbreviatedKit; import nautilus.game.arcade.kit.KitAvailability; import nautilus.game.arcade.kit.Perk; -import nautilus.game.arcade.kit.perks.*; +import nautilus.game.arcade.kit.perks.PerkBarrage; +import nautilus.game.arcade.kit.perks.PerkFletcher; +import nautilus.game.arcade.kit.perks.PerkQuickshotRobinHood; + +import org.bukkit.Material; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.inventory.ItemStack; public class KitRobinHood extends AbbreviatedKit { @@ -46,8 +49,8 @@ public class KitRobinHood extends AbbreviatedKit @Override public void GiveItems(Player player) { - player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_SWORD, (byte)0, 1, "Sword")); - player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.BOW, (byte)0, 1, "Bow")); + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_SWORD, (byte)0, 1, F.item("Sword"))); + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.BOW, (byte)0, 1, F.item("Bow"))); player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.MUSHROOM_SOUP)); player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.MUSHROOM_SOUP)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitThor.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitThor.java index 37d1cc62a..fcfddb3d1 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitThor.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitThor.java @@ -1,5 +1,20 @@ package nautilus.game.arcade.game.games.halloween.kits; +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilMath; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import nautilus.game.arcade.ArcadeManager; +import nautilus.game.arcade.kit.AbbreviatedKit; +import nautilus.game.arcade.kit.KitAvailability; +import nautilus.game.arcade.kit.Perk; +import nautilus.game.arcade.kit.perks.PerkFletcher; +import nautilus.game.arcade.kit.perks.PerkHammerThrow; +import nautilus.game.arcade.kit.perks.PerkKnockbackAttack; +import nautilus.game.arcade.kit.perks.PerkSeismicHammer; + import org.bukkit.Material; import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; @@ -7,19 +22,6 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.inventory.ItemStack; -import mineplex.core.common.util.C; -import mineplex.core.common.util.UtilMath; -import mineplex.core.itemstack.ItemStackFactory; -import mineplex.core.updater.UpdateType; -import mineplex.core.updater.event.UpdateEvent; -import mineplex.minecraft.game.core.damage.CustomDamageEvent; -import nautilus.game.arcade.ArcadeManager; -import nautilus.game.arcade.kit.AbbreviatedKit; -import nautilus.game.arcade.kit.KitAvailability; -import nautilus.game.arcade.kit.Perk; -import nautilus.game.arcade.kit.SmashKit; -import nautilus.game.arcade.kit.perks.*; - public class KitThor extends AbbreviatedKit { public KitThor(ArcadeManager manager) @@ -48,9 +50,9 @@ public class KitThor extends AbbreviatedKit @Override public void GiveItems(Player player) { - player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_AXE, (byte)0, 1, "Seismic Hammer")); - player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_AXE, (byte)0, 1, "Thor Hammer")); - player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.BOW, (byte)0, 1, "Bow")); + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_AXE, (byte)0, 1, F.item("Seismic Hammer"))); + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_AXE, (byte)0, 1, F.item("Thor Hammer"))); + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.BOW, (byte)0, 1, F.item("Bow"))); player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.MUSHROOM_SOUP)); player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.MUSHROOM_SOUP)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/forms/BlockForm.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/forms/BlockForm.java index a19aa9cd8..4d8570d9d 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/forms/BlockForm.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/forms/BlockForm.java @@ -84,7 +84,8 @@ public class BlockForm extends Form // Player > Chicken DisguiseChicken disguise = new DisguiseChicken(Player); disguise.setBaby(); - disguise.setInvisible(true); + +// disguise.setInvisible(true); disguise.setSoundDisguise(new DisguiseCat(Player)); Host.Manager.GetDisguise().disguise(disguise); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/kits/perks/PerkWaller.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/kits/perks/PerkWaller.java index 9f7802238..90550c8c4 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/kits/perks/PerkWaller.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/kits/perks/PerkWaller.java @@ -4,7 +4,9 @@ import java.util.HashSet; import java.util.Set; import mineplex.core.common.util.C; +import mineplex.core.common.util.F; import mineplex.core.common.util.UtilEvent; +import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilInv; import nautilus.game.arcade.game.games.lobbers.events.TNTThrowEvent; @@ -68,6 +70,12 @@ public class PerkWaller extends Perk if (!UtilInv.IsItem(event.getItem(), Material.STONE_SPADE, (byte) 0)) return; + if (event.getClickedBlock().isLiquid()) + { + UtilPlayer.message(event.getPlayer(), F.main("Game", "You may not place a wall in a liquid!")); + return; + } + UtilInv.remove(event.getPlayer(), Material.STONE_SPADE, (byte) 0, 1); _wallBlocks.addAll(buildWall(event.getClickedBlock().getLocation(), event.getPlayer().getLocation().getYaw())); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/StrikeItem.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/StrikeItem.java index 33848a071..aa16cc517 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/StrikeItem.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/StrikeItem.java @@ -107,6 +107,9 @@ public abstract class StrikeItem if (this instanceof Gun) { + //Fixes it so it stops reloading when dropped. Allows other players to reload when it's dropped if its ammo is 0. + ((Gun) this).forceCancelReload(player); + game.deregisterGun((Gun)this); if (!onlyDeregisterAndRemove) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/Grenade.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/Grenade.java index 1f4100f97..cd9093026 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/Grenade.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/Grenade.java @@ -17,6 +17,7 @@ import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilInv; import mineplex.core.common.util.UtilPlayer; import nautilus.game.arcade.game.games.minestrike.MineStrike; import nautilus.game.arcade.game.games.minestrike.items.StrikeItem; @@ -82,52 +83,47 @@ public abstract class Grenade extends StrikeItem } public boolean giveToPlayer(Player player, boolean setOwnerName) - { - int slot = 3; - + { int alreadyHas = 0; + int bestSlot = -1; - while (player.getInventory().getItem(slot) != null && player.getInventory().getItem(slot).getType() != Material.AIR && slot <= 6) + for (int i = 3 ; i < 7 ; i++) { - if (player.getInventory().getItem(slot).getType() == getSkin()) - { + if (UtilInv.IsItem(player.getInventory().getItem(i), getSkin(), (byte) -1)) alreadyHas++; - - if (alreadyHas >= _limit) - return false; - } - slot++; + if (alreadyHas >= _limit) + return false; + + if ((player.getInventory().getItem(i) == null || isStack(player.getInventory().getItem(i))) && bestSlot == -1) + bestSlot = i; } - if (slot > 6) + if (bestSlot == -1 || bestSlot > 6) return false; - giveToPlayer(player, slot, setOwnerName); - + giveToPlayer(player, bestSlot, setOwnerName); return true; } public boolean canGiveToPlayer(Player player) - { - int slot = 3; - + { int alreadyHas = 0; + int bestSlot = -1; - while (player.getInventory().getItem(slot) != null && player.getInventory().getItem(slot).getType() != Material.AIR && slot <= 6) + for (int i = 3 ; i < 7 ; i++) { - if (player.getInventory().getItem(slot).getType() == getSkin()) - { + if (UtilInv.IsItem(player.getInventory().getItem(i), getSkin(), (byte) -1)) alreadyHas++; - - if (alreadyHas >= _limit) - return false; - } - slot++; + if (alreadyHas >= _limit) + return false; + + if ((player.getInventory().getItem(i) == null || isStack(player.getInventory().getItem(i))) && bestSlot == -1) + bestSlot = i; } - if (slot > 6) + if (bestSlot == -1 || bestSlot > 6) return false; return true; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Gun.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Gun.java index dfd1863e8..a01c65619 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Gun.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Gun.java @@ -269,6 +269,12 @@ public class Gun extends StrikeItem _reloading = true; } + + public void forceCancelReload(Player player) + { + _reloading = false; + Recharge.Instance.recharge(player, getName() + " Reload"); + } @Override public void fixStackName() diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/paintball/Paintball.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/paintball/Paintball.java index 550bdb153..19ead99b7 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/paintball/Paintball.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/paintball/Paintball.java @@ -4,17 +4,44 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import mineplex.minecraft.game.core.condition.Condition.ConditionType; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; +import nautilus.game.arcade.ArcadeManager; +import nautilus.game.arcade.GameType; +import nautilus.game.arcade.events.GameStateChangeEvent; +import nautilus.game.arcade.events.PlayerPrepareTeleportEvent; +import nautilus.game.arcade.game.GameTeam; +import nautilus.game.arcade.game.GameTeam.PlayerState; +import nautilus.game.arcade.game.TeamGame; +import nautilus.game.arcade.game.games.paintball.kits.KitMachineGun; +import nautilus.game.arcade.game.games.paintball.kits.KitRifle; +import nautilus.game.arcade.game.games.paintball.kits.KitShotgun; +import nautilus.game.arcade.kit.Kit; +import nautilus.game.arcade.stats.KillFastStatTracker; +import nautilus.game.arcade.stats.LastStandStatTracker; +import nautilus.game.arcade.stats.MedicStatTracker; +import nautilus.game.arcade.stats.WinFastStatTracker; +import nautilus.game.arcade.stats.WinWithoutLosingTeammateStatTracker; + import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Color; import org.bukkit.Effect; -import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.block.Block; import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; import org.bukkit.entity.EnderPearl; +import org.bukkit.entity.HumanEntity; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Snowball; @@ -22,9 +49,11 @@ import org.bukkit.entity.ThrownPotion; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.HandlerList; +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityRegainHealthEvent; import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason; import org.bukkit.event.entity.ProjectileHitEvent; +import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.player.PlayerEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerTeleportEvent; @@ -34,31 +63,6 @@ import org.bukkit.inventory.meta.LeatherArmorMeta; import org.bukkit.potion.PotionEffectType; import org.bukkit.util.Vector; -import mineplex.core.common.util.F; -import mineplex.core.common.util.UtilAction; -import mineplex.core.common.util.UtilBlock; -import mineplex.core.common.util.UtilMath; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilServer; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; -import mineplex.core.updater.UpdateType; -import mineplex.core.updater.event.UpdateEvent; -import mineplex.minecraft.game.core.damage.CustomDamageEvent; -import nautilus.game.arcade.ArcadeManager; -import nautilus.game.arcade.GameType; -import nautilus.game.arcade.events.GameStateChangeEvent; -import nautilus.game.arcade.events.PlayerPrepareTeleportEvent; -import nautilus.game.arcade.game.GameTeam; -import nautilus.game.arcade.game.TeamGame; -import nautilus.game.arcade.game.GameTeam.PlayerState; -import nautilus.game.arcade.game.games.paintball.kits.*; -import nautilus.game.arcade.kit.Kit; -import nautilus.game.arcade.stats.KillFastStatTracker; -import nautilus.game.arcade.stats.LastStandStatTracker; -import nautilus.game.arcade.stats.MedicStatTracker; -import nautilus.game.arcade.stats.WinFastStatTracker; -import nautilus.game.arcade.stats.WinWithoutLosingTeammateStatTracker; - public class Paintball extends TeamGame { public static class ReviveEvent extends PlayerEvent @@ -137,7 +141,6 @@ public class Paintball extends TeamGame this.GetTeamList().get(1).SetName("Nether"); } - @EventHandler(priority = EventPriority.HIGHEST) public void ColorArmor(PlayerPrepareTeleportEvent event) { @@ -161,31 +164,44 @@ public class Paintball extends TeamGame @EventHandler public void Paint(ProjectileHitEvent event) { - if (event.getEntity() instanceof ThrownPotion) - return; + // Fixed projectile wool painting in waiting lobby. - byte color = 3; - if (event.getEntity() instanceof EnderPearl) - color = 14; - - Location loc = event.getEntity().getLocation().add(event.getEntity().getVelocity()); - - for (Block block : UtilBlock.getInRadius(loc, 1.5d).keySet()) + if (IsLive() || GetState() == GameState.End) { - if (block.getType() != Material.WOOL && block.getType() != Material.STAINED_CLAY) - continue; + if (event.getEntity() instanceof ThrownPotion) + return; + + byte color = 3; + if (event.getEntity() instanceof EnderPearl) + color = 14; + + Location loc = event.getEntity().getLocation().add(event.getEntity().getVelocity()); + + for (Block block : UtilBlock.getInRadius(loc, 1.5d).keySet()) + { + if (block.getType() != Material.WOOL && block.getType() != Material.STAINED_CLAY) + continue; + + block.setData(color); + } + + if (color == 3) loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 8); + else loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 10); - block.setData(color); } - - if (color == 3) loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 8); - else loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 10); } @EventHandler public void PlayerQuit(PlayerQuitEvent event) { - _doubles.remove(event.getPlayer()); + Player player = event.getPlayer(); + + if (_doubles.containsKey(player)) + { + PlayerCopy copy = _doubles.get(player); + copy.GetEntity().remove(); + _doubles.remove(player); + } } @EventHandler @@ -194,7 +210,9 @@ public class Paintball extends TeamGame if (event.GetDamageePlayer() == null) event.SetCancelled("Not Player"); - if (event.GetProjectile() == null) + // Fixed void damage being blocked from this check. + + if (event.GetProjectile() == null && event.GetCause() != DamageCause.VOID) event.SetCancelled("No Projectile"); } @@ -203,7 +221,7 @@ public class Paintball extends TeamGame { if (!IsLive()) return; - + if (event.GetProjectile() == null) return; @@ -211,23 +229,28 @@ public class Paintball extends TeamGame return; //Negate + event.AddMod("Negate", "Negate", -event.GetDamageInitial(), false); event.AddMod("Paintball", "Paintball", 2, true); event.AddKnockback("Paintball", 2); Player damagee = event.GetDamageePlayer(); - if (damagee == null) return; + if (damagee == null) + return; Player damager = event.GetDamagerPlayer(true); - if (damager == null) return; - + if (damager == null) + return; + GameTeam damageeTeam = GetTeam(damagee); - if (damageeTeam == null) return; + if (damageeTeam == null) + return; GameTeam damagerTeam = GetTeam(damager); - if (damagerTeam == null) return; - + if (damagerTeam == null) + return; + if (damagerTeam.equals(damageeTeam)) return; @@ -251,14 +274,30 @@ public class Paintball extends TeamGame PlayerOut(damagee); AddGems(damager, 2, "Kills", true, true); + + AddStat(damager, "Kills", 1, false, false); + AddStat(damagee, "Deaths", 1, false, false); } //Hit Sound Player player = event.GetDamagerPlayer(true); if (player != null) player.playSound(player.getLocation(), Sound.ORB_PICKUP, 1f, 3f); - } + } + @EventHandler + public void ArmorRemoveCancel(InventoryClickEvent event) + { + HumanEntity player = event.getWhoClicked(); + + // Fixed armor being taken off while spectating after being painted. + + if (!IsAlive(player)) + { + event.setCancelled(true); + } + } + public boolean Color(Player player, int amount) { //Get Non-Coloured diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skywars/Skywars.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skywars/Skywars.java index 6feb9d7d7..38552e39b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skywars/Skywars.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skywars/Skywars.java @@ -436,7 +436,7 @@ public abstract class Skywars extends Game _worldBlocks.remove(bestBlock); if (bestBlock.getType() != Material.AIR) { - if (Math.random() > 0.75D) + if (Math.random() > 0.95D) { bestBlock.getWorld().spawnFallingBlock( bestBlock.getLocation().add(0.5D, 0.5D, 0.5D), @@ -1256,7 +1256,7 @@ public abstract class Skywars extends Game Player shooter = (Player)event.getEntity().getShooter(); - if (GetKit(shooter) instanceof KitDestructor) + if (event.getEntity().hasMetadata("Destructor")) return; event.getEntity().setPassenger(shooter); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wizards/spells/SpellGust.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wizards/spells/SpellGust.java index 730274a97..1aad6027d 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wizards/spells/SpellGust.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wizards/spells/SpellGust.java @@ -1,10 +1,12 @@ package nautilus.game.arcade.game.games.wizards.spells; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; import mineplex.core.common.util.UtilPlayer; +import mineplex.minecraft.game.core.damage.DamageChange; import nautilus.game.arcade.game.games.wizards.Spell; import nautilus.game.arcade.game.games.wizards.spellinterfaces.SpellClick; @@ -57,6 +59,8 @@ public class SpellGust extends Spell implements SpellClick Wizards.getArcadeManager().GetCondition().Factory().Falling("Gust", target, player, 40, false, true); + Wizards.Manager.GetDamage().GetCombatManager().Get(target).Attacked(player.getName(), 0, player, "Gust", new ArrayList()); + target.setVelocity(vec); target.getWorld().playSound(target.getLocation(), Sound.BAT_TAKEOFF, 1, 0.7F); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkDestructor.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkDestructor.java index 96311faab..26c589be3 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkDestructor.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkDestructor.java @@ -1,26 +1,44 @@ package nautilus.game.arcade.kit.perks; -import mineplex.core.common.util.*; +import java.util.HashMap; +import java.util.HashSet; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilEvent; +import mineplex.core.common.util.UtilEvent.ActionType; +import mineplex.core.common.util.UtilInv; +import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; -import mineplex.core.itemstack.*; -import mineplex.core.recharge.*; -import mineplex.core.updater.*; -import mineplex.core.updater.event.*; -import mineplex.minecraft.game.core.damage.CustomDamageEvent; -import nautilus.game.arcade.kit.*; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTime; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.recharge.Recharge; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import nautilus.game.arcade.kit.Perk; import nautilus.game.arcade.kit.perks.event.PerkDestructorBlockEvent; -import org.bukkit.*; -import org.bukkit.block.*; -import org.bukkit.entity.*; -import org.bukkit.event.*; -import org.bukkit.event.entity.*; -import org.bukkit.event.inventory.*; -import org.bukkit.event.player.*; -import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; - -import java.util.*; +import org.bukkit.Effect; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.entity.EnderPearl; +import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.entity.ProjectileHitEvent; +import org.bukkit.event.entity.ProjectileLaunchEvent; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.player.PlayerDropItemEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.metadata.FixedMetadataValue; public class PerkDestructor extends Perk { @@ -31,6 +49,7 @@ public class PerkDestructor extends Perk private long _fallTime; + private HashSet _preparing = new HashSet(); private HashMap _blocks = new HashMap(); public PerkDestructor(int spawnRate, int max, long fallTime, boolean enabled) @@ -74,7 +93,7 @@ public class PerkDestructor extends Perk if (!Recharge.Instance.use(cur, GetName(), _spawnRate * 1000, false, false)) continue; - if (UtilInv.contains(cur, Material.ENDER_PEARL, (byte) 0, _max)) + if (UtilInv.contains(cur, "Seismic Charge", Material.ENDER_PEARL, (byte) 0, _max)) continue; //Add @@ -119,7 +138,25 @@ public class PerkDestructor extends Perk UtilInv.DisallowMovementOf(event, "Seismic Charge", Material.ENDER_PEARL, (byte) 0, true); } - @EventHandler + @EventHandler(priority = EventPriority.MONITOR) + public void preThrowItem(PlayerInteractEvent event) + { + if (!UtilEvent.isAction(event, ActionType.R)) + return; + + if (!Manager.GetGame().IsLive()) + return; + + if (!Manager.IsAlive(event.getPlayer())) + return; + + if (!UtilInv.IsItem(event.getItem(), "Seismic Charge", Material.ENDER_PEARL, (byte) 0)) + return; + + _preparing.add(event.getPlayer().getName()); + } + + @EventHandler(priority = EventPriority.LOW) public void throwItem(ProjectileLaunchEvent event) { if (Manager.GetGame() == null || !Manager.GetGame().IsLive()) @@ -128,47 +165,112 @@ public class PerkDestructor extends Perk if (!(event.getEntity() instanceof EnderPearl)) return; - event.getEntity().setVelocity(event.getEntity().getVelocity().multiply(0.7)); + if (!(event.getEntity().getShooter() instanceof Player)) + return; + + Player player = (Player) event.getEntity().getShooter(); + + if (!Manager.IsAlive(player)) + return; + + if (_preparing.contains(player.getName())) + { + _preparing.remove(player.getName()); + event.getEntity().setMetadata("Destructor", new FixedMetadataValue(Manager.getPlugin(), 1)); + + event.getEntity().setVelocity(event.getEntity().getVelocity().multiply(0.7)); + } } - + @EventHandler - public void collide(PlayerTeleportEvent event) + public void collide(ProjectileHitEvent event) { - if (Manager.GetGame() == null || !Manager.GetGame().IsLive()) + if (!Manager.GetGame().IsLive()) + return; + + Projectile proj = event.getEntity(); + + if (!(proj.getShooter() instanceof Player)) + return; + + Player player = (Player) proj.getShooter(); + + if (!Manager.IsAlive(player)) + return; + + if (!Kit.HasKit(player)) return; - if (event.getCause() != TeleportCause.ENDER_PEARL) + if (!proj.hasMetadata("Destructor")) return; - if (!Kit.HasKit(event.getPlayer())) - return; - - for (Block block : UtilBlock.getInRadius(event.getTo(), 4).keySet()) + for (Block block : UtilBlock.getInRadius(proj.getLocation(), 4).keySet()) { if (block.getType() == Material.AIR || block.getType() == Material.BEDROCK || block.isLiquid()) continue; //Event - PerkDestructorBlockEvent blockEvent = new PerkDestructorBlockEvent(event.getPlayer(), block); + PerkDestructorBlockEvent blockEvent = new PerkDestructorBlockEvent(player, block); UtilServer.getServer().getPluginManager().callEvent(blockEvent); if (!blockEvent.isCancelled()) { _blocks.put(block, System.currentTimeMillis()); - + block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); } } - - UtilParticle.PlayParticle(ParticleType.LARGE_EXPLODE, event.getTo(), 0f, 0f, 0f, 0f, 1, - ViewDist.MAX, UtilServer.getPlayers()); - - event.getTo().getWorld().playSound(event.getTo(), Sound.EXPLODE, 1f, 0.5f); - event.getTo().getWorld().playSound(event.getTo(), Sound.FIREWORK_TWINKLE, 2f, 0.5f); - - event.setCancelled(true); + + UtilParticle.PlayParticle(ParticleType.LARGE_EXPLODE, proj.getLocation(), 0f, 0f, 0f, 0f, 1, ViewDist.MAX, UtilServer.getPlayers()); + + proj.getWorld().playSound(proj.getLocation(), Sound.EXPLODE, 1f, 0.5f); + proj.getWorld().playSound(proj.getLocation(), Sound.FIREWORK_TWINKLE, 2f, 0.5f); } + +// @EventHandler +// public void collide(PlayerTeleportEvent event) +// { +// if (Manager.GetGame() == null || !Manager.GetGame().IsLive()) +// return; +// +// if (event.getCause() != TeleportCause.ENDER_PEARL) +// return; +// +// if (!Manager.IsAlive(event.getPlayer())) +// return; +// +// if (!Kit.HasKit(event.getPlayer())) +// return; +// +// +// +// for (Block block : UtilBlock.getInRadius(event.getTo(), 4).keySet()) +// { +// if (block.getType() == Material.AIR || block.getType() == Material.BEDROCK || block.isLiquid()) +// continue; +// +// //Event +// PerkDestructorBlockEvent blockEvent = new PerkDestructorBlockEvent(event.getPlayer(), block); +// UtilServer.getServer().getPluginManager().callEvent(blockEvent); +// +// if (!blockEvent.isCancelled()) +// { +// _blocks.put(block, System.currentTimeMillis()); +// +// block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); +// } +// } +// +// UtilParticle.PlayParticle(ParticleType.LARGE_EXPLODE, event.getTo(), 0f, 0f, 0f, 0f, 1, +// ViewDist.MAX, UtilServer.getPlayers()); +// +// event.getTo().getWorld().playSound(event.getTo(), Sound.EXPLODE, 1f, 0.5f); +// event.getTo().getWorld().playSound(event.getTo(), Sound.FIREWORK_TWINKLE, 2f, 0.5f); +// +// event.setCancelled(true); +// } + @SuppressWarnings("deprecation") @EventHandler public void fall(UpdateEvent event) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFlameSlam.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFlameSlam.java index 9db75a2b2..e81e54e69 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFlameSlam.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFlameSlam.java @@ -1,18 +1,6 @@ package nautilus.game.arcade.kit.perks; import java.util.HashMap; -import java.util.Iterator; - -import org.bukkit.GameMode; -import org.bukkit.Sound; -import org.bukkit.entity.Entity; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.block.Action; -import org.bukkit.event.entity.EntityDamageEvent.DamageCause; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.util.Vector; import mineplex.core.common.util.C; import mineplex.core.common.util.F; @@ -22,17 +10,27 @@ import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTime; -import mineplex.core.common.util.UtilParticle.ParticleType; -import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.recharge.Recharge; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import nautilus.game.arcade.kit.Perk; +import org.bukkit.Sound; +import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.block.Action; +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.util.Vector; + public class PerkFlameSlam extends Perk { private HashMap _live = new HashMap(); @@ -93,10 +91,11 @@ public class PerkFlameSlam extends Perk return; //Collide - Iterator liveIterator = _live.keySet().iterator(); - while (liveIterator.hasNext()) + HashMap copy = new HashMap(); + copy.putAll(_live); + + for (Player player : copy.keySet()) { - Player player = liveIterator.next(); Vector vel = player.getLocation().getDirection(); vel.setY(0); UtilAlg.Normalize(vel); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkHorsePet.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkHorsePet.java index e6717a68f..0ad07da03 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkHorsePet.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkHorsePet.java @@ -204,6 +204,13 @@ public class PerkHorsePet extends Perk { UtilPlayer.message(player, F.main("Mount", "This is not your Horse!")); event.setCancelled(true); + return; + } + + if (!Manager.GetGame().IsLive()) + { + event.setCancelled(true); + return; } } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameFlagManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameFlagManager.java index 97ebf6af2..8d4ba746e 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameFlagManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameFlagManager.java @@ -849,11 +849,16 @@ public class GameFlagManager implements Listener if (game.HungerSet != -1) for (Player player : game.GetPlayers(true)) + { player.setFoodLevel(game.HungerSet); + player.setSaturation(1F); + } if (game.HealthSet != -1) for (Player player : game.GetPlayers(true)) + { player.setHealth(game.HealthSet); + } } @EventHandler(priority = EventPriority.LOWEST) @@ -947,7 +952,7 @@ public class GameFlagManager implements Listener Game game = Manager.GetGame(); if (game == null) return; - if (!game.IsLive()) + if (!(game.IsLive() || game.GetState() == GameState.Prepare)) return; if (!game.TeleportsDisqualify) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameGemManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameGemManager.java index eb0edb352..1c5d2233f 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameGemManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameGemManager.java @@ -195,10 +195,13 @@ public class GameGemManager implements Listener double hoursOnline = timeOnline/3600000d; - if (hoursOnline > 5) - hoursOnline = 5; - - total += (int)(earned * (hoursOnline * 0.2)); + if (hoursOnline < 24) + { + if (hoursOnline > 5) + hoursOnline = 5; + + total += (int)(earned * (hoursOnline * 0.2)); + } } if (DoubleGem && game.GemDoubleEnabled) @@ -313,17 +316,20 @@ public class GameGemManager implements Listener double hoursOnline = timeOnline/3600000d; - if (hoursOnline > 5) - hoursOnline = 5; - - int extraGems = (int)(earnedGems * (hoursOnline * 0.2)); - - if (extraGems > 0) + if (hoursOnline < 24) { - UtilPlayer.message(player, F.elem(C.cGreen + "+" + extraGems + " Gems") + " for " + - F.elem("Online for " + UtilTime.MakeStr(timeOnline) + C.cGreen + " +" + (int)(hoursOnline * 20) + "%")); - - totalGems += extraGems; + if (hoursOnline > 5) + hoursOnline = 5; + + int extraGems = (int)(earnedGems * (hoursOnline * 0.2)); + + if (extraGems > 0) + { + UtilPlayer.message(player, F.elem(C.cGreen + "+" + extraGems + " Gems") + " for " + + F.elem("Online for " + UtilTime.MakeStr(timeOnline) + C.cGreen + " +" + (int)(hoursOnline * 20) + "%")); + + totalGems += extraGems; + } } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLobbyManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLobbyManager.java index d144e7ba9..b21d2ba89 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLobbyManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLobbyManager.java @@ -7,6 +7,46 @@ import java.util.HashMap; import java.util.List; import java.util.Map.Entry; +import mineplex.core.account.CoreClient; +import mineplex.core.common.Rank; +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.MapUtil; +import mineplex.core.common.util.NautHashMap; +import mineplex.core.common.util.UtilBlockText; +import mineplex.core.common.util.UtilBlockText.TextAlign; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilFirework; +import mineplex.core.common.util.UtilInv; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTime; +import mineplex.core.common.util.UtilWorld; +import mineplex.core.cosmetic.event.ActivateGemBoosterEvent; +import mineplex.core.donation.Donor; +import mineplex.core.event.CustomTagEvent; +import mineplex.core.explosion.ExplosionEvent; +import mineplex.core.packethandler.IPacketHandler; +import mineplex.core.packethandler.PacketHandler; +import mineplex.core.packethandler.PacketInfo; +import mineplex.core.packethandler.PacketVerifier; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; +import nautilus.game.arcade.ArcadeManager; +import nautilus.game.arcade.GameType; +import nautilus.game.arcade.events.GameStateChangeEvent; +import nautilus.game.arcade.game.Game; +import nautilus.game.arcade.game.Game.GameState; +import nautilus.game.arcade.game.GameTeam; +import nautilus.game.arcade.game.games.uhc.UHC; +import nautilus.game.arcade.kit.Kit; +import nautilus.game.arcade.kit.KitAvailability; +import nautilus.game.arcade.kit.KitSorter; +import net.minecraft.server.v1_7_R4.Packet; +import net.minecraft.server.v1_7_R4.PacketPlayOutEntityMetadata; +import net.minecraft.server.v1_7_R4.WatchableObject; + import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Color; @@ -37,45 +77,6 @@ import org.bukkit.scoreboard.DisplaySlot; import org.bukkit.scoreboard.Objective; import org.bukkit.scoreboard.Scoreboard; -import net.minecraft.server.v1_7_R4.Packet; -import net.minecraft.server.v1_7_R4.PacketPlayOutEntityMetadata; -import net.minecraft.server.v1_7_R4.WatchableObject; -import mineplex.core.account.CoreClient; -import mineplex.core.common.Rank; -import mineplex.core.common.util.C; -import mineplex.core.common.util.F; -import mineplex.core.common.util.MapUtil; -import mineplex.core.common.util.NautHashMap; -import mineplex.core.common.util.UtilBlockText; -import mineplex.core.common.util.UtilBlockText.TextAlign; -import mineplex.core.common.util.UtilEnt; -import mineplex.core.common.util.UtilFirework; -import mineplex.core.common.util.UtilInv; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilTime; -import mineplex.core.common.util.UtilWorld; -import mineplex.core.cosmetic.event.ActivateGemBoosterEvent; -import mineplex.core.donation.Donor; -import mineplex.core.event.CustomTagEvent; -import mineplex.core.packethandler.IPacketHandler; -import mineplex.core.packethandler.PacketHandler; -import mineplex.core.packethandler.PacketInfo; -import mineplex.core.packethandler.PacketVerifier; -import mineplex.core.updater.UpdateType; -import mineplex.core.updater.event.UpdateEvent; -import mineplex.minecraft.game.core.damage.CustomDamageEvent; -import nautilus.game.arcade.ArcadeManager; -import nautilus.game.arcade.GameType; -import nautilus.game.arcade.events.GameStateChangeEvent; -import nautilus.game.arcade.game.Game; -import nautilus.game.arcade.game.Game.GameState; -import nautilus.game.arcade.game.GameTeam; -import nautilus.game.arcade.game.games.uhc.UHC; -import nautilus.game.arcade.kit.Kit; -import nautilus.game.arcade.kit.KitAvailability; -import nautilus.game.arcade.kit.KitSorter; - public class GameLobbyManager implements Listener, IPacketHandler { public ArcadeManager Manager; @@ -1289,18 +1290,6 @@ public class GameLobbyManager implements Listener, IPacketHandler Manager.GetGame().AddGemBooster(event.getPlayer()); } - @EventHandler(priority = EventPriority.LOWEST) - public void explodeBlockBreakFix(EntityExplodeEvent event) - { - if (Manager.GetGame() == null) - return; - - if (Manager.GetGame().GetState() == GameState.Live) - return; - - event.blockList().clear(); - } - @EventHandler(priority = EventPriority.LOWEST) public void velocityEventCancel(PlayerVelocityEvent event) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameSpectatorManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameSpectatorManager.java index 544951294..f82d75403 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameSpectatorManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameSpectatorManager.java @@ -1,6 +1,7 @@ package nautilus.game.arcade.managers; import nautilus.game.arcade.ArcadeManager; +import nautilus.game.arcade.game.Game.GameState; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -38,9 +39,17 @@ public class GameSpectatorManager implements Listener { if (Manager.GetGame() == null) return; - + Player player = event.getPlayer(); + if (Manager.GetGame().GetState() == GameState.Recruit) + { + if (Manager.getCosmeticManager().getMountManager().isMount(event.getRightClicked())) + { + return; + } + } + if (!Manager.GetGame().IsAlive(player)) event.setCancelled(true); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/HolidayManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/HolidayManager.java index a53b9aa5e..d26c941c9 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/HolidayManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/HolidayManager.java @@ -15,6 +15,8 @@ import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilTime; import mineplex.core.common.util.UtilWorld; import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.titangiveaway.TitanGiveawayAnimation; +import mineplex.core.titangiveaway.TitanGiveawayManager; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import nautilus.game.arcade.ArcadeManager; @@ -26,6 +28,7 @@ import net.minecraft.server.v1_7_R4.TileEntity; import net.minecraft.server.v1_7_R4.TileEntityEnderChest; import org.bukkit.Effect; +import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.block.Block; @@ -38,6 +41,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockDamageEvent; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.inventory.ItemStack; @@ -78,21 +82,25 @@ public class HolidayManager implements Listener } } - private HolidayType type = HolidayType.Easter; + private HolidayType type = HolidayType.Halloween; + private String _statName = "Halloween Pumpkins 2015"; ArcadeManager Manager; + private TitanGiveawayManager _titanManager; public HashSet _active = new HashSet(); private HashSet _eggs = new HashSet(); private HashSet _coins = new HashSet(); + private HashSet _gems = new HashSet(); public long _lastSpawn = System.currentTimeMillis(); - public HolidayManager(ArcadeManager manager) + public HolidayManager(ArcadeManager manager, TitanGiveawayManager titanManager) { Manager = manager; + _titanManager = titanManager; Manager.getPluginManager().registerEvents(this, Manager.getPlugin()); } @@ -122,7 +130,7 @@ public class HolidayManager implements Listener block.getType() != Material.JACK_O_LANTERN && block.getType() != Material.CHEST) { - specialBlockBreak(block); + specialBlockBreak(null, block); blockIterator.remove(); continue; } @@ -147,7 +155,7 @@ public class HolidayManager implements Listener { UtilParticle.PlayParticle(ParticleType.HAPPY_VILLAGER, block.getLocation().add(0.5, 0.2, 0.5), 0.3f, 0.2f, 0.3f, 0, 1, ViewDist.LONG, UtilServer.getPlayers()); - + if (Math.random() > 0.90) { Item egg = block.getWorld().dropItem(block.getLocation().add(0.5, 0.8, 0.5), @@ -158,7 +166,7 @@ public class HolidayManager implements Listener block.getWorld().playSound(block.getLocation(), Sound.CHICKEN_EGG_POP, 0.25f + (float)Math.random() * 0.75f, 0.75f + (float)Math.random() * 0.5f); } - + if (Math.random() > 0.95) { sendChestPackets(block); @@ -176,6 +184,9 @@ public class HolidayManager implements Listener if (Manager.GetGame() == null) return; + if (Manager.GetGameHostManager().isPrivateServer()) + return; + Game game = Manager.GetGame(); int requirement = (int)((double)Manager.GetPlayerFull() * 0.5d); @@ -234,7 +245,7 @@ public class HolidayManager implements Listener for (Player other : UtilServer.getPlayers()) ((CraftPlayer) other).getHandle().playerConnection.sendPacket(packet); } - + private Block findSpecialBlockLocation(Game game) { Block block = null; @@ -273,50 +284,36 @@ public class HolidayManager implements Listener } return null; - } +} - @EventHandler - public void specialBlockInteract(PlayerInteractEvent event) - { - if (UtilPlayer.isSpectator(event.getPlayer())) - return; - - if (!UtilEvent.isAction(event, ActionType.R_BLOCK)) - return; - - if (event.getClickedBlock() == null) - return; - - if (event.getClickedBlock().getType() != Material.CHEST) - return; - - if (!_active.contains(event.getClickedBlock())) - return; - - event.setCancelled(true); - - specialBlockBreak(event.getClickedBlock()); - } - @EventHandler public void specialBlockDamage(BlockDamageEvent event) { if (UtilPlayer.isSpectator(event.getPlayer())) return; + if (Manager.GetGame() != null && !Manager.GetGame().IsAlive(event.getPlayer())) + return; + if (!_active.contains(event.getBlock())) return; - - specialBlockBreak(event.getBlock()); + + specialBlockBreak(event.getPlayer(), event.getBlock()); } - private void specialBlockBreak(Block block) + private void specialBlockBreak(Player player, final Block block) { block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, type.getBlockType()); block.setType(Material.AIR); + if (player != null && Manager.GetGame() != null) + { + Manager.GetGame().AddStat(player, _statName, 1, false, true); + System.out.println("Recording Pumpkin Break for " + player.getName()); + } + //Coins - for (int i=0 ; i < 4 + Math.random()*16 ; i++) + for (int i=0 ; i < 4 + Math.random()*8 ; i++) { Item coin = block.getWorld().dropItem(block.getLocation().add(0.5, 1, 0.5), ItemStackFactory.Instance.CreateStack(175, (byte)0, 1, UtilMath.r(999999) + "Coin")); @@ -333,6 +330,38 @@ public class HolidayManager implements Listener _coins.add(coin); } + //Gems + for (int i=0 ; i < 4 + Math.random()*8 ; i++) + { + Item gem = block.getWorld().dropItem(block.getLocation().add(0.5, 1, 0.5), + ItemStackFactory.Instance.CreateStack(Material.EMERALD, (byte)0, 1, UtilMath.r(999999) + "Gem")); + + Vector vel = new Vector( + (Math.random() - 0.5) * 0.5, + 0.1 + Math.random() * 0.3, + (Math.random() - 0.5) * 0.5); + + gem.setVelocity(vel); + + gem.setPickupDelay(20); + + _gems.add(gem); + } + + // Titan Giveaway + if (player != null) + { + _titanManager.openPumpkin(player, new Runnable() + { + @Override + public void run() + { + Location location = block.getLocation().add(0.5, 0.5, 0.5); + new TitanGiveawayAnimation(_titanManager, location, 3000L); + } + }); + } + //Effect block.getWorld().playSound(block.getLocation(), type.getBlockSound(), 1f, 1f); } @@ -342,13 +371,22 @@ public class HolidayManager implements Listener { if (UtilPlayer.isSpectator(event.getPlayer())) return; - + if (_coins.contains(event.getItem())) { event.setCancelled(true); event.getItem().remove(); - Manager.GetDonation().RewardCoins(null, type + " Coins", event.getPlayer().getName(), Manager.GetClients().Get(event.getPlayer()).getAccountId(), 4 * event.getItem().getItemStack().getAmount()); + Manager.GetDonation().RewardCoinsLater(type + " Coins", event.getPlayer(), 4 * event.getItem().getItemStack().getAmount()); + + event.getPlayer().getWorld().playSound(event.getPlayer().getLocation(), Sound.ORB_PICKUP, 1f, 2f); + } + else if (_gems.contains(event.getItem())) + { + event.setCancelled(true); + event.getItem().remove(); + + Manager.GetDonation().RewardGemsLater(type + " Gems", event.getPlayer(), 4 * event.getItem().getItemStack().getAmount()); event.getPlayer().getWorld().playSound(event.getPlayer().getLocation(), Sound.ORB_PICKUP, 1f, 2f); } @@ -358,7 +396,7 @@ public class HolidayManager implements Listener event.setCancelled(true); } } - + @EventHandler public void itemClean(UpdateEvent event) { @@ -378,6 +416,19 @@ public class HolidayManager implements Listener } } + Iterator gemIterator = _gems.iterator(); + + while (gemIterator.hasNext()) + { + Item gem = gemIterator.next(); + + if (!gem.isValid() || gem.getTicksLived() > 1200) + { + gem.remove(); + gemIterator.remove(); + } + } + Iterator eggIterator = _eggs.iterator(); while (eggIterator.hasNext()) @@ -391,4 +442,13 @@ public class HolidayManager implements Listener } } } + + @EventHandler + public void spawnDebug(PlayerCommandPreprocessEvent event) + { + if (event.getPlayer().isOp() && event.getPlayer().getName().equals("Chiss") && event.getMessage().contains("pumpkin")) + { + spawnSpecialBlock(event.getPlayer().getLocation().getBlock()); + } + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/titangiveaway/TitanGiveawayRepository.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/titangiveaway/TitanGiveawayRepository.java new file mode 100644 index 000000000..0ace10a33 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/titangiveaway/TitanGiveawayRepository.java @@ -0,0 +1,49 @@ +package nautilus.game.arcade.managers.titangiveaway; + +import java.sql.CallableStatement; +import java.sql.Connection; +import java.sql.Types; + +import mineplex.core.database.DBPool; +import mineplex.core.database.RepositoryBase; + +import org.bukkit.plugin.java.JavaPlugin; + +public class TitanGiveawayRepository extends RepositoryBase +{ + private int _titanGiveawayCount; + + public TitanGiveawayRepository(JavaPlugin plugin) + { + super(plugin, DBPool.ACCOUNT); + _titanGiveawayCount = 0; + } + + @Override + protected void initialize() + { + + } + + @Override + protected void update() + { + + } + + public boolean canGiveaway() + { + try (Connection connection = getConnection(); + CallableStatement callableStatement = connection.prepareCall("{call check_titanGiveaway(?)}")) + { + callableStatement.registerOutParameter(1, Types.BOOLEAN); + + + } + catch (Exception e) + { + } + + return false; + } +}