Merge remote-tracking branch 'origin/master' into foo

This commit is contained in:
fooify 2015-10-25 10:10:06 -07:00
commit bb806d6260
200 changed files with 7932 additions and 1177 deletions

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

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

@ -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 = " §2§l§n M O N S T E R M A Z E B E T A §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

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

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

@ -8,7 +8,7 @@ import java.util.Set;
public class NautHashMap<KeyType, ValueType>
{
private HashMap<KeyType, ValueType> _wrappedHashMap = new HashMap<KeyType, ValueType>();
public boolean containsKey(KeyType key)
{
return _wrappedHashMap.containsKey(key);

View File

@ -0,0 +1,38 @@
package mineplex.core.common.util;
import org.bukkit.Location;
public class RadarData
{
public Location Loc;
public String Text;
private double _bearing = 0;
public RadarData(Location loc, String text)
{
Loc = loc;
Text = text;
}
public void print()
{
System.out.println(Text + ": " + _bearing);
}
public void setBearing(double d)
{
while (d < -180)
d += 360;
while (d > 180)
d -= 360;
_bearing = d;
}
public double getBearing()
{
return _bearing;
}
}

View File

@ -423,4 +423,9 @@ public class UtilAlg
return UtilAlg.findClosest(near, corners);
}
public static boolean isSimilar(Location a, Location b)
{
return a.getWorld() == b.getWorld() && a.getX() == b.getX() && a.getY() == b.getY() && a.getZ() == b.getZ();
}
}

View File

@ -516,6 +516,11 @@ public class UtilBlock
return false;
}
public static ArrayList<Block> getInBoundingBox(Location a, Location b)
{
return getInBoundingBox(a, b, true);
}
public static ArrayList<Block> getInBoundingBox(Location a, Location b, boolean ignoreAir)
{
ArrayList<Block> blocks = new ArrayList<Block>();
@ -525,10 +530,59 @@ public class UtilBlock
{
Block block = a.getWorld().getBlockAt(x,y,z);
if (block.getType() != Material.AIR)
blocks.add(block);
if(ignoreAir)
{
if (block.getType() != Material.AIR)
blocks.add(block);
}
else blocks.add(block);
}
return blocks;
}
public static int getStepSoundId(Block block)
{
if (block.getTypeId() != 35 && block.getTypeId() != 159 && block.getTypeId() != 160)
return block.getTypeId();
switch (block.getData())
{
case 0:
return block.getTypeId();
case 1:
return 172;
case 2:
return 87;
case 3:
return 79;
case 4:
return 41;
case 5:
return 133;
case 6:
return 45;
case 7:
return 16;
case 8:
return 13;
case 9:
return 56;
case 10:
return 110;
case 11:
return 22;
case 12:
return 3;
case 13:
return 31;
case 14:
return 152;
case 15:
return 173;
default:
return block.getTypeId();
}
}
}

View File

@ -352,5 +352,23 @@ public class UtilInv
Update(player);
}
public static int getAmount(Player player, Material mat)
{
return getAmount(player, mat, true);
}
public static int getAmount(Player player, Material mat, boolean includeArmorAndCursor)
{
int amount = 0;
for (ItemStack item : getItems(player, true, true))
{
if (item.getType() == mat)
{
amount += item.getAmount();
}
}
return amount;
}
}

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

@ -0,0 +1,112 @@
package mineplex.core.common.util;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
public class UtilRadar
{
public static void displayRadar(Player player, List<RadarData> dataList)
{
displayRadar(player, dataList, true);
}
public static void displayRadar(Player player, List<RadarData> dataList, boolean bossBar)
{
int radarChars = 59;
int radarSpaces = radarChars;
//get bearings for each element
for (RadarData data : dataList)
{
double pYaw = UtilAlg.GetYaw(player.getLocation().getDirection());
double relYaw = UtilAlg.GetYaw(UtilAlg.getTrajectory(player.getLocation(), data.Loc));
data.setBearing(relYaw - pYaw);
radarSpaces -= ChatColor.stripColor(data.Text).length();
}
//sort
sortScores(dataList);
//draw
String text = C.cPurple + C.Bold + "Radar [" + ChatColor.RESET;
int radarSpacesDrawn = 0;
int radarCharsDrawn = 0;
for (RadarData data : dataList)
{
//behind to left
if (data.getBearing() < -90)
{
text += ChatColor.RESET + data.Text;
radarCharsDrawn += ChatColor.stripColor(data.Text).length();
}
//behind to right
else if (data.getBearing() > 90)
{
//finish spaces
while (radarSpacesDrawn < radarSpaces)
{
text += " ";
radarSpacesDrawn++;
radarCharsDrawn++;
}
text += ChatColor.RESET + data.Text;
radarCharsDrawn += ChatColor.stripColor(data.Text).length();
}
//in front
else
{
double percent = (data.getBearing() + 90D) / 180D;
while (percent >= (double)radarCharsDrawn/(double)radarChars && radarSpacesDrawn<radarSpaces)
{
text += " ";
radarSpacesDrawn++;
radarCharsDrawn++;
}
text += ChatColor.RESET + data.Text;
radarCharsDrawn += ChatColor.stripColor(data.Text).length();
}
}
//finish spaces (only needed if nothing was on right)
while (radarSpacesDrawn < radarSpaces)
{
text += " ";
radarSpacesDrawn++;
}
text += C.cPurple + C.Bold + "] Radar";
if(bossBar)
{
UtilTextTop.display(text, player);
}
else
{
UtilTextBottom.display(text, player);
}
}
private static void sortScores(List<RadarData> dataList)
{
for (int i=0 ; i<dataList.size() ; i++)
{
for (int j=dataList.size()-1 ; j>0 ; j--)
{
if (dataList.get(j).getBearing() < dataList.get(j-1).getBearing())
{
RadarData temp = dataList.get(j);
dataList.set(j, dataList.get(j-1));
dataList.set(j-1, temp);
}
}
}
}
}

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

