Merge branch 'monster-maze' of ssh://184.154.0.242:7999/min/Mineplex into monster-maze

This commit is contained in:
Cheese 2015-10-16 12:51:25 +11:00
commit 24089000f0
163 changed files with 4234 additions and 1249 deletions

1
.gitignore vendored
View File

@ -17,6 +17,7 @@ update
Reference
/Plugins/.idea/workspace.xml
/Plugins/.idea/tasks.xml
/Plugins/out
BungeeCord
/Plugins/Mineplex.Bungee.Mineplexer/*.gitignore

BIN
Art/Halloween Horror.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 KiB

BIN
Art/Pumpkin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 692 KiB

BIN
Art/Spooky Sale.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

View File

@ -19,6 +19,7 @@
<element id="module-output" name="Mineplex.Database" />
<element id="extracted-dir" path="$PROJECT_DIR$/Libraries/jooq-3.5.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/Libraries/commons-dbcp2-2.0.1.jar" path-in-jar="/" />
<element id="module-output" name="Mineplex.PlayerCache" />
</root>
</artifact>
</component>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" hash="1293212710">
<data-source source="LOCAL" name="Mineplex" uuid="14dfc55d-5343-47c4-ab24-76a055b8059e">
<driver-ref>mysql</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.mysql.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://db.mineplex.com:3306</jdbc-url>
<driver-properties>
<property name="zeroDateTimeBehavior" value="convertToNull" />
<property name="tinyInt1isBit" value="false" />
<property name="characterEncoding" value="utf8" />
<property name="characterSetResults" value="utf8" />
<property name="yearIsDateType" value="false" />
</driver-properties>
<libraries />
</data-source>
</component>
</project>

View File

@ -11,7 +11,6 @@
<module fileurl="file://$PROJECT_DIR$/Mineplex.Game.Clans/Mineplex.Game.Clans.iml" filepath="$PROJECT_DIR$/Mineplex.Game.Clans/Mineplex.Game.Clans.iml" group="Game" />
<module fileurl="file://$PROJECT_DIR$/Mineplex.Hub/Mineplex.Hub.iml" filepath="$PROJECT_DIR$/Mineplex.Hub/Mineplex.Hub.iml" />
<module fileurl="file://$PROJECT_DIR$/Mineplex.MapParser/Mineplex.MapParser.iml" filepath="$PROJECT_DIR$/Mineplex.MapParser/Mineplex.MapParser.iml" />
<module fileurl="file://$PROJECT_DIR$/Mineplex.Minecraft.BungeeSigns/Mineplex.Minecraft.BungeeSigns.iml" filepath="$PROJECT_DIR$/Mineplex.Minecraft.BungeeSigns/Mineplex.Minecraft.BungeeSigns.iml" group="Bungee" />
<module fileurl="file://$PROJECT_DIR$/Mineplex.Minecraft.Game.ClassCombat/Mineplex.Minecraft.Game.ClassCombat.iml" filepath="$PROJECT_DIR$/Mineplex.Minecraft.Game.ClassCombat/Mineplex.Minecraft.Game.ClassCombat.iml" group="Game" />
<module fileurl="file://$PROJECT_DIR$/Mineplex.Minecraft.Game.Core/Mineplex.Minecraft.Game.Core.iml" filepath="$PROJECT_DIR$/Mineplex.Minecraft.Game.Core/Mineplex.Minecraft.Game.Core.iml" group="Game" />
<module fileurl="file://$PROJECT_DIR$/Mineplex.PlayerCache/Mineplex.PlayerCache.iml" filepath="$PROJECT_DIR$/Mineplex.PlayerCache/Mineplex.PlayerCache.iml" />

Binary file not shown.

View File

@ -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;
}
}
}

View File

@ -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");
}
}

View File

@ -24,7 +24,6 @@ public class PlayerCount implements Listener, Runnable
{
private DataRepository<BungeeServer> _repository;
private DataRepository<BungeeServer> _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();

View File

@ -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();
}
/*

View File

@ -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),

View File

@ -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<String> key;
private final List<Argument<Object>> 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<Object> argument)
{
IntlString result = new IntlString(getKey().getArgument(), getKey().getStyle());
result.arguments.addAll(getArguments());
result.arguments.add(argument);
return result;
}
public Argument<String> getKey()
{
return key;
}
public List<Argument<Object>> 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<T>
{
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();
}
}
}

View File

@ -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<Locale, ResourceBundle> _localeResourceBundles = Collections.synchronizedMap(new HashMap<Locale, ResourceBundle>());
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);
}
}

View File

@ -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;

View File

@ -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<ItemContainer> matchItem(Player caller, String items, boolean inform)
{
LinkedList<ItemContainer> matchList = new LinkedList<ItemContainer>();
@ -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;
}
}

View File

@ -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);
}
}

View File

@ -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,

View File

@ -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);
}
}
}
}

View File

@ -60,7 +60,7 @@ public class UpdateRank extends CommandBase<CoreClientManager>
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))
{

View File

@ -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()));

View File

@ -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),
@ -736,7 +743,7 @@ public enum Achievement
MONSTER_MAZE_SURVIVAL("Die Already!", 1200,
new String[]{"Monster Maze.ToughCompetition"},
new String[]{"Survive past the 15th Safe Pad"},
new String[]{"Survive past the 10th Safe Pad"},
new int[]{1},
AchievementCategory.MONSTER_MAZE),
@ -813,7 +820,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;

View File

@ -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,
@ -209,6 +227,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();
@ -217,9 +240,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
@ -230,8 +265,8 @@ public enum AchievementCategory
}
}
public static enum GameCategory
public enum GameCategory
{
GLOBAL, SURVIVAL, CLASSICS, CHAMPIONS, ARCADE;
GLOBAL, HOLIDAY, SURVIVAL, CLASSICS, CHAMPIONS, ARCADE
}
}

View File

@ -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");

View File

@ -46,7 +46,7 @@ public class AchievementMainPage extends ShopPageBase<AchievementManager, Achiev
protected void buildPage()
{
ArrayList<Integer> pageLayout = new ItemLayout(
"XXXXOXXXX",
"XXXXOXXXO",
"OXOXOXOXO",
"OXOXOXOXO",
"XXOXOXOXX").getItemSlots();

View File

@ -24,7 +24,7 @@ public class BenefitManagerRepository extends RepositoryBase
@Override
protected void initialize()
{
executeUpdate(CREATE_BENEFIT_TABLE);
//executeUpdate(CREATE_BENEFIT_TABLE);
}
@Override

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -132,8 +132,8 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
private int _visualTick;
// Streak
private StreakRecord _dailyStreak;
private StreakRecord _voteStreak;
// private StreakRecord _dailyStreak;
// private StreakRecord _voteStreak;
private ArrayList<String> _voteList;
@ -220,7 +220,7 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
new VoteHandler(this));
updateOffSet();
updateStreakRecord();
// updateStreakRecord();
}
@Override
@ -240,45 +240,45 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
updateOffSet();
}
@EventHandler
public void updateStreak(UpdateEvent event)
{
if (event.getType() != UpdateType.MIN_16)
return;
updateStreakRecord();
}
private void updateStreakRecord()
{
_repository.getDailyStreakRecord(new Callback<StreakRecord>()
{
@Override
public void run(StreakRecord data)
{
_dailyStreak = data;
}
});
_repository.getVoteStreakRecord(new Callback<StreakRecord>()
{
@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<StreakRecord>()
// {
// @Override
// public void run(StreakRecord data)
// {
// _dailyStreak = data;
// }
// });
//
// _repository.getVoteStreakRecord(new Callback<StreakRecord>()
// {
// @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)
{

View File

@ -435,7 +435,7 @@ public class BonusRepository extends RepositoryBase
@Override
protected void initialize()
{
executeUpdate(CREATE_BONUS_TABLE);
//executeUpdate(CREATE_BONUS_TABLE);
}
@Override

View File

@ -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);

View File

@ -2,6 +2,9 @@ package mineplex.core.bonuses.gui.buttons;
import java.util.ArrayList;
import mineplex.core.bonuses.BonusAmount;
import mineplex.core.bonuses.BonusClientData;
import mineplex.core.bonuses.BonusManager;
import mineplex.core.common.jsonchat.ClickEvent;
import mineplex.core.common.jsonchat.JsonMessage;
import mineplex.core.common.util.C;
@ -11,10 +14,6 @@ import mineplex.core.common.util.UtilTime.TimeUnit;
import mineplex.core.gui.GuiItem;
import mineplex.core.gui.ItemRefresher;
import mineplex.core.shop.item.ShopItem;
import mineplex.core.bonuses.BonusAmount;
import mineplex.core.bonuses.BonusClientData;
import mineplex.core.bonuses.BonusManager;
import mineplex.core.bonuses.StreakRecord;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
@ -72,15 +71,15 @@ public class VoteButton implements GuiItem, Listener {
getPlayer().playSound(getPlayer().getLocation(), Sound.NOTE_PLING, 1, 1.6f);
UtilPlayer.message(getPlayer(), "----------------------------------------------------");
UtilPlayer.message(getPlayer(), C.cGold + C.Bold + C.Strike + "=============================================");
UtilPlayer.message(getPlayer(), "");
new JsonMessage("Click to Open in Web Browser").click(ClickEvent.OPEN_URL, _url).sendToPlayer(getPlayer());
new JsonMessage(C.cGreen + _url).click(ClickEvent.OPEN_URL, _url).sendToPlayer(getPlayer());
new JsonMessage(" " + C.Bold + "Click to Open in Web Browser").click(ClickEvent.OPEN_URL, _url).sendToPlayer(getPlayer());
new JsonMessage( " " + C.cGreen + C.Line + _url).click(ClickEvent.OPEN_URL, _url).sendToPlayer(getPlayer());
UtilPlayer.message(getPlayer(), "");
UtilPlayer.message(getPlayer(), "Please be patient, votes may take a few minutes to register.");
UtilPlayer.message(getPlayer(), "Please be patient. Votes may take a few minutes to register.");
UtilPlayer.message(getPlayer(), "");
UtilPlayer.message(getPlayer(), "----------------------------------------------------");
UtilPlayer.message(getPlayer(), C.cGold + C.Bold + C.Strike + "=============================================");
getPlayer().closeInventory();
@ -145,13 +144,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);
}

View File

@ -5,6 +5,8 @@ import java.util.List;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.core.MiniPlugin;
@ -42,6 +44,10 @@ public class BotSpamManager extends MiniPlugin
// Ignore messages sent to staff members
if (_clientManager.hasRank(recipient, Rank.HELPER))
return;
// Ignore messages sent by staff members
if (_clientManager.hasRank(event.getSender(), Rank.HELPER))
return;
for (SpamText spamText : _spam)
{
@ -53,6 +59,31 @@ public class BotSpamManager extends MiniPlugin
}
}
}
@EventHandler(priority = EventPriority.LOWEST)
public void onChat(final AsyncPlayerChatEvent event)
{
// Ignore messages sent by staff members
if (_clientManager.hasRank(event.getPlayer(), Rank.HELPER))
return;
for (final SpamText spamText : _spam)
{
if (spamText.isEnabled() && spamText.isSpam(event.getMessage()))
{
runSync(new Runnable()
{
@Override
public void run()
{
punishBot(event.getPlayer(), spamText);
}
});
event.setCancelled(true);
return;
}
}
}
public void punishBot(Player player, final SpamText botText)
{

View File

@ -23,6 +23,7 @@ public class SpamText
public boolean isSpam(String message)
{
//System.out.println(message.toLowerCase() + " vs " + _text.toLowerCase() + " == " + message.toLowerCase().contains(_text.toLowerCase()));
return message.toLowerCase().contains(_text.toLowerCase());
}

View File

@ -13,7 +13,7 @@ public class BotSpamAddCommand extends CommandBase<BotSpamManager>
{
public BotSpamAddCommand(BotSpamManager plugin)
{
super(plugin, Rank.DEVELOPER, "add");
super(plugin, Rank.ADMIN, "add");
}
@Override

View File

@ -12,7 +12,7 @@ public class BotSpamCommand extends MultiCommandBase<BotSpamManager>
{
public BotSpamCommand(BotSpamManager plugin)
{
super(plugin, Rank.DEVELOPER, "botban", "botspam");
super(plugin, Rank.ADMIN, "botban", "botspam");
AddCommand(new BotSpamAddCommand(Plugin));
AddCommand(new BotSpamEnableCommand(Plugin));

View File

@ -13,7 +13,7 @@ public class BotSpamDisableCommand extends CommandBase<BotSpamManager>
{
public BotSpamDisableCommand(BotSpamManager plugin)
{
super(plugin, Rank.DEVELOPER, "disable");
super(plugin, Rank.ADMIN, "disable");
}
@Override

View File

@ -13,7 +13,7 @@ public class BotSpamEnableCommand extends CommandBase<BotSpamManager>
{
public BotSpamEnableCommand(BotSpamManager plugin)
{
super(plugin, Rank.DEVELOPER, "enable");
super(plugin, Rank.ADMIN, "enable");
}
@Override

View File

@ -17,7 +17,7 @@ public class BotSpamListCommand extends CommandBase<BotSpamManager>
{
public BotSpamListCommand(BotSpamManager plugin)
{
super(plugin, Rank.DEVELOPER, "list");
super(plugin, Rank.ADMIN, "list");
}
@Override

View File

@ -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));

View File

@ -140,7 +140,7 @@ public class GadgetPage extends ShopPageBase<CosmeticManager, CosmeticShop>
{
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()));

View File

@ -180,7 +180,7 @@ public class Menu extends ShopPageBase<CosmeticManager, CosmeticShop>
{
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()));

View File

@ -75,7 +75,7 @@ public class PetPage extends ShopPageBase<CosmeticManager, CosmeticShop>
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");
}
}

View File

@ -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<CosmeticManager, CosmeticShop>
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<CosmeticManager, CosmeticShop>
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()));

View File

@ -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);

View File

@ -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<Integer, DisguiseBase> _spawnPacketMap = new NautHashMap<Integer, DisguiseBase>();
@ -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;
}

View File

@ -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

View File

@ -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));

View File

@ -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

View File

@ -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())));

View File

@ -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);

View File

@ -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);

View File

@ -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.INK_SACK, (byte)8);
}
@Override
public void EnableCustom(Player player)
{
}
@Override
public void DisableCustom(Player player)
{
}
}

View File

@ -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());
}

View File

@ -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<Player, ParticleKronosData> _glass = new HashMap<Player, ParticleKronosData>();
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);
}
}

View File

@ -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)];
}
}

View File

@ -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);

View File

@ -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.INK_SACK, (byte)8);
}
}

View File

@ -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())));

View File

@ -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<ClientInventory>
private InventoryRepository _repository;
private NautHashMap<String, Item> _items = new NautHashMap<String, Item>();
private NautHashMap<String, Category> _categories = new NautHashMap<String, Category>();
private NautHashMap<Integer, String> _itemIdNameMap = new NautHashMap<Integer, String>();
private NautHashMap<Player, NautHashMap<String, NautHashMap<String, Integer>>> _inventoryQueue = new NautHashMap<Player, NautHashMap<String, NautHashMap<String, Integer>>>();
private NautHashMap<Player, NautHashMap<String, Integer>> _inventoryQueue = new NautHashMap<Player, NautHashMap<String, Integer>>();
public InventoryManager(JavaPlugin plugin, CoreClientManager clientManager)
{
@ -45,7 +44,6 @@ public class InventoryManager extends MiniDbClientPlugin<ClientInventory>
public void run()
{
updateItems();
updateCategories();
}
}, 20L);
}
@ -59,24 +57,12 @@ public class InventoryManager extends MiniDbClientPlugin<ClientInventory>
for (Item item : items)
{
_items.put(item.Name, item);
_itemIdNameMap.put(item.Id, item.Name);
}
}
}
private void updateCategories()
{
List<Category> 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<ClientInventory>
}
if (!_inventoryQueue.containsKey(player))
_inventoryQueue.put(player, new NautHashMap<String, NautHashMap<String, Integer>>());
if (!_inventoryQueue.get(player).containsKey(category))
_inventoryQueue.get(player).put(category, new NautHashMap<String, Integer>());
_inventoryQueue.put(player, new NautHashMap<String, Integer>());
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<Boolean> callback, final Player player, String category, final String item, final int count)
public void addItemToInventory(final Callback<Boolean> callback, final Player player, final String item, final int count)
{
addItemToInventoryForOffline(new Callback<Boolean>()
{
@ -116,16 +99,7 @@ public class InventoryManager extends MiniDbClientPlugin<ClientInventory>
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<ClientInventory>
return item;
}
public void addItemToInventoryForOffline(final Callback<Boolean> callback, final UUID uuid, final String category, final String item, final int count)
public void addItemToInventoryForOffline(final Callback<Boolean> 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<ClientInventory>
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<Boolean>()
addItemToInventoryForOffline(new Callback<Boolean>()
{
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<ClientInventory>
@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 + "';";
}
}

View File

@ -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<InventoryManager>
{
public GiveItemCommand(InventoryManager plugin)
@ -54,7 +49,7 @@ public class GiveItemCommand extends CommandBase<InventoryManager>
}
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<InventoryManager>
{
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
{

View File

@ -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<Category> retrieveCategories()
{
final List<Category> categories = new ArrayList<Category>();
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<Item> 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<Integer, String> 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;

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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<Minecart>
{
public MountCart(MountManager manager)
@ -112,13 +110,18 @@ public class MountCart extends Mount<Minecart>
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);

View File

@ -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<Horse> used = new ArrayList<Horse>();
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<Player, Horse> 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();
}
}
}
}

View File

@ -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.INK_SACK,
(byte)8,
-1,
Color.BLACK, Style.BLACK_DOTS, Variant.UNDEAD_HORSE, 0.8, null);
}
}

View File

@ -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)

View File

@ -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);
}
}

View File

@ -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, " ");

View File

@ -48,6 +48,17 @@ public class PacketHandler extends MiniPlugin
EnumProtocol.PLAY.a().put(2, PacketPlayUseEntity.class);
EnumProtocol.PLAY.a().put(PacketPlayUseEntity.class, 2);
// 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);
method.setAccessible(true);

View File

@ -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));
}
}

View File

@ -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));
}
}

View File

@ -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));
}
}

View File

@ -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;
}
}
}

View File

@ -146,7 +146,7 @@ public class PetManager extends MiniClientPlugin<PetClient>
{
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");
}

View File

@ -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));

View File

@ -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

View File

@ -165,7 +165,22 @@ public class PreferencesPage extends ShopPageBase<PreferencesManager, Preference
protected void toggleHubInvisibility(org.bukkit.entity.Player player)
{
getPlugin().Get(player).Invisibility = !getPlugin().Get(player).Invisibility;
_hubInvisibilityToggled = !_hubInvisibilityToggled;
//Dont save for Mod/SnrMod - prevents them just being invis 24/7
if (getPlugin().Get(player).Invisibility)
{
if (getClient().GetRank().has(Rank.ADMIN) ||
getClient().GetRank() == Rank.YOUTUBE ||
getClient().GetRank() == Rank.YOUTUBE_SMALL ||
getClient().GetRank() == Rank.TWITCH)
{
_hubInvisibilityToggled = !_hubInvisibilityToggled;
}
}
player.setFlying(false);
player.setAllowFlight(false);
buildPage();
}
@ -254,13 +269,7 @@ public class PreferencesPage extends ShopPageBase<PreferencesManager, Preference
buildPreference(index, Material.SKULL_ITEM, (byte)3, "Hub Party Requests", userPreferences.PartyRequests, _toggleHubPartyRequests);
buildPreference(40, Material.RED_ROSE, "Show Pending Friend Requests", userPreferences.PendingFriendRequests, _togglePendingFriendRequests);
if (getClientManager().Get(getPlayer()).GetRank() == Rank.YOUTUBE || getClientManager().Get(getPlayer()).GetRank() == Rank.TWITCH)
{
buildPreference(38, Material.NETHER_STAR, "Hub Invisibility", userPreferences.Invisibility, _toggleHubInvisibility);
buildPreference(42, Material.SLIME_BALL, "Hub Forcefield", userPreferences.HubForcefield, _toggleHubForcefield);
buildPreference(44, Material.SADDLE, "Hub Ignore Velocity", userPreferences.IgnoreVelocity, _toggleHubIgnoreVelocity);
}
if (getClientManager().Get(getPlayer()).GetRank().has(Rank.ADMIN) || getClientManager().Get(getPlayer()).GetRank() == Rank.JNR_DEV)
{
buildPreference(36, Material.NETHER_STAR, "Hub Invisibility", userPreferences.Invisibility, _toggleHubInvisibility);
@ -270,8 +279,15 @@ public class PreferencesPage extends ShopPageBase<PreferencesManager, Preference
}
else if (getClientManager().Get(getPlayer()).GetRank().has(Rank.MODERATOR))
{
buildPreference(38, Material.PAPER, "Mac Reports", userPreferences.ShowMacReports, _toggleMacReports);
buildPreference(42, Material.SADDLE, "Hub Ignore Velocity", userPreferences.IgnoreVelocity, _toggleHubIgnoreVelocity);
buildPreference(38, Material.NETHER_STAR, "Hub Invisibility", userPreferences.Invisibility, _toggleHubInvisibility);
buildPreference(42, Material.PAPER, "Mac Reports", userPreferences.ShowMacReports, _toggleMacReports);
buildPreference(44, Material.SADDLE, "Hub Ignore Velocity", userPreferences.IgnoreVelocity, _toggleHubIgnoreVelocity);
}
else if (getClientManager().Get(getPlayer()).GetRank() == Rank.YOUTUBE || getClientManager().Get(getPlayer()).GetRank() == Rank.TWITCH)
{
buildPreference(38, Material.NETHER_STAR, "Hub Invisibility & Flight", userPreferences.Invisibility, _toggleHubInvisibility);
buildPreference(42, Material.SLIME_BALL, "Hub Forcefield", userPreferences.HubForcefield, _toggleHubForcefield);
buildPreference(44, Material.SADDLE, "Hub Ignore Velocity", userPreferences.IgnoreVelocity, _toggleHubIgnoreVelocity);
}
}

View File

@ -28,7 +28,7 @@ public class PunishmentHandler implements CommandCallback
String playerName = punishCommand.getPlayerName();
boolean ban = punishCommand.getBan();
final String reason = punishCommand.getMessage();
final Player player = Bukkit.getPlayer(playerName);
final Player player = Bukkit.getPlayerExact(playerName);
if (player != null && player.isOnline())
{

View File

@ -47,9 +47,11 @@ This will be used to determine if staff are handling
@Override
protected void initialize()
{
/*
executeUpdate(CREATE_TICKET_TABLE);
executeUpdate(CREATE_HANDLER_TABLE);
executeUpdate(CREATE_REPORTERS_TABLE);
*/
}
@Override