@ -1,8 +1,12 @@
package mineplex.core.account;
import mineplex.core.account.event.OnlineRankUpdateEvent;
import mineplex.core.common.Rank;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilPlayer;
import mineplex.serverdata.Utility;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
public class CoreClient
@ -12,8 +16,9 @@ public class CoreClient
private String _name;
private String _disguisedAs;
private Player _player;
private Rank _rank;
private Rank _rank, _lastRank;
private Rank _disguisedRank;
private Rank _tempRank, _lastTemp;
private boolean _disguised;
public CoreClient(Player player)
@ -58,18 +63,59 @@ public class CoreClient
{
_accountId = accountId;
}
public Rank GetRank()
{
return GetRank(false);
}
public Rank GetRank(boolean bypass)
{
if (_rank == null)
_rank = Rank.ALL;
return _rank;
if (bypass || _tempRank == null)
return _rank;
else
return _tempRank;
}
public void SetRank(Rank rank)
public Rank GetLastRank(boolean temp)
{
_rank = rank;
if (temp)
{
if ((_lastTemp == null) && (_tempRank == null))
{
return _rank;
}
else if (_lastTemp == null)
{
return _tempRank;
}
return _lastTemp;
}
else
{
if (_lastRank == null) return _rank;
return _lastRank;
}
}
public void SetRank(Rank rank, boolean temp)
{
if (temp)
{
if (_lastTemp == null) _lastTemp = rank;
else _lastTemp = _tempRank;
_lastRank = _rank;
_tempRank = rank;
}
else
{
if (_rank != null) _lastRank = _rank;
else _lastRank = rank;
_rank = rank;
}
}
public long getNetworkSessionLoginTime()
@ -111,4 +157,16 @@ public class CoreClient
{
_networkSessionLoginTime = loginTime;
}
public void resetTemp()
{
if (_tempRank != null)
{
OnlineRankUpdateEvent event = new OnlineRankUpdateEvent(_player, _tempRank, _rank, true);
Bukkit.getPluginManager().callEvent(event);
_lastTemp = _tempRank;
_tempRank = null;
UtilPlayer.message(_player, C.cGold + "Your test rank has been reset!");
}
}
}

View File

@ -9,6 +9,7 @@ import java.util.UUID;
import java.util.concurrent.atomic.AtomicInteger;
import mineplex.core.MiniPlugin;
import mineplex.core.account.command.TestRank;
import mineplex.core.account.command.UpdateRank;
import mineplex.core.account.event.ClientUnloadEvent;
import mineplex.core.account.event.ClientWebResponseEvent;
@ -74,6 +75,7 @@ public class CoreClientManager extends MiniPlugin
public void addCommands()
{
addCommand(new UpdateRank(this));
addCommand(new TestRank(this));
}
public CoreClient Add(String name)
@ -245,7 +247,7 @@ public class CoreClientManager extends MiniPlugin
token = gson.fromJson(response, ClientToken.class);
CoreClient client = Add(playerName);
client.SetRank(Rank.valueOf(token.Rank));
client.SetRank(Rank.valueOf(token.Rank), false);
client.setAccountId(_repository.login(_loginProcessors, _querylessLoginProcessors, uuid.toString(), client.GetPlayerName()));
// JSON sql response
@ -305,7 +307,7 @@ public class CoreClientManager extends MiniPlugin
token = gson.fromJson(response, ClientToken.class);
client.SetRank(Rank.valueOf(token.Rank));
client.SetRank(Rank.valueOf(token.Rank), false);
// _repository.updateMysqlRank(uuid.toString(), token.Rank, token.RankPerm, new Timestamp(Date.parse(token.RankExpire)).toString());
@ -418,7 +420,7 @@ public class CoreClientManager extends MiniPlugin
{
CoreClient client = Get(name);
client.SetRank(newRank);
client.SetRank(newRank, false);
}
}
}, name, uuid, rank, perm);

View File

@ -0,0 +1,77 @@
package mineplex.core.account.command;
import mineplex.core.account.CoreClientManager;
import mineplex.core.account.event.OnlineRankUpdateEvent;
import mineplex.core.command.CommandBase;
import mineplex.core.common.Rank;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilPlayer;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
public class TestRank extends CommandBase<CoreClientManager>
{
public TestRank(CoreClientManager plugin)
{
super(plugin, Rank.ALL, "testRank");
}
@Override
public void Execute(final Player caller, String[] args)
{
if (!Plugin.Get(caller).GetRank(true).has(Rank.JNR_DEV))
{
UtilPlayer.message(caller, F.main("Permissions", "This requires Permission Rank [" + Rank.JNR_DEV.getTag(false, true) + C.cGray + "]."));
return;
}
boolean testServer = Plugin.getPlugin().getConfig().getString("serverstatus.group").equalsIgnoreCase("Testing");
if (!testServer)
{
UtilPlayer.message(caller, F.main(Plugin.getName(), F.elem("This command can only be used on test servers!")));
return;
}
if (args == null)
{
UtilPlayer.message(caller, F.main(Plugin.getName(), "/" + AliasUsed + " MODERATOR"));
}
else
{
if (args.length == 0)
{
UtilPlayer.message(caller, F.main(Plugin.getName(), "Rank argument missing."));
return;
}
if (args[0].equalsIgnoreCase("RESET"))
{
Plugin.Get(caller).resetTemp();
}
else
{
Rank tempRank = null;
try
{
tempRank = Rank.valueOf(args[0].toUpperCase());
}
catch (Exception ex)
{
UtilPlayer.message(caller, F.main(Plugin.getName(), ChatColor.RED + "" + ChatColor.BOLD + "Invalid rank!"));
return;
}
Plugin.Get(caller).SetRank(tempRank, true);
UtilPlayer.message(caller, F.main(Plugin.getName(), "Your rank has been set to " + tempRank.getTag(false, false) + C.cGray + "!"));
UtilPlayer.message(caller, F.main("NOTICE", "This is only to be used for testing purposes. Misuse of this command will result in a demotion."));
OnlineRankUpdateEvent event = new OnlineRankUpdateEvent(caller, Plugin.Get(caller).GetRank(true), Plugin.Get(caller).GetRank(), true);
Bukkit.getPluginManager().callEvent(event);
}
}
}
}

View File

@ -4,34 +4,36 @@ import java.util.Iterator;
import java.util.List;
import java.util.UUID;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import mineplex.core.account.CoreClientManager;
import mineplex.core.account.event.OnlineRankUpdateEvent;
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.common.util.UtilServer;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
public class UpdateRank extends CommandBase<CoreClientManager>
{
public UpdateRank(CoreClientManager plugin)
{
super(plugin, Rank.ADMIN, new Rank[] {Rank.JNR_DEV /*On test servers only*/}, "updateRank");
super(plugin, Rank.ADMIN, "updateRank");
}
@Override
public void Execute(final Player caller, String[] args)
{
boolean testServer = Plugin.getPlugin().getConfig().getString("serverstatus.group").equalsIgnoreCase("Testing");
if (Plugin.Get(caller).GetRank() == Rank.JNR_DEV && !testServer)
if (!Plugin.Get(caller).GetRank(true).has(caller, Rank.ADMIN, true))
{
F.main(Plugin.getName(), F.elem(Rank.JNR_DEV.getTag(true, true)) + "s are only permitted to set ranks on test servers!");
return;
}
boolean testServer = Plugin.getPlugin().getConfig().getString("serverstatus.group").equalsIgnoreCase("Testing");
if (args == null)
{
@ -60,7 +62,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))
{
@ -93,6 +95,19 @@ public class UpdateRank extends CommandBase<CoreClientManager>
}
}
if (UtilPlayer.isOnline(playerName))
{
Player p = UtilServer.getServer().getPlayer(playerName);
if (Plugin.Get(p).GetRank() != Plugin.Get(p).GetRank(true))
Plugin.Get(p).resetTemp();
OnlineRankUpdateEvent event = new OnlineRankUpdateEvent(caller, Plugin.Get(caller).GetRank(), rank, true);
Plugin.Get(p).SetRank(rank, false);
Bukkit.getPluginManager().callEvent(event);
UtilPlayer.message(p, F.main(Plugin.getName(), "Your rank has been updated to " + rank.Name + "!"));
}
UtilPlayer.searchOffline(matches, new Callback<String>()
{
public void run(final String target)

View File

@ -0,0 +1,55 @@
package mineplex.core.account.event;
import mineplex.core.common.Rank;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
public class OnlineRankUpdateEvent extends Event
{
private static final HandlerList handlers = new HandlerList();
private Player _player;
private Rank _from, _to;
private boolean _temp;
public OnlineRankUpdateEvent(Player player, Rank from, Rank to, boolean temp)
{
_player = player;
_from = from;
_to = to;
_temp = temp;
}
public Player getPlayer()
{
return _player;
}
public Rank getFrom()
{
return _from;
}
public Rank getTo()
{
return _to;
}
public boolean isTemporary()
{
return _temp;
}
public HandlerList getHandlers()
{
return handlers;
}
public static HandlerList getHandlerList()
{
return handlers;
}
}

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()));
@ -229,7 +229,8 @@ public class AccountRepository extends RepositoryBase
@Override
public void run()
{
callback.run(response);
if (callback != null)
callback.run(response);
}
});
}

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,
@ -708,10 +715,49 @@ public enum Achievement
new String[]{"Evolution.EvolveKill"},
new String[]{"Kill 25 people while they", "Are trying to evolve"},
new int[]{25},
AchievementCategory.EVOLUTION)
AchievementCategory.EVOLUTION),
MONSTER_MAZE_WINS("Maze Master", 1200,
new String[]{"Monster Maze.Wins"},
new String[]{"Win 40 games of Monster Maze"},
new int[]{40},
AchievementCategory.MONSTER_MAZE),
MONSTER_MAZE_HARD_MODE("Hard Mode", 1000,
new String[]{"Monster Maze.Hard Mode"},
new String[]{"Win a game without using", "any kit abilities"},
new int[]{1},
AchievementCategory.MONSTER_MAZE),
MONSTER_MAZE_NINJA("Ninja", 1200,
new String[]{"Monster Maze.Ninja"},
new String[]{"Win a game without", "touching a monster"},
new int[]{1},
AchievementCategory.MONSTER_MAZE),
MONSTER_MAZE_SPEEDSTER("Speedy McGee", 1000,
new String[]{"Monster Maze.Speed"},
new String[]{"Be the first to the", "Safe Pad 50 times"},
new int[]{50},
AchievementCategory.MONSTER_MAZE),
MONSTER_MAZE_SURVIVAL("Die Already!", 1200,
new String[]{"Monster Maze.ToughCompetition"},
new String[]{"Survive past the 10th Safe Pad"},
new int[]{1},
AchievementCategory.MONSTER_MAZE),
MONSTER_MAZE_PILOT("Pilot", 800, //TODO
new String[]{"Monster Maze.Pilot"},
new String[]{"Get hit by a monster and", "land on the Safe Pad"},
new int[]{1},
AchievementCategory.MONSTER_MAZE),
;
private static String[] _colors = { C.cAqua, C.cGreen, C.cDGray, C.cPurple, C.cYellow, C.cGray };
private static int _negativeCount = 0;
private String _name;
private String[] _desc;
private String[] _stats;
@ -777,7 +823,10 @@ public enum Achievement
public static String getExperienceString(int level)
{
if (level < 0)
return C.cPurple + level;
{
_negativeCount++;
return _colors[_negativeCount % _colors.length] + level;
}
if (level < 20)
return C.cGray + level;

View File

@ -20,6 +20,10 @@ 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 },
@ -141,7 +145,13 @@ public enum AchievementCategory
EVOLUTION("Evolution", null,
new StatDisplay[] {StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED},
Material.MONSTER_EGG, 0, GameCategory.ARCADE, "Harvester Kit");
Material.MONSTER_EGG, 0, GameCategory.ARCADE, "Harvester Kit"),
MONSTER_MAZE("Monster Maze", null,
new StatDisplay[] {StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED},
Material.ROTTEN_FLESH, 0, GameCategory.ARCADE, "SoonTM"),
;
private String _name;
private String[] _statsToPull;
@ -257,6 +267,6 @@ public enum AchievementCategory
public enum GameCategory
{
GLOBAL, SURVIVAL, CLASSICS, CHAMPIONS, ARCADE
GLOBAL, HOLIDAY, SURVIVAL, CLASSICS, CHAMPIONS, ARCADE
}
}

View File