View File

@ -57,7 +57,7 @@ public class InventoryReward extends Reward
amountToGive = _minAmount;
}
_inventoryManager.addItemToInventory(player, "Item", _packageName, amountToGive);
_inventoryManager.addItemToInventory(player, _packageName, amountToGive);
return new RewardData(getRarity().getColor() + amountToGive + " " + _name, _itemStack, getRarity());
}

View File

@ -13,6 +13,7 @@ import mineplex.core.pet.repository.token.PetToken;
import mineplex.core.reward.RewardData;
import mineplex.core.reward.RewardManager;
import mineplex.core.reward.RewardRarity;
import mineplex.playerCache.PlayerCache;
/**
* Created by shaun on 14-09-18.
@ -36,6 +37,12 @@ public class PetReward extends UnknownPackageReward
protected RewardData giveRewardCustom(Player player)
{
PetChangeToken token = new PetChangeToken();
if (_inventoryManager.getClientManager().Get(player) != null)
token.AccountId = _inventoryManager.getClientManager().Get(player).getAccountId();
else
token.AccountId = PlayerCache.getInstance().getPlayer(player.getUniqueId()).getAccountId();
token.Name = player.getName();
token.PetType = _petEntity.toString();
token.PetName = getPackageName();
@ -48,7 +55,7 @@ public class PetReward extends UnknownPackageReward
_petManager.Get(player).GetPets().put(_petEntity, token.PetName);
_inventoryManager.addItemToInventory(player, "Pet", _petEntity.toString(), 1);
_inventoryManager.addItemToInventory(player, _petEntity.toString(), 1);
return super.giveRewardCustom(player);
}

View File

@ -160,18 +160,25 @@ public class StatsManager extends MiniDbClientPlugin<PlayerStats>
if (player.isOnline())
continue;
int uploadKey = PlayerCache.getInstance().getPlayer(player.getUniqueId()).getAccountId();
uploadQueue.put(uploadKey, new NautHashMap<Integer, Long>());
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<Integer, Long>());
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();
}
}

View File

@ -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);
}
}
}
}

View File

@ -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++;
}
}

View File

@ -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);
}
}

View File

@ -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<Rank>()
{
@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<Rank> 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);
// }
// }
}

View File

@ -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
}
}

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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));

View File

@ -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."));

View File

@ -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());

View File

@ -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<HubClient>
{
// 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<HubClient>
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<HubClient>
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<HubClient>
return _visibilityManager;
}
// public HalloweenSpookinessManager getHalloweenManager()
// {
// return _halloweenManager;
// }
@EventHandler(priority = EventPriority.MONITOR)
public void gadgetCollide(GadgetCollideEntityEvent event)
{

View File

@ -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<CreepyDudeData> _creepyDudes = new HashSet<CreepyDudeData>();
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<Location> dudeLocations = new ArrayList<Location>();
for (CreepyDudeData data : _creepyDudes)
{
dudeLocations.add(data.Location);
}
Location average = UtilAlg.getAverageLocation(dudeLocations);
ArrayList<Player> best = new ArrayList<Player>();
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);
}
}

View File

@ -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);

View File

@ -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));
}
}
}
}

Some files were not shown because too many files have changed in this diff Show More