@ -29,7 +29,12 @@ public class AchievementMainPage extends ShopPageBase<AchievementManager, Achiev
public AchievementMainPage(AchievementManager plugin, StatsManager statsManager, AchievementShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player, Player target)
{
super(plugin, shop, clientManager, donationManager, name, player, 9 * 4);
this(plugin, statsManager, shop, clientManager, donationManager, name, 9 * 4, player, target);
}
public AchievementMainPage(AchievementManager plugin, StatsManager statsManager, AchievementShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, int size, Player player, Player target)
{
super(plugin, shop, clientManager, donationManager, name, player, size);
_target = target;
_statsManager = statsManager;
@ -41,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

@ -23,7 +23,9 @@ public class ArcadeMainPage extends AchievementMainPage
{
public ArcadeMainPage(AchievementManager plugin, StatsManager statsManager, AchievementShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player, Player target)
{
super(plugin, statsManager, shop, clientManager, donationManager, name, player, target);
super(plugin, statsManager, shop, clientManager, donationManager, name, 9 * 5, player, target);
}
@Override

View File

@ -27,11 +27,11 @@ public class BenefitManager extends MiniDbClientPlugin<BenefitData>
{
super("Benefit Manager", plugin, clientManager);
_repository = new BenefitManagerRepository(plugin);
_repository = new BenefitManagerRepository(plugin);
//_benefits.add(new Christmas2014(plugin, _repository, inventoryManager));
//_benefits.add(new Thanksgiving2014(plugin, _repository, inventoryManager));
//_benefits.add(new Players40k(this, _repository, inventoryManager));
//_benefits.add(new Players43k(this, _repository, inventoryManager));
}
@EventHandler(priority = EventPriority.LOWEST)

View File

@ -15,6 +15,7 @@ public class BenefitManagerRepository extends RepositoryBase
private static String CREATE_BENEFIT_TABLE = "CREATE TABLE IF NOT EXISTS rankBenefits (id INT NOT NULL AUTO_INCREMENT, accountId INT, benefit VARCHAR(100), PRIMARY KEY (id), FOREIGN KEY (accountId) REFERENCES accounts(id));";
private static String INSERT_BENEFIT = "INSERT INTO rankBenefits (accountId, benefit) VALUES (?, ?);";
private static String DELETE_BENEFIT = "DELETE FROM rankBenefits WHERE accountId = ? AND benefit = ?;";
public BenefitManagerRepository(JavaPlugin plugin)
{
@ -24,7 +25,7 @@ public class BenefitManagerRepository extends RepositoryBase
@Override
protected void initialize()
{
executeUpdate(CREATE_BENEFIT_TABLE);
//executeUpdate(CREATE_BENEFIT_TABLE);
}
@Override
@ -50,4 +51,9 @@ public class BenefitManagerRepository extends RepositoryBase
return playerBenefit;
}
public void removeBenefit(int accountId, String benefit)
{
executeUpdate(DELETE_BENEFIT, new ColumnInt("accountId", accountId), new ColumnVarChar("benefit", 100, benefit));
}
}

View File

@ -45,6 +45,11 @@ public abstract class BenefitBase
}
});
}
protected void removeBenefit(final Player player)
{
_repository.removeBenefit(_plugin.getClientManager().Get(player).getAccountId(), _name);
}
public String getName()
{

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

@ -0,0 +1,49 @@
package mineplex.core.benefit.benefits;
import mineplex.core.benefit.BenefitManager;
import mineplex.core.benefit.BenefitManagerRepository;
import mineplex.core.common.util.C;
import mineplex.core.common.util.Callback;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.inventory.InventoryManager;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class Players43k extends BenefitBase
{
private InventoryManager _inventoryManager;
public Players43k(BenefitManager plugin, BenefitManagerRepository repository, InventoryManager inventoryManager)
{
super(plugin, "Players43k", repository);
_inventoryManager = inventoryManager;
}
@Override
public void rewardPlayer(final Player player)
{
_inventoryManager.addItemToInventory(new Callback<Boolean>()
{
public void run(Boolean success)
{
if (success)
{
UtilPlayer.message(player, C.cGold + C.Strike + "=============================================");
UtilPlayer.message(player, "");
UtilPlayer.message(player, "To celebrate hitting 43,000 players online,");
UtilPlayer.message(player, "everyone receives a prize! You're awesome!");
UtilPlayer.message(player, "");
UtilPlayer.message(player, "You received 3 Ancient Chests!");
UtilPlayer.message(player, "");
UtilPlayer.message(player, C.cGold + C.Strike + "=============================================");
}
else
{
removeBenefit(player);
}
}
}, player, "Ancient Chest", 3);
}
}

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

@ -41,6 +41,7 @@ import mineplex.core.pet.PetManager;
import mineplex.core.recharge.Recharge;
import mineplex.core.reward.RewardManager;
import mineplex.core.stats.StatsManager;
import mineplex.core.status.ServerStatusManager;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.database.Tables;
@ -164,7 +165,7 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
updateOffSet();
}
public BonusManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, PollManager pollManager, NpcManager npcManager, HologramManager hologramManager, StatsManager statsManager, InventoryManager inventoryManager, PetManager petManager)
public BonusManager(JavaPlugin plugin, CoreClientManager clientManager, ServerStatusManager statusManager, DonationManager donationManager, PollManager pollManager, NpcManager npcManager, HologramManager hologramManager, StatsManager statsManager, InventoryManager inventoryManager, PetManager petManager)
{
super("Bonus", plugin);
_repository = new BonusRepository(plugin, this, donationManager);
@ -173,7 +174,7 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
_npcManager = npcManager;
_hologramManager = hologramManager;
_rewardManager = new RewardManager(clientManager, donationManager, inventoryManager, petManager, statsManager,
_rewardManager = new RewardManager(clientManager, statusManager, donationManager, inventoryManager, petManager, statsManager,
100, 250,
500, 1000,
4000, 6000,

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

@ -109,7 +109,7 @@ public class SpinGui extends SimpleGui
}
}
_rewardData = _reward.giveReward("Carls Spinner", getPlayer());
_rewardData = _reward.giveReward(RewardType.SpinnerReal, getPlayer());
}
private void tick()

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

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

@ -109,7 +109,7 @@ public class GadgetPage extends ShopPageBase<CosmeticManager, CosmeticShop>
itemLore.add(C.cWhite + "Your Ammo : " + C.cGreen + getPlugin().getInventoryManager().Get(getPlayer()).getItemCount(gadget.GetName()));
}
if (gadget.IsFree() || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage(gadget.GetName()))
if (gadget.IsFree() || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage(gadget.GetName()) || getPlugin().getInventoryManager().Get(getPlayer()).getItemCount(gadget.GetName()) > 0)
{
if (gadget.GetActive().contains(getPlayer()))
{
@ -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

@ -80,7 +80,7 @@ public class PetPage extends ShopPageBase<CosmeticManager, CosmeticShop>
}
//Owned
if (getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage(pet.GetPetName()))
if (getPlugin().getPetManager().Get(getPlayer()).GetPets().containsKey(pet.GetPetType()))
{
String petName = getPlugin().getPetManager().Get(getPlayer()).GetPets().get(pet.GetPetType());
if (petName == null)

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

@ -14,7 +14,11 @@ 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.UtilParticle;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilParticle.ParticleType;
import mineplex.core.common.util.UtilParticle.ViewDist;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.gadget.types.ItemGadget;
import mineplex.core.updater.UpdateType;
@ -40,6 +44,7 @@ public class ItemTNT extends ItemGadget
public void ActivateCustom(Player player)
{
TNTPrimed tnt = player.getWorld().spawn(player.getEyeLocation().add(player.getLocation().getDirection()), TNTPrimed.class);
tnt.setYield(0.0F); // Added in order to prevent water from being evaporated.
UtilAction.velocity(tnt, player.getLocation().getDirection(), 0.6, false, 0, 0.2, 1, false);
_tnt.add(tnt);
@ -58,7 +63,7 @@ public class ItemTNT extends ItemGadget
HashMap<Player, Double> players = UtilPlayer.getInRadius(event.getLocation(), 10);
for (Player player : players.keySet())
{
{
if (Manager.collideEvent(this, player))
continue;
@ -67,6 +72,9 @@ public class ItemTNT extends ItemGadget
//Knockback
UtilAction.velocity(player, UtilAlg.getTrajectory(event.getLocation(), player.getLocation()), 3 * mult, false, 0, 0.5 + 2 * mult, 10, true);
}
// Simulating explosion to prevent water from being evaporated.
UtilParticle.PlayParticle(ParticleType.HUGE_EXPLOSION, event.getLocation(), 0, 0, 0, 0, 1, ViewDist.NORMAL, UtilServer.getPlayers());
}

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,38 @@ 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.inventory.ClientItem;
import mineplex.core.inventory.data.Item;
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
{
@ -107,7 +109,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 +117,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 +181,11 @@ public class MorphWither extends MorphGadget
@EventHandler
public void legendOwner(PlayerJoinEvent event)
{
// TODO HARDCODED Wither Morph Database Item Id - 550
if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.LEGEND))
{
Manager.getDonationManager().Get(event.getPlayer().getName()).AddUnknownSalesPackagesOwned(GetName());
}
Manager.getInventoryManager().Get(event.getPlayer().getName()).addItem(new ClientItem(new Item(550, GetName()), 1));
}
}
public void setWitherData(String text, double healthPercent)

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

@ -9,6 +9,8 @@ import org.bukkit.event.player.PlayerJoinEvent;
import mineplex.core.common.Rank;
import mineplex.core.common.util.C;
import mineplex.core.gadget.types.ParticleGadget;
import mineplex.core.inventory.ClientItem;
import mineplex.core.inventory.data.Item;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.gadget.GadgetManager;
@ -46,9 +48,10 @@ public class ParticleLegend extends ParticleGadget
@EventHandler
public void legendOwner(PlayerJoinEvent event)
{
// TODO HARDCODED Legendary Aura Database Item Id - 552
if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.LEGEND))
{
Manager.getDonationManager().Get(event.getPlayer().getName()).AddUnknownSalesPackagesOwned(GetName());
}
Manager.getInventoryManager().Get(event.getPlayer().getName()).addItem(new ClientItem(new Item(552, GetName()), 1));
}
}
}

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

@ -63,6 +63,7 @@ public enum GameDisplay
Cards("Craft Against Humanity", Material.MAP, (byte)0, GameCategory.CLASSICS, 51),
Skywars("Skywars", Material.FEATHER, (byte) 0, GameCategory.SURVIVAL, 52),
SkywarsTeams("Skywars Teams", "Skywars", Material.FEATHER, (byte)0, GameCategory.TEAM_VARIANT, 53),
MonsterMaze("Monster Maze", Material.ROTTEN_FLESH, (byte)0, GameCategory.ARCADE, 55),
Lobbers("Bomb Lobbers", Material.FIREBALL, (byte) 0, GameCategory.ARCADE, 54),

View File

@ -0,0 +1,61 @@
package mineplex.core.globalpacket;
import java.util.Arrays;
import java.util.UUID;
import org.bukkit.entity.Player;
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.F;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.globalpacket.command.GlobalPacketCommand;
import mineplex.core.globalpacket.redis.GlobalPacketHandler;
import mineplex.core.globalpacket.redis.GlobalPacketMessage;
import mineplex.core.status.ServerStatusManager;
import mineplex.serverdata.commands.ServerCommandManager;
public class GlobalPacketManager extends MiniPlugin
{
private CoreClientManager _clientManager;
private ServerStatusManager _statusManager;
public GlobalPacketManager(JavaPlugin plugin, CoreClientManager clientManager, ServerStatusManager statusManager)
{
super("Global Packet Manager", plugin);
_clientManager = clientManager;
_statusManager = statusManager;
ServerCommandManager.getInstance().registerCommandType("GlobalPacketMessage", GlobalPacketMessage.class, new GlobalPacketHandler(statusManager));
}
public void callGlobalCommand(Player caller, String[] args)
{
String callerName = null;
UUID callerUUID = null;
Rank callerRank = null;
if (caller != null)
{
callerName = caller.getName();
callerUUID = caller.getUniqueId();
callerRank = _clientManager.Get(caller).GetRank();
UtilPlayer.message(caller, F.main("Global", "Sending Global Command with Arguments;"));
UtilPlayer.message(caller, F.main("Global", F.elem(Arrays.toString(args))));
UtilPlayer.message(caller, F.main("Global", "Please be patient for a response."));
}
GlobalPacketMessage message = new GlobalPacketMessage(callerName, callerUUID, callerRank, _statusManager.getCurrentServerName(), args);
message.publish();
}
@Override
public void addCommands()
{
addCommand(new GlobalPacketCommand(this));
}
}

View File

@ -0,0 +1,30 @@
package mineplex.core.globalpacket.command;
import org.bukkit.entity.Player;
import mineplex.core.command.CommandBase;
import mineplex.core.common.Rank;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.globalpacket.GlobalPacketManager;
public class GlobalPacketCommand extends CommandBase<GlobalPacketManager>
{
public GlobalPacketCommand(GlobalPacketManager plugin)
{
super(plugin, Rank.ADMIN, "globalpacket");
}
@Override
public void Execute(Player caller, String[] args)
{
if (args == null || args.length < 1)
{
UtilPlayer.message(caller, F.main("Global", "Please call the globalpacket command with at least 1 argument"));
UtilPlayer.message(caller, F.main("Global", "For help please see /globalpacket google doc"));
return;
}
Plugin.callGlobalCommand(caller, args);
}
}

View File

@ -0,0 +1,83 @@
package mineplex.core.globalpacket.event;
import java.util.UUID;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import mineplex.core.common.Rank;
public class GlobalPacketEvent extends Event
{
private Player _caller;
private String _callerName;
private UUID _callerUUID;
private Rank _callerRank;
private String _sourceServer;
private String[] _parts;
public GlobalPacketEvent(Player caller, String callerName, UUID callerUUID, Rank callerRank, String sourceServer, String[] parts)
{
_caller = caller;
_callerName = callerName;
_callerUUID = callerUUID;
_callerRank = callerRank;
_sourceServer = sourceServer;
_parts = parts;
}
/**
* The player that executed this global command.
* This player will be NULL when called on the servers that aren't _sourceServer
*/
public Player getCaller()
{
return _caller;
}
/**
* The player name of the player that called the command
*/
public String getCallerName()
{
return _callerName;
}
/**
* The UUID of the player that called the command
*/
public UUID getCallerUUID()
{
return _callerUUID;
}
/**
* Get the rank of the player that called this global command
*/
public Rank getCallerRank()
{
return _callerRank;
}
/**
* The server name that this global command came from
*/
public String getSourceServer()
{
return _sourceServer;
}
/**
* Get the unprocessed parts of this command
*/
public String[] getParts()
{
return _parts;
}
// Bukkit event stuff
private static final HandlerList handlers = new HandlerList();
public static HandlerList getHandlerList() { return handlers; }
public HandlerList getHandlers() { return handlers; }
}

View File

@ -0,0 +1,39 @@
package mineplex.core.globalpacket.redis;
import org.bukkit.entity.Player;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.globalpacket.event.GlobalPacketEvent;
import mineplex.core.status.ServerStatusManager;
import mineplex.serverdata.commands.CommandCallback;
import mineplex.serverdata.commands.ServerCommand;
public class GlobalPacketHandler implements CommandCallback
{
private ServerStatusManager _serverStatus;
public GlobalPacketHandler(ServerStatusManager serverStatus)
{
_serverStatus = serverStatus;
}
@Override
public void run(ServerCommand command)
{
if (command instanceof GlobalPacketMessage)
{
GlobalPacketMessage packetMessage = ((GlobalPacketMessage) command);
Player caller = null;
if (packetMessage.getSourceServer() != null && packetMessage.getSourceServer().equals(_serverStatus.getCurrentServerName()))
{
caller = UtilPlayer.searchExact(packetMessage.getCallerUUID());
}
GlobalPacketEvent event = new GlobalPacketEvent(caller, packetMessage.getCallerName(), packetMessage.getCallerUUID(),
packetMessage.getCallerRank(), packetMessage.getSourceServer(), packetMessage.getParts());
UtilServer.getServer().getPluginManager().callEvent(event);
}
}
}

View File

@ -0,0 +1,50 @@
package mineplex.core.globalpacket.redis;
import java.util.UUID;
import mineplex.core.common.Rank;
import mineplex.serverdata.commands.ServerCommand;
public class GlobalPacketMessage extends ServerCommand
{
private String _callerName;
private UUID _callerUUID;
private Rank _callerRank;
private String _sourceServer;
private String[] _parts;
public GlobalPacketMessage(String callerName, UUID callerUUID, Rank callerRank, String sourceServer, String[] parts)
{
_callerName = callerName;
_callerUUID = callerUUID;
_callerRank = callerRank;
_sourceServer = sourceServer;
_parts = parts;
}
public String getCallerName()
{
return _callerName;
}
public UUID getCallerUUID()
{
return _callerUUID;
}
public Rank getCallerRank()
{
return _callerRank;
}
public String getSourceServer()
{
return _sourceServer;
}
public String[] getParts()
{
return _parts;
}
}

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>()
{
@ -106,26 +89,12 @@ public class InventoryManager extends MiniDbClientPlugin<ClientInventory>
if (!success)
{
System.out.println("Add item to Inventory FAILED for " + player.getName());
if (_items.containsKey(item))
{
Get(player).addItem(new ClientItem(_items.get(item), -count));
}
}
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 +120,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 +164,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 +209,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,10 +55,10 @@ 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");
@ -70,20 +71,20 @@ public class NotificationManager extends MiniPlugin
{
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") + 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

@ -19,6 +19,9 @@ import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilServer;
import mineplex.core.disguise.DisguiseManager;
import mineplex.core.donation.DonationManager;
import mineplex.core.inventory.ClientItem;
import mineplex.core.inventory.InventoryManager;
import mineplex.core.inventory.data.Item;
import net.minecraft.server.v1_7_R4.EntityCreature;
import net.minecraft.server.v1_7_R4.EntityWither;
import net.minecraft.server.v1_7_R4.Navigation;
@ -70,8 +73,10 @@ public class PetManager extends MiniClientPlugin<PetClient>
private NautHashMap<String, String> _petRenameQueue = new NautHashMap<String, String>();
private DonationManager _donationManager;
private CoreClientManager _clientManager;
private InventoryManager _inventoryManager;
public PetManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, DisguiseManager disguiseManager, mineplex.core.creature.Creature creatureModule, BlockRestore restore, String webAddress)
public PetManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager
, InventoryManager inventoryManager, DisguiseManager disguiseManager, mineplex.core.creature.Creature creatureModule, BlockRestore restore, String webAddress)
{
super("Pet Manager", plugin);
@ -82,6 +87,7 @@ public class PetManager extends MiniClientPlugin<PetClient>
_blockRestore = restore;
_donationManager = donationManager;
_clientManager = clientManager;
_inventoryManager = inventoryManager;
_activePetOwners = new NautHashMap<String, Creature>();
_failedAttempts = new NautHashMap<String, Integer>();
@ -146,10 +152,12 @@ public class PetManager extends MiniClientPlugin<PetClient>
{
Player p = event.getPlayer();
Rank rank = _clientManager.Get(p).GetRank();
if (rank.has(Rank.LEGEND))
{
_donationManager.Get(p.getName()).AddUnknownSalesPackagesOwned("Widder");
}
if (rank.has(Rank.LEGEND))
{
if (!Get(p).GetPets().containsKey(EntityType.WITHER))
Get(p).GetPets().put(EntityType.WITHER, "Widder");
}
}
public void AddPetOwner(Player player, EntityType entityType, Location location)

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

@ -10,5 +10,4 @@ public class Pumpkin extends Pet
{
super("Pumpling", EntityType.ZOMBIE, -1);
}
}

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

@ -178,6 +178,9 @@ public class PreferencesPage extends ShopPageBase<PreferencesManager, Preference
}
}
player.setFlying(false);
player.setAllowFlight(false);
buildPage();
}
@ -282,7 +285,7 @@ public class PreferencesPage extends ShopPageBase<PreferencesManager, Preference
}
else if (getClientManager().Get(getPlayer()).GetRank() == Rank.YOUTUBE || getClientManager().Get(getPlayer()).GetRank() == Rank.TWITCH)
{
buildPreference(38, Material.NETHER_STAR, "Hub Invisibility", userPreferences.Invisibility, _toggleHubInvisibility);
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

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

@ -20,12 +20,12 @@ public abstract class Reward
_weight = weight;
}
public final RewardData giveReward(String type, Player player)
public final RewardData giveReward(RewardType rewardType, Player player)
{
return giveRewardCustom(player);
return giveRewardCustom(player, rewardType);
}
protected abstract RewardData giveRewardCustom(Player player);
protected abstract RewardData giveRewardCustom(Player player, RewardType rewardType);
public abstract RewardData getFakeRewardData(Player player);

View File

@ -25,6 +25,7 @@ import mineplex.core.reward.rewards.PetReward;
import mineplex.core.reward.rewards.RankReward;
import mineplex.core.reward.rewards.UnknownPackageReward;
import mineplex.core.stats.StatsManager;
import mineplex.core.status.ServerStatusManager;
import mineplex.core.timing.TimingManager;
public class RewardManager
@ -35,10 +36,11 @@ public class RewardManager
private boolean _carlSpinner;
private CoreClientManager _clientManager;
private ServerStatusManager _statusManager;
private boolean _doubleGadgetValue;
public RewardManager(CoreClientManager clientManager, DonationManager donationManager, InventoryManager inventoryManager, PetManager petManager, StatsManager statsManager,
public RewardManager(CoreClientManager clientManager, ServerStatusManager statusManager, DonationManager donationManager, InventoryManager inventoryManager, PetManager petManager, StatsManager statsManager,
int commonValueMin, int commonValueMax,
int uncommonValueMin, int uncommonValueMax,
int rareValueMin, int rareValueMax,
@ -55,6 +57,7 @@ public class RewardManager
}
_clientManager = clientManager;
_statusManager = statusManager;
_doubleGadgetValue = doubleGadgetValue;
_carlSpinner = carlSpinner;
@ -304,6 +307,7 @@ public class RewardManager
addReward(new UnknownPackageReward(donationManager, "Big Larry Morph", "Big Larry Morph",
new ItemStack(Material.SLIME_BALL), rarity, 10));
// Particles
addReward(new UnknownPackageReward(donationManager, "Shadow Walk Particles", "Shadow Walk",
new ItemStack(Material.LEATHER_BOOTS), rarity, 33));
@ -321,8 +325,6 @@ public class RewardManager
new ItemStack(Material.APPLE), rarity, 4));
addReward(new UnknownPackageReward(donationManager, "Heart Particles", "I Heart You",
new ItemStack(Material.BLAZE_POWDER), rarity, 2));
}
public void addReward(Reward reward)
@ -388,16 +390,20 @@ public class RewardManager
{
RewardRarity rarity = type.generateRarity(requiresUncommon);
//Dont give Rank Upgrade if already has Legend
//Dont give Rank Upgrade if already has Titan
if (rarity == RewardRarity.MYTHICAL)
{
if (!canGiveMythical || _clientManager.Get(player).GetRank().has(Rank.LEGEND))
if (canGiveMythical && type == RewardType.MythicalChest && !_clientManager.Get(player).GetRank().has(Rank.TITAN))
{
return new RankReward(_clientManager, _statusManager, 0, rarity);
}
else if (!canGiveMythical || _clientManager.Get(player).GetRank().has(Rank.LEGEND))
{
rarity = RewardRarity.LEGENDARY;
}
else
{
return new RankReward(_clientManager, 0, rarity);
return new RankReward(_clientManager, _statusManager, 0, rarity);
}
}
@ -427,6 +433,19 @@ public class RewardManager
}
}
if (possibleRewards.size() == 0)
{
// go again, ignore excluded
for (Reward treasure : treasureList)
{
if ((player == null || treasure.canGiveReward(player)))
{
possibleRewards.add(treasure);
totalWeight += treasure.getWeight();
}
}
}
if (totalWeight > 0)
{
int weight = _random.nextInt(totalWeight);

View File

@ -7,7 +7,7 @@ public enum RewardType
OldChest( 0, 0.05, 0.4, 5),
AncientChest( 0, 1, 4, 25),
MythicalChest( 0.4, 3, 12, 75),
MythicalChest( 0.3, 3, 12, 75),
SpinnerFiller( 0.1, 1, 4, 20),
SpinnerReal( 0.000001, 0.05, 0.4, 5);

View File

@ -9,8 +9,8 @@ import mineplex.core.common.util.Callback;
import mineplex.core.donation.DonationManager;
import mineplex.core.reward.Reward;
import mineplex.core.reward.RewardData;
import mineplex.core.reward.RewardManager;
import mineplex.core.reward.RewardRarity;
import mineplex.core.reward.RewardType;
public class CoinReward extends Reward
{
@ -35,7 +35,7 @@ public class CoinReward extends Reward
}
@Override
public RewardData giveRewardCustom(Player player)
public RewardData giveRewardCustom(Player player, RewardType rewardType)
{
int coinsToReward = _random.nextInt(_maxCoinCount - _minCoinCount) + _minCoinCount;

View File

@ -9,6 +9,7 @@ import org.bukkit.inventory.ItemStack;
import mineplex.core.reward.Reward;
import mineplex.core.reward.RewardData;
import mineplex.core.reward.RewardRarity;
import mineplex.core.reward.RewardType;
import mineplex.core.stats.StatsManager;
public class ExperienceReward extends Reward
@ -29,7 +30,7 @@ public class ExperienceReward extends Reward
}
@Override
protected RewardData giveRewardCustom(Player player)
protected RewardData giveRewardCustom(Player player, RewardType rewardType)
{
int experience = _random.nextInt(_maxExperience - _minExperience) + _minExperience;

View File

@ -10,8 +10,8 @@ import mineplex.core.common.util.Callback;
import mineplex.core.donation.DonationManager;
import mineplex.core.reward.Reward;
import mineplex.core.reward.RewardData;
import mineplex.core.reward.RewardManager;
import mineplex.core.reward.RewardRarity;
import mineplex.core.reward.RewardType;
public class GemReward extends Reward
{
@ -36,7 +36,7 @@ public class GemReward extends Reward
}
@Override
public RewardData giveRewardCustom(Player player)
public RewardData giveRewardCustom(Player player, RewardType rewardType)
{
int GemsToReward = _random.nextInt(_maxGemCount - _minGemCount) + _minGemCount;

View File

@ -8,8 +8,8 @@ import org.bukkit.inventory.ItemStack;
import mineplex.core.inventory.InventoryManager;
import mineplex.core.reward.Reward;
import mineplex.core.reward.RewardData;
import mineplex.core.reward.RewardManager;
import mineplex.core.reward.RewardRarity;
import mineplex.core.reward.RewardType;
/**
* Created by shaun on 14-09-12.
@ -44,7 +44,7 @@ public class InventoryReward extends Reward
}
@Override
public RewardData giveRewardCustom(Player player)
public RewardData giveRewardCustom(Player player, RewardType rewardType)
{
int amountToGive;
@ -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

@ -11,8 +11,9 @@ import mineplex.core.pet.PetManager;
import mineplex.core.pet.repository.token.PetChangeToken;
import mineplex.core.pet.repository.token.PetToken;
import mineplex.core.reward.RewardData;
import mineplex.core.reward.RewardManager;
import mineplex.core.reward.RewardRarity;
import mineplex.core.reward.RewardType;
import mineplex.playerCache.PlayerCache;
/**
* Created by shaun on 14-09-18.
@ -33,9 +34,15 @@ public class PetReward extends UnknownPackageReward
}
@Override
protected RewardData giveRewardCustom(Player player)
protected RewardData giveRewardCustom(Player player, RewardType rewardType)
{
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();
@ -44,12 +51,22 @@ public class PetReward extends UnknownPackageReward
petToken.PetType = token.PetType;
_petManager.GetRepository().AddPet(token);
// _petManager.addPetOwnerToQueue(player.getName(), _petEntity);
_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);
return getFakeRewardData(player);
}
@Override
public boolean canGiveReward(Player player)
{
if (DonationManager.Get(player.getName()) == null)
{
System.out.println("Could not give reward " + getPackageName() + " to Offline Player: " + player.getName());
return false;
}
return !_petManager.Get(player).GetPets().containsKey(_petEntity);
}
}

View File

@ -1,6 +1,6 @@
package mineplex.core.reward.rewards;
import java.util.UUID;
import java.util.Random;
import org.bukkit.Material;
import org.bukkit.entity.Player;
@ -8,35 +8,51 @@ import org.bukkit.inventory.ItemStack;
import mineplex.core.account.CoreClientManager;
import mineplex.core.common.Rank;
import mineplex.core.common.util.UUIDFetcher;
import mineplex.core.reward.Reward;
import mineplex.core.reward.RewardData;
import mineplex.core.reward.RewardRarity;
import mineplex.core.reward.RewardType;
import mineplex.core.status.ServerStatusManager;
import mineplex.core.titangiveaway.redis.TitanChestGiveawayMessage;
public class RankReward extends Reward
{
private Random _random;
private CoreClientManager _clientManager;
private ServerStatusManager _statusManager;
public RankReward(CoreClientManager clientManager, int weight, RewardRarity rarity)
public RankReward(CoreClientManager clientManager, ServerStatusManager statusManager, int weight, RewardRarity rarity)
{
super(rarity, weight);
_clientManager = clientManager;
_statusManager = statusManager;
_random = new Random();
}
@Override
public RewardData giveRewardCustom(Player player)
public RewardData giveRewardCustom(Player player, RewardType rewardType)
{
Rank rank = null;
if (_clientManager.Get(player).GetRank() == Rank.ALL) rank = Rank.ULTRA;
else if (_clientManager.Get(player).GetRank() == Rank.ULTRA) rank = Rank.HERO;
else if (_clientManager.Get(player).GetRank() == Rank.HERO) rank = Rank.LEGEND;
else if (rewardType == RewardType.MythicalChest && _clientManager.Get(player).GetRank() == Rank.LEGEND) rank = Rank.TITAN;
if (rewardType == RewardType.MythicalChest && _random.nextDouble() < 0.01) // 1 Percent
rank = Rank.TITAN;
if (rank == null)
return new RewardData(getRarity().getColor() + "Rank Upgrade Error", new ItemStack(Material.PAPER), getRarity());
_clientManager.Get(player).SetRank(rank);
_clientManager.Get(player).SetRank(rank, false);
_clientManager.getRepository().saveRank(null, player.getName(), player.getUniqueId(), rank, true);
if (rank == Rank.TITAN)
{
TitanChestGiveawayMessage message = new TitanChestGiveawayMessage(player.getName(), _statusManager.getCurrentServerName());
message.publish();
}
return new RewardData(getRarity().getColor() + rank.Name + " Rank", new ItemStack(Material.NETHER_STAR), getRarity());
}

View File

@ -6,15 +6,12 @@ import org.bukkit.inventory.ItemStack;
import mineplex.core.donation.DonationManager;
import mineplex.core.reward.Reward;
import mineplex.core.reward.RewardData;
import mineplex.core.reward.RewardManager;
import mineplex.core.reward.RewardRarity;
import mineplex.core.reward.RewardType;
/**
* Created by shaun on 14-09-12.
*/
public class UnknownPackageReward extends Reward
{
private DonationManager _donationManager;
protected DonationManager DonationManager;
private ItemStack _itemStack;
private String _name;
private String _packageName;
@ -22,16 +19,16 @@ public class UnknownPackageReward extends Reward
public UnknownPackageReward(DonationManager donationManager, String name, String packageName, ItemStack itemStack, RewardRarity rarity, int weight)
{
super(rarity, weight);
_donationManager = donationManager;
DonationManager = donationManager;
_name = name;
_packageName = packageName;
_itemStack = itemStack;
}
@Override
protected RewardData giveRewardCustom(Player player)
protected RewardData giveRewardCustom(Player player, RewardType rewardType)
{
_donationManager.PurchaseUnknownSalesPackage(null, player.getName(), _donationManager.getClientManager().Get(player).getAccountId(), _packageName, true, 0, true);
DonationManager.PurchaseUnknownSalesPackage(null, player.getName(), DonationManager.getClientManager().Get(player).getAccountId(), _packageName, true, 0, true);
return new RewardData(getRarity().getColor() + _name, _itemStack, getRarity());
}
@ -39,13 +36,13 @@ public class UnknownPackageReward extends Reward
@Override
public boolean canGiveReward(Player player)
{
if (_donationManager.Get(player.getName()) == null)
if (DonationManager.Get(player.getName()) == null)
{
System.out.println("Could not give reward " + _packageName + " to Offline Player: " + player.getName());
return false;
}
return !_donationManager.Get(player.getName()).OwnsUnknownPackage(_packageName);
return !DonationManager.Get(player.getName()).OwnsUnknownPackage(_packageName);
}
@Override
@ -69,7 +66,7 @@ public class UnknownPackageReward extends Reward
{
if (obj instanceof UnknownPackageReward)
{
return ((UnknownPackageReward) obj).getPackageName().equals(_packageName);
return _packageName.equals(((UnknownPackageReward) obj).getPackageName());
}
return false;
}

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,53 @@
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();
return;
}
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,129 @@
package mineplex.core.titangiveaway;
import java.util.Random;
import org.bukkit.entity.Player;
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.core.titangiveaway.redis.GiveawayMessageHandler;
import mineplex.core.titangiveaway.redis.TitanChestGiveawayHandler;
import mineplex.core.titangiveaway.redis.TitanChestGiveawayMessage;
import mineplex.core.titangiveaway.redis.TitanGiveawayMessage;
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));
ServerCommandManager.getInstance().registerCommandType("TitanChestGiveawayMessage", TitanChestGiveawayMessage.class, new TitanChestGiveawayHandler(_statusManager));
}
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, false);
_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,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;
}
}

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