Merge branch 'develop' of ssh://184.154.0.242:25565/min/mineplex into feature/player-data

This commit is contained in:
William Burns 2015-12-18 18:16:32 +00:00
commit c2e88c2794
72 changed files with 1701 additions and 543 deletions

View File

@ -51,13 +51,13 @@ public abstract class DnsMadeEasyApiCallBase
try try
{ {
String timeStamp = getServerTime(); String timeStamp = getServerTime();
SecretKeySpec keySpec = new SecretKeySpec("35bb3b97-3815-4b63-b60b-eb1882c07b40".getBytes(), "HmacSHA1"); SecretKeySpec keySpec = new SecretKeySpec("9041bc01-5cbc-49cf-ae09-a23b98350c62".getBytes(), "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1"); Mac mac = Mac.getInstance("HmacSHA1");
mac.init(keySpec); mac.init(keySpec);
byte[] hashBytes = mac.doFinal((timeStamp + "").getBytes()); byte[] hashBytes = mac.doFinal((timeStamp + "").getBytes());
Hex.encodeHexString(hashBytes); Hex.encodeHexString(hashBytes);
request.addHeader("x-dnsme-apiKey", "a9750980-b7df-4a7e-a047-2ade43628f0d"); request.addHeader("x-dnsme-apiKey", "2039c697-6ca9-412f-abda-0aef659a382a");
request.addHeader("x-dnsme-requestDate", timeStamp + ""); request.addHeader("x-dnsme-requestDate", timeStamp + "");
request.addHeader("x-dnsme-hmac", Hex.encodeHexString(hashBytes)); request.addHeader("x-dnsme-hmac", Hex.encodeHexString(hashBytes));
request.addHeader("Content-Type", "application/json"); request.addHeader("Content-Type", "application/json");

View File

@ -13,7 +13,7 @@
<classpathentry kind="var" path="REPO_DIR/Plugins/Libraries/jooq-3.5.2.jar"/> <classpathentry kind="var" path="REPO_DIR/Plugins/Libraries/jooq-3.5.2.jar"/>
<classpathentry kind="var" path="REPO_DIR/Plugins/Libraries/craftbukkit.jar"/> <classpathentry kind="var" path="REPO_DIR/Plugins/Libraries/craftbukkit.jar"/>
<classpathentry kind="var" path="REPO_DIR/Plugins/Libraries/NoCheatPlus.jar"/> <classpathentry kind="var" path="REPO_DIR/Plugins/Libraries/NoCheatPlus.jar"/>
<classpathentry combineaccessrules="false" kind="src" path="/Mineplex.Cache"/>
<classpathentry combineaccessrules="false" kind="src" path="/Mineplex.Core.Common"/> <classpathentry combineaccessrules="false" kind="src" path="/Mineplex.Core.Common"/>
<classpathentry combineaccessrules="false" kind="src" path="/Mineplex.Cache"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@ -46,7 +46,7 @@ public class AccountRepository extends RepositoryBase
public AccountRepository(JavaPlugin plugin, String webAddress) public AccountRepository(JavaPlugin plugin, String webAddress)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
_webAddress = webAddress; _webAddress = webAddress;
} }

View File

@ -2,6 +2,10 @@ package mineplex.core.achievement;
import java.util.List; import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import mineplex.core.account.CoreClientManager; import mineplex.core.account.CoreClientManager;
import mineplex.core.common.Rank; import mineplex.core.common.Rank;
import mineplex.core.common.util.C; import mineplex.core.common.util.C;
@ -10,10 +14,6 @@ import mineplex.core.game.GameDisplay;
import mineplex.core.stats.PlayerStats; import mineplex.core.stats.PlayerStats;
import mineplex.core.stats.StatsManager; import mineplex.core.stats.StatsManager;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
public enum AchievementCategory public enum AchievementCategory
{ {
GLOBAL("Global", null, GLOBAL("Global", null,
@ -109,7 +109,7 @@ public enum AchievementCategory
SUPER_PAINTBALL("Super Paintball", null, SUPER_PAINTBALL("Super Paintball", null,
new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED }, new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED },
Material.ENDER_PEARL, 0, GameCategory.ARCADE, null), Material.ENDER_PEARL, 0, GameCategory.ARCADE, "Sniper Kit"),
TURF_WARS("Turf Wars", null, TURF_WARS("Turf Wars", null,
new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED }, new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED },

View File

@ -33,7 +33,7 @@ public class AntiHackRepository
{ {
PreparedStatement preparedStatement = null; PreparedStatement preparedStatement = null;
try (Connection connection = DBPool.STATS_MINEPLEX.getConnection()) try (Connection connection = DBPool.getStats().getConnection())
{ {
preparedStatement = connection.prepareStatement(UPDATE_PLAYER_OFFENSES); preparedStatement = connection.prepareStatement(UPDATE_PLAYER_OFFENSES);

View File

@ -19,7 +19,7 @@ public class BenefitManagerRepository extends RepositoryBase
public BenefitManagerRepository(JavaPlugin plugin) public BenefitManagerRepository(JavaPlugin plugin)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
} }
@Override @Override

View File

@ -789,7 +789,7 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
{ {
try try
{ {
final int newTickets = DSL.using(DBPool.ACCOUNT, SQLDialect.MYSQL).update(Tables.bonus).set(Tables.bonus.tickets, Tables.bonus.tickets.add(tickets)). final int newTickets = DSL.using(DBPool.getAccount(), SQLDialect.MYSQL).update(Tables.bonus).set(Tables.bonus.tickets, Tables.bonus.tickets.add(tickets)).
where(Tables.bonus.accountId.eq(accountId)).returning(Tables.bonus.tickets).fetchOne().getTickets(); where(Tables.bonus.accountId.eq(accountId)).returning(Tables.bonus.tickets).fetchOne().getTickets();
runSync(new Runnable() runSync(new Runnable()
{ {

View File

@ -36,7 +36,7 @@ public class BonusRepository extends RepositoryBase
public BonusRepository(JavaPlugin plugin, BonusManager bonusManager, DonationManager donationManager) public BonusRepository(JavaPlugin plugin, BonusManager bonusManager, DonationManager donationManager)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
_manager = bonusManager; _manager = bonusManager;
_donationManager = donationManager; _donationManager = donationManager;
} }
@ -145,7 +145,7 @@ public class BonusRepository extends RepositoryBase
{ {
try try
{ {
DSLContext create = DSL.using(DBPool.ACCOUNT, SQLDialect.MYSQL); DSLContext create = DSL.using(DBPool.getAccount(), SQLDialect.MYSQL);
create.update(Tables.bonus).set(Tables.bonus.tickets, Tables.bonus.tickets.add(tickets)). create.update(Tables.bonus).set(Tables.bonus.tickets, Tables.bonus.tickets.add(tickets)).
where(Tables.bonus.accountId.eq(accountId)).execute(); where(Tables.bonus.accountId.eq(accountId)).execute();
final int newTickets = create.select(Tables.bonus.tickets).from(Tables.bonus).where(Tables.bonus.accountId.eq(accountId)).fetchOne().value1(); final int newTickets = create.select(Tables.bonus.tickets).from(Tables.bonus).where(Tables.bonus.accountId.eq(accountId)).fetchOne().value1();

View File

@ -24,7 +24,7 @@ public class BotSpamRepository extends RepositoryBase
public BotSpamRepository(JavaPlugin plugin) public BotSpamRepository(JavaPlugin plugin)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
} }
public ArrayList<SpamText> getSpamText() public ArrayList<SpamText> getSpamText()

View File

@ -35,7 +35,7 @@ public class CustomDataRepository extends RepositoryBase
public CustomDataRepository(JavaPlugin plugin, CoreClientManager clientManager, CustomDataManager customDataManager) public CustomDataRepository(JavaPlugin plugin, CoreClientManager clientManager, CustomDataManager customDataManager)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
_clientManager = clientManager; _clientManager = clientManager;
_customDataManager = customDataManager; _customDataManager = customDataManager;

View File

@ -1,16 +1,26 @@
package mineplex.core.database; package mineplex.core.database;
import javax.sql.DataSource; import javax.sql.DataSource;
import java.io.File;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.sql.Connection; import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.dbcp2.BasicDataSource; import org.apache.commons.dbcp2.BasicDataSource;
import mineplex.serverdata.redis.RedisConfig;
import mineplex.serverdata.servers.ConnectionData;
import mineplex.serverdata.servers.ConnectionData.ConnectionType;
public final class DBPool public final class DBPool
{ {
public static final DataSource ACCOUNT = openDataSource("jdbc:mysql://db.mineplex.com/Account", "MilitaryPolice", "CUPr6Wuw2Rus$qap"); private static DataSource ACCOUNT;
public static final DataSource QUEUE = openDataSource("jdbc:mysql://db.mineplex.com/Queue", "MilitaryPolice", "CUPr6Wuw2Rus$qap"); private static DataSource QUEUE;
public static final DataSource MINEPLEX = openDataSource("jdbc:mysql://db.mineplex.com:3306/Mineplex", "MilitaryPolice", "CUPr6Wuw2Rus$qap"); private static DataSource MINEPLEX;
public static final DataSource STATS_MINEPLEX = openDataSource("jdbc:mysql://sqlstats.mineplex.com:3306/Mineplex", "root", "tAbechAk3wR7tuTh"); private static DataSource STATS_MINEPLEX;
private static DataSource openDataSource(String url, String username, String password) private static DataSource openDataSource(String url, String username, String password)
{ {
@ -30,8 +40,86 @@ public final class DBPool
return source; return source;
} }
private DBPool() public static DataSource getAccount()
{ {
if (ACCOUNT == null)
loadDataSources();
return ACCOUNT;
}
public static DataSource getQueue()
{
if (QUEUE == null)
loadDataSources();
return QUEUE;
}
public static DataSource getMineplex()
{
if (MINEPLEX == null)
loadDataSources();
return MINEPLEX;
}
public static DataSource getStats()
{
if (STATS_MINEPLEX == null)
loadDataSources();
return STATS_MINEPLEX;
}
private static void loadDataSources()
{
try
{
File configFile = new File("database-config.dat");
if (configFile.exists())
{
List<String> lines = Files.readAllLines(configFile.toPath(), Charset.defaultCharset());
for (String line : lines)
{
deserializeConnection(line);
}
}
else
{
System.out.println("database-config.dat not found at " + configFile.toPath().toString());
}
}
catch (Exception exception)
{
exception.printStackTrace();
System.out.println("---Unable To Parse DBPOOL Configuration File---");
}
}
private static void deserializeConnection(String line)
{
String[] args = line.split(" ");
if (args.length == 4)
{
String dbSource = args[0];
String dbHost = args[1];
String userName = args[2];
String password = args[3];
System.out.println(dbSource + " " + dbHost + " " + userName + " " + password);
if (dbSource.toUpperCase().equalsIgnoreCase("ACCOUNT"))
ACCOUNT = openDataSource("jdbc:mysql://" + dbHost, userName, password);
else if (dbSource.toUpperCase().equalsIgnoreCase("QUEUE"))
QUEUE = openDataSource("jdbc:mysql://" + dbHost, userName, password);
else if (dbSource.toUpperCase().equalsIgnoreCase("MINEPLEX"))
MINEPLEX = openDataSource("jdbc:mysql://" + dbHost, userName, password);
else if (dbSource.toUpperCase().equalsIgnoreCase("STATS"))
STATS_MINEPLEX = openDataSource("jdbc:mysql://" + dbHost, userName, password);
}
} }
} }

View File

@ -68,7 +68,7 @@ public abstract class RepositoryBase implements Listener
protected DSLContext jooq() protected DSLContext jooq()
{ {
return DSL.using(DBPool.ACCOUNT, SQLDialect.MYSQL); return DSL.using(DBPool.getAccount(), SQLDialect.MYSQL);
} }
/** /**

View File

@ -37,7 +37,7 @@ public class DonationRepository extends RepositoryBase
public DonationRepository(JavaPlugin plugin, String webAddress) public DonationRepository(JavaPlugin plugin, String webAddress)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
_webAddress = webAddress; _webAddress = webAddress;
} }

View File

@ -17,7 +17,7 @@ public class EloRepository extends RepositoryBase
public EloRepository(JavaPlugin plugin) public EloRepository(JavaPlugin plugin)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
initialize(); initialize();
} }

View File

@ -37,7 +37,7 @@ public class FriendRepository extends RepositoryBase
public FriendRepository(JavaPlugin plugin) public FriendRepository(JavaPlugin plugin)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
_repository = new RedisDataRepository<PlayerStatus>(ServerManager.getMasterConnection(), ServerManager.getSlaveConnection(), _repository = new RedisDataRepository<PlayerStatus>(ServerManager.getMasterConnection(), ServerManager.getSlaveConnection(),
Region.currentRegion(), PlayerStatus.class, "playerStatus"); Region.currentRegion(), PlayerStatus.class, "playerStatus");

View File

@ -26,7 +26,7 @@ public class GiveawayRepository extends RepositoryBase
public GiveawayRepository(JavaPlugin plugin) public GiveawayRepository(JavaPlugin plugin)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
} }
public boolean canGiveaway(int accountId, String giveawayName, String cooldownName) public boolean canGiveaway(int accountId, String giveawayName, String cooldownName)

View File

@ -4,11 +4,14 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilPlayer;
import net.minecraft.server.v1_8_R3.DataWatcher; import net.minecraft.server.v1_8_R3.DataWatcher;
import net.minecraft.server.v1_8_R3.Packet; import net.minecraft.server.v1_8_R3.Packet;
import net.minecraft.server.v1_8_R3.PacketPlayOutEntity; import net.minecraft.server.v1_8_R3.PacketPlayOutEntity;
@ -16,8 +19,6 @@ import net.minecraft.server.v1_8_R3.PacketPlayOutEntityDestroy;
import net.minecraft.server.v1_8_R3.PacketPlayOutEntityMetadata; import net.minecraft.server.v1_8_R3.PacketPlayOutEntityMetadata;
import net.minecraft.server.v1_8_R3.PacketPlayOutEntityTeleport; import net.minecraft.server.v1_8_R3.PacketPlayOutEntityTeleport;
import net.minecraft.server.v1_8_R3.PacketPlayOutSpawnEntityLiving; import net.minecraft.server.v1_8_R3.PacketPlayOutSpawnEntityLiving;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilPlayer;
public class Hologram public class Hologram
{ {
@ -313,7 +314,7 @@ public class Hologram
*/ */
public Hologram removePlayer(Player player) public Hologram removePlayer(Player player)
{ {
return addPlayer(player.getName()); return removePlayer(player.getName());
} }
/** /**

View File

@ -17,7 +17,7 @@ public class IgnoreRepository extends RepositoryBase
public IgnoreRepository(JavaPlugin plugin) public IgnoreRepository(JavaPlugin plugin)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
} }
@Override @Override

View File

@ -29,7 +29,7 @@ public class InventoryRepository extends RepositoryBase
public InventoryRepository(JavaPlugin plugin) public InventoryRepository(JavaPlugin plugin)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
} }
@Override @Override

View File

@ -36,7 +36,7 @@ public class StatEventsRepository extends RepositoryBase
*/ */
public StatEventsRepository(JavaPlugin plugin) public StatEventsRepository(JavaPlugin plugin)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
} }
@Override @Override

View File

@ -268,7 +268,7 @@ public class NpcManager extends MiniPlugin
public Entity addNpc(Player player, EntityType entityType, double radius, boolean adult, String name, String entityMeta) throws SQLException public Entity addNpc(Player player, EntityType entityType, double radius, boolean adult, String name, String entityMeta) throws SQLException
{ {
try (Connection connection = DBPool.ACCOUNT.getConnection()) try (Connection connection = DBPool.getAccount().getConnection())
{ {
String helmet = itemStackToYaml(player.getInventory().getHelmet()); String helmet = itemStackToYaml(player.getInventory().getHelmet());
String chestplate = itemStackToYaml(player.getInventory().getChestplate()); String chestplate = itemStackToYaml(player.getInventory().getChestplate());
@ -386,7 +386,7 @@ public class NpcManager extends MiniPlugin
if (npc != null) if (npc != null)
{ {
try (Connection connection = DBPool.ACCOUNT.getConnection()) try (Connection connection = DBPool.getAccount().getConnection())
{ {
npc.getDatabaseRecord().attach(DSL.using(connection).configuration()); npc.getDatabaseRecord().attach(DSL.using(connection).configuration());
npc.getDatabaseRecord().delete(); npc.getDatabaseRecord().delete();
@ -493,7 +493,7 @@ public class NpcManager extends MiniPlugin
{ {
String serverType = getServerName(); String serverType = getServerName();
try (Connection connection = DBPool.ACCOUNT.getConnection()) try (Connection connection = DBPool.getAccount().getConnection())
{ {
Result<NpcsRecord> result = DSL.using(connection) Result<NpcsRecord> result = DSL.using(connection)
.selectFrom(Tables.npcs) .selectFrom(Tables.npcs)
@ -519,7 +519,7 @@ public class NpcManager extends MiniPlugin
{ {
String serverType = getServerName(); String serverType = getServerName();
try (Connection connection = DBPool.ACCOUNT.getConnection()) try (Connection connection = DBPool.getAccount().getConnection())
{ {
DSL.using(connection) DSL.using(connection)
.delete(Tables.npcs) .delete(Tables.npcs)

View File

@ -22,7 +22,7 @@ public class PetRepository extends RepositoryBase
public PetRepository(JavaPlugin plugin, String webAddress) public PetRepository(JavaPlugin plugin, String webAddress)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
_webAddress = webAddress; _webAddress = webAddress;
} }

View File

@ -29,7 +29,7 @@ public class PollRepository extends RepositoryBase
public PollRepository(JavaPlugin plugin) public PollRepository(JavaPlugin plugin)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
} }
@Override @Override

View File

@ -28,7 +28,7 @@ public class PreferencesRepository extends RepositoryBase
public PreferencesRepository(JavaPlugin plugin) public PreferencesRepository(JavaPlugin plugin)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
} }
@Override @Override

View File

@ -41,7 +41,7 @@ This will be used to determine if staff are handling
public ReportRepository(JavaPlugin plugin, String connectionString) public ReportRepository(JavaPlugin plugin, String connectionString)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
} }
@Override @Override

View File

@ -23,7 +23,7 @@ public class SpawnRepository extends RepositoryBase
public SpawnRepository(JavaPlugin plugin, String serverName) public SpawnRepository(JavaPlugin plugin, String serverName)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
_serverName = serverName; _serverName = serverName;
} }

View File

@ -32,7 +32,7 @@ public class StatsRepository extends RepositoryBase
public StatsRepository(JavaPlugin plugin) public StatsRepository(JavaPlugin plugin)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
} }
@Override @Override

View File

@ -24,7 +24,7 @@ public class TaskRepository extends RepositoryBase
public TaskRepository(JavaPlugin plugin) public TaskRepository(JavaPlugin plugin)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
} }
@Override @Override

View File

@ -20,7 +20,7 @@ public class TitanGiveawayRepository extends RepositoryBase
public TitanGiveawayRepository(JavaPlugin plugin) public TitanGiveawayRepository(JavaPlugin plugin)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
_titanCount = 0; _titanCount = 0;
} }

View File

@ -86,7 +86,7 @@ public class ClanRepository extends RepositoryBase
public ClanRepository(JavaPlugin plugin, String serverName, boolean isClansServer) public ClanRepository(JavaPlugin plugin, String serverName, boolean isClansServer)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
_serverName = serverName; _serverName = serverName;
_serverId = -1; _serverId = -1;

View File

@ -34,7 +34,7 @@ public class FieldRepository extends RepositoryBase
public FieldRepository(JavaPlugin plugin) public FieldRepository(JavaPlugin plugin)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
} }
public List<FieldBlockToken> getFieldBlocks(String server) public List<FieldBlockToken> getFieldBlocks(String server)

View File

@ -41,7 +41,7 @@ public class HubRepository
PreparedStatement preparedStatement = null; PreparedStatement preparedStatement = null;
HashMap<String, String> newsEntries = new HashMap<String, String>(); HashMap<String, String> newsEntries = new HashMap<String, String>();
try (Connection connection = DBPool.MINEPLEX.getConnection()) try (Connection connection = DBPool.getMineplex().getConnection())
{ {
preparedStatement = connection.prepareStatement(RETRIEVE_NEWS_ENTRIES); preparedStatement = connection.prepareStatement(RETRIEVE_NEWS_ENTRIES);
@ -91,7 +91,7 @@ public class HubRepository
int result = 0; int result = 0;
PreparedStatement preparedStatement = null; PreparedStatement preparedStatement = null;
try (Connection connection = DBPool.MINEPLEX.getConnection()) try (Connection connection = DBPool.getMineplex().getConnection())
{ {
preparedStatement = connection.prepareStatement(SET_NEWS_ENTRY); preparedStatement = connection.prepareStatement(SET_NEWS_ENTRY);
preparedStatement.setString(1, newsEntry); preparedStatement.setString(1, newsEntry);
@ -127,7 +127,7 @@ public class HubRepository
ResultSet resultSet = null; ResultSet resultSet = null;
PreparedStatement preparedStatement = null; PreparedStatement preparedStatement = null;
try (Connection connection = DBPool.MINEPLEX.getConnection()) try (Connection connection = DBPool.getMineplex().getConnection())
{ {
preparedStatement = connection.prepareStatement(RETRIEVE_MAX_NEWS_POSITION); preparedStatement = connection.prepareStatement(RETRIEVE_MAX_NEWS_POSITION);
resultSet = preparedStatement.executeQuery(); resultSet = preparedStatement.executeQuery();
@ -165,7 +165,7 @@ public class HubRepository
int maxPos = retrieveMaxNewsPosition(); int maxPos = retrieveMaxNewsPosition();
PreparedStatement preparedStatement = null; PreparedStatement preparedStatement = null;
try (Connection connection = DBPool.MINEPLEX.getConnection()) try (Connection connection = DBPool.getMineplex().getConnection())
{ {
preparedStatement = connection.prepareStatement(ADD_NEWS_ENTRY); preparedStatement = connection.prepareStatement(ADD_NEWS_ENTRY);
preparedStatement.setString(1, newsEntry); preparedStatement.setString(1, newsEntry);
@ -201,7 +201,7 @@ public class HubRepository
int maxPos = retrieveMaxNewsPosition(); int maxPos = retrieveMaxNewsPosition();
PreparedStatement preparedStatement = null; PreparedStatement preparedStatement = null;
try (Connection connection = DBPool.MINEPLEX.getConnection()) try (Connection connection = DBPool.getMineplex().getConnection())
{ {
//preparedStatement = connection.prepareStatement(DELETE_RECALC_NEWS_ENTRY); //preparedStatement = connection.prepareStatement(DELETE_RECALC_NEWS_ENTRY);
preparedStatement = connection.prepareStatement(DELETE_NEWS_ENTRY); preparedStatement = connection.prepareStatement(DELETE_NEWS_ENTRY);

View File

@ -21,7 +21,7 @@ public class MailRepository extends RepositoryBase
public MailRepository(JavaPlugin plugin, MailManager manager) public MailRepository(JavaPlugin plugin, MailManager manager)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
_manager = manager; _manager = manager;
} }

View File

@ -36,7 +36,7 @@ public class QueueRepository
{ {
PreparedStatement preparedStatement = null; PreparedStatement preparedStatement = null;
try (Connection connection = DBPool.QUEUE.getConnection()) try (Connection connection = DBPool.getQueue().getConnection())
{ {
preparedStatement = connection.prepareStatement(DELETE_QUEUE_RECORD); preparedStatement = connection.prepareStatement(DELETE_QUEUE_RECORD);
@ -71,7 +71,7 @@ public class QueueRepository
{ {
PreparedStatement preparedStatement = null; PreparedStatement preparedStatement = null;
try (Connection connection = DBPool.QUEUE.getConnection()) try (Connection connection = DBPool.getQueue().getConnection())
{ {
preparedStatement = connection.prepareStatement(SAVE_STATE_VALUE); preparedStatement = connection.prepareStatement(SAVE_STATE_VALUE);
preparedStatement.setString(1, matchStatus.State); preparedStatement.setString(1, matchStatus.State);
@ -108,7 +108,7 @@ public class QueueRepository
PreparedStatement preparedStatement = null; PreparedStatement preparedStatement = null;
PlayerMatchStatus matchStatus = new PlayerMatchStatus(); PlayerMatchStatus matchStatus = new PlayerMatchStatus();
try (Connection connection = DBPool.QUEUE.getConnection()) try (Connection connection = DBPool.getQueue().getConnection())
{ {
preparedStatement = connection.prepareStatement(INSERT_ACCOUNT, Statement.RETURN_GENERATED_KEYS); preparedStatement = connection.prepareStatement(INSERT_ACCOUNT, Statement.RETURN_GENERATED_KEYS);
preparedStatement.setString(1, playerList); preparedStatement.setString(1, playerList);
@ -165,7 +165,7 @@ public class QueueRepository
PreparedStatement preparedStatement = null; PreparedStatement preparedStatement = null;
PlayerMatchStatus matchStatus = null; PlayerMatchStatus matchStatus = null;
try (Connection connection = DBPool.QUEUE.getConnection()) try (Connection connection = DBPool.getQueue().getConnection())
{ {
preparedStatement = connection.prepareStatement(RETRIEVE_MATCH_STATUS); preparedStatement = connection.prepareStatement(RETRIEVE_MATCH_STATUS);
preparedStatement.setInt(1, id); preparedStatement.setInt(1, id);
@ -220,7 +220,7 @@ public class QueueRepository
ResultSet resultSet = null; ResultSet resultSet = null;
PreparedStatement preparedStatement = null; PreparedStatement preparedStatement = null;
try (Connection connection = DBPool.QUEUE.getConnection()) try (Connection connection = DBPool.getQueue().getConnection())
{ {
preparedStatement = connection.prepareStatement(RETRIEVE_OTHER_MATCH_STATUS); preparedStatement = connection.prepareStatement(RETRIEVE_OTHER_MATCH_STATUS);
preparedStatement.setInt(1, matchStatus.AssignedMatch); preparedStatement.setInt(1, matchStatus.AssignedMatch);

View File

@ -3,8 +3,6 @@ package mineplex.minecraft.game.core.damage;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import mineplex.core.common.util.C;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
@ -15,6 +13,8 @@ import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import mineplex.core.common.util.C;
public class CustomDamageEvent extends Event implements Cancellable public class CustomDamageEvent extends Event implements Cancellable
{ {
private static final HandlerList handlers = new HandlerList(); private static final HandlerList handlers = new HandlerList();
@ -43,6 +43,7 @@ public class CustomDamageEvent extends Event implements Cancellable
private boolean _knockback = true; private boolean _knockback = true;
private boolean _damageeBrute = false; private boolean _damageeBrute = false;
private boolean _damageToLevel = true; private boolean _damageToLevel = true;
private boolean _arrowShow = true;
public CustomDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile projectile, Location knockbackOrigin, public CustomDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile projectile, Location knockbackOrigin,
DamageCause cause, double damage, boolean knockback, boolean ignoreRate, boolean ignoreArmor, String initialSource, DamageCause cause, double damage, boolean knockback, boolean ignoreRate, boolean ignoreArmor, String initialSource,
@ -168,6 +169,16 @@ public class CustomDamageEvent extends Event implements Cancellable
return _projectile; return _projectile;
} }
public void setShowArrows(boolean show)
{
_arrowShow = show;
}
public boolean getShowArrows()
{
return _arrowShow;
}
public DamageCause GetCause() public DamageCause GetCause()
{ {
return _eventCause; return _eventCause;

View File

@ -378,7 +378,7 @@ public class DamageManager extends MiniPlugin
event.GetDamageeEntity().playEffect(EntityEffect.HURT); event.GetDamageeEntity().playEffect(EntityEffect.HURT);
//Sticky Arrow //Sticky Arrow
if (event.GetCause() == DamageCause.PROJECTILE && event.GetProjectile() != null && event.GetProjectile() instanceof Arrow) if (event.GetCause() == DamageCause.PROJECTILE && event.GetProjectile() != null && event.GetProjectile() instanceof Arrow && event.getShowArrows())
((CraftLivingEntity)event.GetDamageeEntity()).getHandle().o(((CraftLivingEntity)event.GetDamageeEntity()).getHandle().bv() + 1); ((CraftLivingEntity)event.GetDamageeEntity()).getHandle().o(((CraftLivingEntity)event.GetDamageeEntity()).getHandle().bv() + 1);
//Knockback //Knockback

View File

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Mineplex.Cache</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@ -406,9 +406,13 @@ public class ServerMonitor
if (deadServer.getUptime() <= 10 || ignoreServer(deadServer.getGroup())) if (deadServer.getUptime() <= 10 || ignoreServer(deadServer.getGroup()))
continue; continue;
try
{
if (_count == 0 || deadServers.contains(deadServer.getName())) if (_count == 0 || deadServers.contains(deadServer.getName()))
{ {
if (_count != 0)
copyServerLog(deadServer); copyServerLog(deadServer);
killServer(deadServer.getName(), deadServer.getPublicAddress(), deadServer.getPlayerCount(), "[KILLED] [DEAD] " + deadServer.getName() + ":" + deadServer.getPublicAddress(), true); killServer(deadServer.getName(), deadServer.getPublicAddress(), deadServer.getPlayerCount(), "[KILLED] [DEAD] " + deadServer.getName() + ":" + deadServer.getPublicAddress(), true);
handleUserServerGroup(_serverGroupMap.get(deadServer.getGroup())); handleUserServerGroup(_serverGroupMap.get(deadServer.getGroup()));
@ -432,6 +436,12 @@ public class ServerMonitor
_delayedKill.add(deadServer.getName()); _delayedKill.add(deadServer.getName());
} }
} }
catch (Exception exception)
{
log("[ERROR] : Trying to delete " + deadServer.getName() + ":" + deadServer.getPublicAddress());
exception.printStackTrace();
}
}
} }
private static void handleUserServerGroup(ServerGroup serverGroup) private static void handleUserServerGroup(ServerGroup serverGroup)

View File

@ -105,6 +105,7 @@ public class CustomerSupport extends MiniPlugin
int oldChestsReceived = 0; int oldChestsReceived = 0;
int ancientChestsReceived = 0; int ancientChestsReceived = 0;
int mythicalChestsReceived = 0; int mythicalChestsReceived = 0;
int winterChestsReceived = 0;
for (CoinTransactionToken transaction : donor.getCoinTransactions()) for (CoinTransactionToken transaction : donor.getCoinTransactions())
{ {
@ -150,12 +151,24 @@ public class CustomerSupport extends MiniPlugin
} }
} }
if (transaction.SalesPackageName.startsWith("Winter Chest"))
{
if (transaction.Coins == 0 && transaction.Gems == 0)
{
if (transaction.SalesPackageName.split(" ").length == 3)
winterChestsReceived += Integer.parseInt(transaction.SalesPackageName.split(" ")[2]);
else if (transaction.SalesPackageName.split(" ").length == 2)
winterChestsReceived += 1;
}
}
} }
caller.sendMessage(C.cBlue + "Enjin Coin Total Received : " + C.cYellow + enjinCoinsReceived); caller.sendMessage(C.cBlue + "Enjin Coin Total Received : " + C.cYellow + enjinCoinsReceived);
caller.sendMessage(C.cBlue + "Old Chests Received : " + C.cYellow + oldChestsReceived); caller.sendMessage(C.cBlue + "Old Chests Received : " + C.cYellow + oldChestsReceived);
caller.sendMessage(C.cBlue + "Ancient Chests Received : " + C.cYellow + ancientChestsReceived); caller.sendMessage(C.cBlue + "Ancient Chests Received : " + C.cYellow + ancientChestsReceived);
caller.sendMessage(C.cBlue + "Mythical Chests Received : " + C.cYellow + mythicalChestsReceived); caller.sendMessage(C.cBlue + "Mythical Chests Received : " + C.cYellow + mythicalChestsReceived);
caller.sendMessage(C.cBlue + "Winter Chests Received : " + C.cYellow + winterChestsReceived);
caller.sendMessage(C.cDGreen + C.Strike + "============================================="); caller.sendMessage(C.cDGreen + C.Strike + "=============================================");
_salesPackageManager.displaySalesPackages(caller, playerName); _salesPackageManager.displaySalesPackages(caller, playerName);

View File

@ -179,7 +179,7 @@ public class VotifierManager extends MiniPlugin
private void awardBonus(final String playerName, final UUID uuid, final Callback<Integer> onComplete) private void awardBonus(final String playerName, final UUID uuid, final Callback<Integer> onComplete)
{ {
DSLContext create = DSL.using(DBPool.ACCOUNT, SQLDialect.MYSQL); DSLContext create = DSL.using(DBPool.getAccount(), SQLDialect.MYSQL);
Record1<Integer> idRecord = create.select(Tables.accounts.id).from(Tables.accounts).where(Tables.accounts.uuid.eq(uuid.toString())).fetchOne(); Record1<Integer> idRecord = create.select(Tables.accounts.id).from(Tables.accounts).where(Tables.accounts.uuid.eq(uuid.toString())).fetchOne();
if (idRecord != null) if (idRecord != null)

View File

@ -6,6 +6,39 @@ import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.Map.Entry; import java.util.Map.Entry;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.Sound;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.HandlerList;
import org.bukkit.event.block.BlockBurnEvent;
import org.bukkit.event.block.BlockFadeEvent;
import org.bukkit.event.block.BlockSpreadEvent;
import org.bukkit.event.block.LeavesDecayEvent;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerResourcePackStatusEvent;
import org.bukkit.event.player.PlayerResourcePackStatusEvent.Status;
import org.bukkit.event.server.ServerListPingEvent;
import org.bukkit.potion.PotionEffect;
import org.bukkit.util.Vector;
import com.google.common.base.Objects;
import mineplex.core.MiniPlugin; import mineplex.core.MiniPlugin;
import mineplex.core.account.CoreClientManager; import mineplex.core.account.CoreClientManager;
import mineplex.core.achievement.AchievementManager; import mineplex.core.achievement.AchievementManager;
@ -40,7 +73,6 @@ import mineplex.core.hologram.HologramManager;
import mineplex.core.inventory.InventoryManager; import mineplex.core.inventory.InventoryManager;
import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.movement.Movement; import mineplex.core.movement.Movement;
import mineplex.core.notifier.NotificationManager;
import mineplex.core.npc.NpcManager; import mineplex.core.npc.NpcManager;
import mineplex.core.packethandler.PacketHandler; import mineplex.core.packethandler.PacketHandler;
import mineplex.core.party.PartyManager; import mineplex.core.party.PartyManager;
@ -99,6 +131,7 @@ import nautilus.game.arcade.managers.GameManager;
import nautilus.game.arcade.managers.GamePlayerManager; import nautilus.game.arcade.managers.GamePlayerManager;
import nautilus.game.arcade.managers.GameSpectatorManager; import nautilus.game.arcade.managers.GameSpectatorManager;
import nautilus.game.arcade.managers.GameStatManager; import nautilus.game.arcade.managers.GameStatManager;
import nautilus.game.arcade.managers.GameTestingManager;
import nautilus.game.arcade.managers.GameTournamentManager; import nautilus.game.arcade.managers.GameTournamentManager;
import nautilus.game.arcade.managers.GameWorldManager; import nautilus.game.arcade.managers.GameWorldManager;
import nautilus.game.arcade.managers.HolidayManager; import nautilus.game.arcade.managers.HolidayManager;
@ -107,39 +140,6 @@ import nautilus.game.arcade.managers.MiscManager;
import nautilus.game.arcade.player.ArcadePlayer; import nautilus.game.arcade.player.ArcadePlayer;
import nautilus.game.arcade.shop.ArcadeShop; import nautilus.game.arcade.shop.ArcadeShop;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.Sound;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.HandlerList;
import org.bukkit.event.block.BlockBurnEvent;
import org.bukkit.event.block.BlockFadeEvent;
import org.bukkit.event.block.BlockSpreadEvent;
import org.bukkit.event.block.LeavesDecayEvent;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerResourcePackStatusEvent;
import org.bukkit.event.player.PlayerResourcePackStatusEvent.Status;
import org.bukkit.event.server.ServerListPingEvent;
import org.bukkit.potion.PotionEffect;
import org.bukkit.util.Vector;
import com.google.common.base.Objects;
public class ArcadeManager extends MiniPlugin implements IRelation public class ArcadeManager extends MiniPlugin implements IRelation
{ {
// Modules // Modules
@ -303,6 +303,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
_idleManager = new IdleManager(this); _idleManager = new IdleManager(this);
TitanGiveawayManager titanGiveaway = new TitanGiveawayManager(getPlugin(), clientManager, serverStatusManager); TitanGiveawayManager titanGiveaway = new TitanGiveawayManager(getPlugin(), clientManager, serverStatusManager);
new HolidayManager(this, titanGiveaway); new HolidayManager(this, titanGiveaway);
new GameTestingManager(this);
// Game Addons // Game Addons
new CompassAddon(plugin, this); new CompassAddon(plugin, this);

View File

@ -5,14 +5,15 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilPlayer;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.updater.UpdateType; import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent; import mineplex.core.updater.event.UpdateEvent;
import mineplex.minecraft.game.core.damage.CustomDamageEvent; import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType; import nautilus.game.arcade.GameType;
import nautilus.game.arcade.game.SoloGame; import nautilus.game.arcade.game.SoloGame;
import nautilus.game.arcade.game.games.baconbrawl.kits.*; import nautilus.game.arcade.game.games.baconbrawl.kits.KitMamaPig;
import nautilus.game.arcade.game.games.baconbrawl.kits.KitPig;
import nautilus.game.arcade.game.games.baconbrawl.kits.KitSheepPig;
import nautilus.game.arcade.kit.Kit; import nautilus.game.arcade.kit.Kit;
public class BaconBrawl extends SoloGame public class BaconBrawl extends SoloGame
@ -34,9 +35,9 @@ public class BaconBrawl extends SoloGame
"Last pig in the arena wins!" "Last pig in the arena wins!"
}); });
this.DamageTeamSelf = true; DamageTeamSelf = true;
this.HungerSet = 20; HungerSet = 20;
this.PrepareFreeze = false; PrepareFreeze = false;
} }
@EventHandler @EventHandler

View File

@ -11,7 +11,6 @@ import org.bukkit.event.EventPriority;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import mineplex.core.common.util.C; import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilPlayer;
import mineplex.core.disguise.disguises.DisguisePig; import mineplex.core.disguise.disguises.DisguisePig;
import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.itemstack.ItemStackFactory;

View File

@ -13,7 +13,6 @@ import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.KitAvailability; import nautilus.game.arcade.kit.KitAvailability;
import nautilus.game.arcade.kit.Perk; import nautilus.game.arcade.kit.Perk;
import nautilus.game.arcade.kit.perks.PerkBodySlam; import nautilus.game.arcade.kit.perks.PerkBodySlam;
import nautilus.game.arcade.kit.perks.PerkJump;
public class KitPig extends Kit public class KitPig extends Kit
{ {

View File

@ -1,6 +1,5 @@
package nautilus.game.arcade.game.games.baconbrawl.kits; package nautilus.game.arcade.game.games.baconbrawl.kits;
import org.bukkit.ChatColor;
import org.bukkit.DyeColor; import org.bukkit.DyeColor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;

View File

@ -0,0 +1,6 @@
package nautilus.game.arcade.game.games.bridge;
public class BattleCryManager
{
}

View File

@ -26,6 +26,7 @@ public class BridgePart
Velocity = velocity; Velocity = velocity;
} }
@SuppressWarnings("deprecation")
public boolean Update() public boolean Update()
{ {
if (!Entity.isValid()) if (!Entity.isValid())

View File

@ -4,12 +4,55 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.Effect;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.EnderPearl;
import org.bukkit.entity.Player;
import org.bukkit.entity.Snowball;
import org.bukkit.entity.ThrownPotion;
import org.bukkit.event.Cancellable;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityRegainHealthEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerInteractAtEntityEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scoreboard.NameTagVisibility;
import org.bukkit.scoreboard.Team;
import org.bukkit.util.Vector;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F; import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilServer;
import mineplex.core.hologram.Hologram.HologramTarget;
import mineplex.core.recharge.Recharge;
import mineplex.core.updater.UpdateType; import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent; import mineplex.core.updater.event.UpdateEvent;
import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.core.condition.Condition.ConditionType;
@ -21,106 +64,51 @@ import nautilus.game.arcade.events.PlayerPrepareTeleportEvent;
import nautilus.game.arcade.game.GameTeam; import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.GameTeam.PlayerState; import nautilus.game.arcade.game.GameTeam.PlayerState;
import nautilus.game.arcade.game.TeamGame; import nautilus.game.arcade.game.TeamGame;
import nautilus.game.arcade.game.games.paintball.events.PaintballEvent;
import nautilus.game.arcade.game.games.paintball.events.ReviveEvent;
import nautilus.game.arcade.game.games.paintball.kits.KitMachineGun; import nautilus.game.arcade.game.games.paintball.kits.KitMachineGun;
import nautilus.game.arcade.game.games.paintball.kits.KitRifle; import nautilus.game.arcade.game.games.paintball.kits.KitRifle;
import nautilus.game.arcade.game.games.paintball.kits.KitShotgun; import nautilus.game.arcade.game.games.paintball.kits.KitShotgun;
import nautilus.game.arcade.game.games.paintball.kits.KitSniper;
import nautilus.game.arcade.game.games.paintball.trackers.KillingSpreeTracker;
import nautilus.game.arcade.game.games.paintball.trackers.LastStandStatTracker;
import nautilus.game.arcade.game.games.paintball.trackers.MedicStatTracker;
import nautilus.game.arcade.kit.Kit; import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.stats.KillFastStatTracker;
import nautilus.game.arcade.stats.LastStandStatTracker;
import nautilus.game.arcade.stats.MedicStatTracker;
import nautilus.game.arcade.stats.WinFastStatTracker; import nautilus.game.arcade.stats.WinFastStatTracker;
import nautilus.game.arcade.stats.WinWithoutLosingTeammateStatTracker; import nautilus.game.arcade.stats.WinWithoutLosingTeammateStatTracker;
import net.minecraft.server.v1_8_R3.PacketPlayOutEntityDestroy;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.Effect;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
import org.bukkit.entity.EnderPearl;
import org.bukkit.entity.HumanEntity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Snowball;
import org.bukkit.entity.ThrownPotion;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityRegainHealthEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.util.Vector;
public class Paintball extends TeamGame public class Paintball extends TeamGame
{ {
public static class ReviveEvent extends PlayerEvent private HashMap<Player, PlayerCopyPaintball> _doubles = new HashMap<Player, PlayerCopyPaintball>();
{
private static final HandlerList handlers = new HandlerList();
public static HandlerList getHandlerList()
{
return handlers;
}
@Override
public HandlerList getHandlers()
{
return getHandlerList();
}
private final Player _revivedPlayer;
public ReviveEvent(Player who, Player revivedPlayer)
{
super(who);
_revivedPlayer = revivedPlayer;
}
public Player getRevivedPlayer()
{
return _revivedPlayer;
}
}
private HashMap<Player, PlayerCopy> _doubles = new HashMap<Player, PlayerCopy>();
@SuppressWarnings("unchecked")
public Paintball(ArcadeManager manager) public Paintball(ArcadeManager manager)
{ {
super(manager, GameType.Paintball, super(manager, GameType.Paintball, new Kit[]
new Kit[]
{ {
new KitRifle(manager), new KitRifle(manager),
new KitShotgun(manager), new KitShotgun(manager),
new KitMachineGun(manager), new KitMachineGun(manager),
}, new KitSniper(manager),
new String[] }, new String[]
{ {
"Shoot enemies to paint them", "Shoot enemies to paint them",
"Revive/heal with Water Bombs", "Revive/heal with Water Bombs",
"Last team alive wins!" "Last team alive wins!"
}); });
this.StrictAntiHack = true; StrictAntiHack = true;
this.HungerSet = 20; HungerSet = 20;
InventoryClick = false;
TeamArmorHotbar = true;
registerStatTrackers( registerStatTrackers(
new KillFastStatTracker(this, 4, 5, "KillingSpree"), new KillingSpreeTracker(this),
new WinWithoutLosingTeammateStatTracker(this, "FlawlessVictory"), new WinWithoutLosingTeammateStatTracker(this, "FlawlessVictory"),
new MedicStatTracker(this), new MedicStatTracker(this),
new WinFastStatTracker(this, 30, "Speedrunner"), new WinFastStatTracker(this, 30, "Speedrunner"),
@ -141,6 +129,14 @@ public class Paintball extends TeamGame
this.GetTeamList().get(1).SetName("Nether"); this.GetTeamList().get(1).SetName("Nether");
} }
@EventHandler
public void onNameTag(GameStateChangeEvent event)
{
if (event.GetState() == GameState.Prepare)
for (Team team : Scoreboard.GetScoreboard().getTeams())
team.setNameTagVisibility(NameTagVisibility.HIDE_FOR_OTHER_TEAMS);
}
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
public void ColorArmor(PlayerPrepareTeleportEvent event) public void ColorArmor(PlayerPrepareTeleportEvent event)
{ {
@ -161,46 +157,62 @@ public class Paintball extends TeamGame
event.setCancelled(true); event.setCancelled(true);
} }
@SuppressWarnings("deprecation")
@EventHandler @EventHandler
public void Paint(ProjectileHitEvent event) public void Paint(final ProjectileHitEvent event)
{ {
// Fixed projectile wool painting in waiting lobby.
if (IsLive() || GetState() == GameState.End) if (IsLive() || GetState() == GameState.End)
{ {
if (event.getEntity() instanceof ThrownPotion) if (event.getEntity() instanceof ThrownPotion)
return; return;
byte color = 3; final byte color = (byte) (event.getEntity() instanceof EnderPearl || (event.getEntity() instanceof Arrow && event.getEntity().hasMetadata("color") && ChatColor.values()[event.getEntity().getMetadata("color").get(0).asInt()] == ChatColor.RED) ? 14 : 3);
if (event.getEntity() instanceof EnderPearl)
color = 14;
Location loc = event.getEntity().getLocation().add(event.getEntity().getVelocity()); event.getEntity().setVelocity(event.getEntity().getVelocity().normalize().multiply(1.2));
PacketPlayOutEntityDestroy destroy = new PacketPlayOutEntityDestroy(new int[]{event.getEntity().getEntityId()});
for (Player player : UtilServer.getPlayers())
UtilPlayer.sendPacket(player, destroy);
Manager.runSyncLater(new Runnable() // Stupid thing I have to do to make sure the arrow's location is accounted for. Stupid mojang. - Myst
{
@Override
public void run()
{
Location loc = event.getEntity().getLocation();
// loc.add(event.getEntity().getVelocity().clone().normalize().multiply(.5));
for (Block block : UtilBlock.getInRadius(loc, 1.5d).keySet()) for (Block block : UtilBlock.getInRadius(loc, 1.5d).keySet())
{ {
if (block.getType() != Material.WOOL && block.getType() != Material.STAINED_CLAY) if (block.getType() != Material.WOOL && block.getType() != Material.STAINED_CLAY && block.getType() != Material.HARD_CLAY)
continue; continue;
if (block.getType() == Material.HARD_CLAY)
block.setType(Material.STAINED_CLAY);
block.setData(color); block.setData(color);
} }
if (color == 3) loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 8); if (color == 3) loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 8);
else loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 10); else loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 10);
event.getEntity().remove();
}
}, 0);
} }
} }
@EventHandler @EventHandler
public void PlayerQuit(PlayerQuitEvent event) public void onQuit(PlayerQuitEvent event)
{ {
Player player = event.getPlayer(); Player player = event.getPlayer();
if (_doubles.containsKey(player)) if (_doubles.containsKey(player))
{ {
PlayerCopy copy = _doubles.get(player); PlayerCopyPaintball copy = _doubles.remove(player);
copy.GetEntity().remove(); copy.GetEntity().remove();
_doubles.remove(player); copy.GetHolo().stop();
copy.GetSaveMe().stop();
} }
} }
@ -216,7 +228,7 @@ public class Paintball extends TeamGame
event.SetCancelled("No Projectile"); event.SetCancelled("No Projectile");
} }
@EventHandler @EventHandler(priority = EventPriority.LOW)
public void PaintballDamage(CustomDamageEvent event) public void PaintballDamage(CustomDamageEvent event)
{ {
if (!IsLive()) if (!IsLive())
@ -225,7 +237,7 @@ public class Paintball extends TeamGame
if (event.GetProjectile() == null) if (event.GetProjectile() == null)
return; return;
if (!(event.GetProjectile() instanceof Snowball) && !(event.GetProjectile() instanceof EnderPearl)) if (!(event.GetProjectile() instanceof Snowball) && !(event.GetProjectile() instanceof EnderPearl) && !(event.GetProjectile() instanceof Arrow))
return; return;
//Negate //Negate
@ -235,6 +247,8 @@ public class Paintball extends TeamGame
event.AddMod("Paintball", "Paintball", 2, true); event.AddMod("Paintball", "Paintball", 2, true);
event.AddKnockback("Paintball", 2); event.AddKnockback("Paintball", 2);
event.setShowArrows(false);
Player damagee = event.GetDamageePlayer(); Player damagee = event.GetDamageePlayer();
if (damagee == null) if (damagee == null)
return; return;
@ -262,6 +276,13 @@ public class Paintball extends TeamGame
{ {
count = 3; count = 3;
} }
if (GetKit(damager) instanceof KitSniper && event.GetProjectile() instanceof Arrow)
{
count = ((KitSniper) GetKit(damager)).getPaintDamage((Arrow) event.GetProjectile());
if (count == -1)
count = 1;
}
} }
//Out //Out
@ -271,12 +292,14 @@ public class Paintball extends TeamGame
UtilPlayer.message(player, damageeTeam.GetColor() + damagee.getName() + ChatColor.RESET + " was painted by " + UtilPlayer.message(player, damageeTeam.GetColor() + damagee.getName() + ChatColor.RESET + " was painted by " +
damagerTeam.GetColor() + damager.getName() + ChatColor.RESET + "!"); damagerTeam.GetColor() + damager.getName() + ChatColor.RESET + "!");
PlayerOut(damagee); PlayerOut(damagee, damager);
AddGems(damager, 2, "Kills", true, true); AddGems(damager, 2, "Kills", true, true);
AddStat(damager, "Kills", 1, false, false); AddStat(damager, "Kills", 1, false, false);
AddStat(damagee, "Deaths", 1, false, false); AddStat(damagee, "Deaths", 1, false, false);
Bukkit.getPluginManager().callEvent(new PaintballEvent(damagee, damager));
} }
//Hit Sound //Hit Sound
@ -288,15 +311,9 @@ public class Paintball extends TeamGame
@EventHandler @EventHandler
public void ArmorRemoveCancel(InventoryClickEvent event) public void ArmorRemoveCancel(InventoryClickEvent event)
{ {
HumanEntity player = event.getWhoClicked(); if (!IsAlive(event.getWhoClicked()))
// Fixed armor being taken off while spectating after being painted.
if (!IsAlive(player))
{
event.setCancelled(true); event.setCancelled(true);
} }
}
public boolean Color(Player player, int amount) public boolean Color(Player player, int amount)
{ {
@ -331,7 +348,7 @@ public class Paintball extends TeamGame
return nonColored.isEmpty(); return nonColored.isEmpty();
} }
public void PlayerOut(Player player) public void PlayerOut(Player player, Player killer)
{ {
//State //State
SetPlayerState(player, PlayerState.OUT); SetPlayerState(player, PlayerState.OUT);
@ -341,6 +358,8 @@ public class Paintball extends TeamGame
Manager.GetCondition().Factory().Blind("Hit", player, player, 1.5, 0, false, false, false); Manager.GetCondition().Factory().Blind("Hit", player, player, 1.5, 0, false, false, false);
Manager.GetCondition().Factory().Cloak("Hit", player, player, 9999, false, false); Manager.GetCondition().Factory().Cloak("Hit", player, player, 9999, false, false);
_doubles.put(player, new PlayerCopyPaintball(this, player, killer, GetTeam(player).GetColor()));
//Settings //Settings
player.setAllowFlight(true); player.setAllowFlight(true);
player.setFlying(true); player.setFlying(true);
@ -348,8 +367,6 @@ public class Paintball extends TeamGame
((CraftPlayer)player).getHandle().k = false; ((CraftPlayer)player).getHandle().k = false;
UtilAction.velocity(player, new Vector(0,1.2,0)); UtilAction.velocity(player, new Vector(0,1.2,0));
_doubles.put(player, new PlayerCopy(this, player, GetTeam(player).GetColor()));
} }
// @EventHandler // @EventHandler
@ -402,10 +419,10 @@ public class Paintball extends TeamGame
if (throwerTeam == null) return; if (throwerTeam == null) return;
//Revive //Revive
Iterator<PlayerCopy> copyIterator = _doubles.values().iterator(); Iterator<PlayerCopyPaintball> copyIterator = _doubles.values().iterator();
while (copyIterator.hasNext()) while (copyIterator.hasNext())
{ {
PlayerCopy copy = copyIterator.next(); PlayerCopyPaintball copy = copyIterator.next();
GameTeam otherTeam = GetTeam(copy.GetPlayer()); GameTeam otherTeam = GetTeam(copy.GetPlayer());
if (otherTeam == null || !otherTeam.equals(throwerTeam)) if (otherTeam == null || !otherTeam.equals(throwerTeam))
@ -414,7 +431,8 @@ public class Paintball extends TeamGame
if (UtilMath.offset(copy.GetEntity().getLocation().add(0,1,0), event.getEntity().getLocation()) > 3) if (UtilMath.offset(copy.GetEntity().getLocation().add(0,1,0), event.getEntity().getLocation()) > 3)
continue; continue;
PlayerIn(copy.GetPlayer(), copy.GetEntity()); PlayerIn(copy.GetPlayer(), copy);
copyIterator.remove(); copyIterator.remove();
AddGems(thrower, 3, "Revived Ally", true, true); AddGems(thrower, 3, "Revived Ally", true, true);
@ -436,7 +454,7 @@ public class Paintball extends TeamGame
} }
} }
public void PlayerIn(final Player player, final LivingEntity copy) public void PlayerIn(final Player player, final PlayerCopyPaintball copy)
{ {
//State //State
SetPlayerState(player, PlayerState.IN); SetPlayerState(player, PlayerState.IN);
@ -446,9 +464,9 @@ public class Paintball extends TeamGame
if (copy != null) if (copy != null)
{ {
Location loc = player.getLocation(); Location loc = player.getLocation();
loc.setX(copy.getLocation().getX()); loc.setX(copy.GetEntity().getLocation().getX());
loc.setY(copy.getLocation().getY()); loc.setY(copy.GetEntity().getLocation().getY());
loc.setZ(copy.getLocation().getZ()); loc.setZ(copy.GetEntity().getLocation().getZ());
player.teleport(loc); player.teleport(loc);
} }
@ -480,7 +498,9 @@ public class Paintball extends TeamGame
Manager.GetCondition().EndCondition(player, ConditionType.CLOAK, null); Manager.GetCondition().EndCondition(player, ConditionType.CLOAK, null);
//Remove Copy //Remove Copy
copy.remove(); copy.GetEntity().remove();
copy.GetHolo().stop();
copy.GetSaveMe().stop();
} }
}, 4); }, 4);
} }
@ -512,4 +532,128 @@ public class Paintball extends TeamGame
for (Player player : GetPlayers(true)) for (Player player : GetPlayers(true))
player.removePotionEffect(PotionEffectType.WATER_BREATHING); player.removePotionEffect(PotionEffectType.WATER_BREATHING);
} }
@EventHandler
public void onHeal(PlayerInteractEvent event)
{
if (!UtilEvent.isAction(event, ActionType.R))
return;
LaunchPotion(event.getPlayer(), event);
}
@EventHandler
public void onHeal(PlayerInteractEntityEvent event)
{
LaunchPotion(event.getPlayer(), event);
}
@EventHandler(ignoreCancelled = false)
public void onHeal(PlayerInteractAtEntityEvent event)
{
LaunchPotion(event.getPlayer(), event);
}
public void LaunchPotion(Player player, Cancellable event)
{
if (!IsLive())
return;
if (!UtilGear.isMat(player.getItemInHand(), Material.POTION))
return;
event.setCancelled(true);
if (!IsAlive(player) || UtilPlayer.isSpectator(player))
return;
if (!Recharge.Instance.use(player, "Water Potion", 250, false, false))
return;
UtilInv.UseItemInHand(player);
ThrownPotion potion = player.launchProjectile(ThrownPotion.class);
potion.getEffects().clear();
potion.getEffects().add(new PotionEffect(PotionEffectType.WATER_BREATHING, 100, 100));
Manager.runAsync(new Runnable()
{
@Override
public void run()
{
UtilInv.Update(player);
}
});
}
@EventHandler
public void onInteract(PlayerInteractAtEntityEvent event)
{
event.setCancelled(true);
}
@EventHandler
public void updateCloneHolograms(UpdateEvent event)
{
if (event.getType() != UpdateType.FAST)
return;
for (PlayerCopyPaintball clone : _doubles.values())
{
if (clone.GetHolo().getHologramTarget() == HologramTarget.WHITELIST)
{
//Other team blacklist
clone.GetHolo().setHologramTarget(HologramTarget.BLACKLIST);
for (Player cur : GetPlayers(false))
{
if (!IsAlive(cur))
{
if (clone.GetHolo().containsPlayer(cur))
clone.GetHolo().removePlayer(cur);
}
else
{
if (GetTeam(cur) != GetTeam(clone.GetPlayer()))
{
if (!clone.GetHolo().containsPlayer(cur))
clone.GetHolo().addPlayer(cur);
}
else if (clone.GetHolo().containsPlayer(cur))
{
clone.GetHolo().removePlayer(cur);
}
}
}
clone.GetHolo().start();
}
clone.setSaveMeFlop(!clone.getSaveMeFlop());
clone.GetSaveMe().setText((clone.getSaveMeFlop() ? C.cRedB : C.cWhiteB) + "SAVE ME!");
for (Player player : GetTeam(clone.GetPlayer()).GetPlayers(false))
{
if (!IsAlive(player)) // Remove if it's not alive
{
if (clone.GetSaveMe().containsPlayer(player))
clone.GetSaveMe().removePlayer(player);
}
else
{
boolean hasPotion = UtilInv.contains(player, Material.POTION, (byte) -1, 1);
if (clone.GetSaveMe().containsPlayer(player))
{
if (!hasPotion) // No potions left
{
clone.GetSaveMe().removePlayer(player);
}
}
else if (hasPotion)
{
clone.GetSaveMe().addPlayer(player);
}
}
}
}
}
} }

View File

@ -0,0 +1,119 @@
package nautilus.game.arcade.game.games.paintball;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.ArmorStand;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import org.bukkit.util.EulerAngle;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilMath;
import mineplex.core.hologram.Hologram;
import mineplex.core.hologram.Hologram.HologramTarget;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.game.Game;
public class PlayerCopyPaintball
{
private Game Host;
private Player _owner;
private ArmorStand _ent;
private Hologram _holo;
private Hologram _saveMe;
private boolean _saveMeFlop = false;
public PlayerCopyPaintball(Game host, Player owner, Player paintedBy, ChatColor nameColor)
{
Host = host;
_owner = owner;
Location entLoc = owner.getLocation();
entLoc.setPitch(0F);
Host.CreatureAllowOverride = true;
_ent = owner.getWorld().spawn(owner.getLocation(), ArmorStand.class);
Host.CreatureAllowOverride = false;
UtilEnt.ghost(_ent, true, false);
UtilEnt.Vegetate(_ent);
_ent.setArms(true);
_ent.setBasePlate(false);
_ent.setVisible(false);
//Rand pose
int rA = UtilMath.r(20) - 3;
int lA = UtilMath.r(20) - 3;
int rL = UtilMath.r(20) - 3;
int lL = UtilMath.r(20) - 3;
_ent.setRightArmPose(new EulerAngle(Math.toRadians(rA < 0 ? 360 - rA : rA), 0, Math.toRadians(Math.abs(rA))));
_ent.setRightLegPose(new EulerAngle(Math.toRadians(rL < 0 ? 360 - rL : rL), 0, Math.toRadians(Math.abs(rL))));
_ent.setLeftArmPose(new EulerAngle(Math.toRadians(lA < 0 ? 360 - lA : lA), 0, Math.toRadians(360 - Math.abs(lA))));
_ent.setLeftLegPose(new EulerAngle(Math.toRadians(lL < 0 ? 360 - lL : rA), 0, Math.toRadians(360 - Math.abs(lL))));
//Armor
_ent.getEquipment().setArmorContents(owner.getInventory().getArmorContents());
_ent.setItemInHand(owner.getItemInHand());
//Player skull
ItemStack skull = ItemStackFactory.Instance.CreateStack(Material.SKULL_ITEM, (byte) 3, 1);
SkullMeta meta = (SkullMeta) skull.getItemMeta();
meta.setOwner(owner.getName());
skull.setItemMeta(meta);
_ent.setHelmet(skull);
//Name
_holo = new Hologram(host.Manager.getHologramManager(), _ent.getLocation().clone().add(0, 2.2, 0));
_holo.setText(C.cWhite + C.Bold + C.Scramble + "XX" + ChatColor.RESET + " " + nameColor + owner.getName() + " " + C.cWhite + C.Bold + C.Scramble + "XX", C.cWhite + "Painted by " + host.GetTeam(paintedBy).GetColor() + paintedBy.getName());
_holo.setHologramTarget(HologramTarget.WHITELIST);
_holo.setFollowEntity(_ent);
_holo.start();
//Save me
_saveMe = new Hologram(host.Manager.getHologramManager(), _ent.getLocation().clone().add(0, 2.8, 0));
_saveMe.setText(C.cRedB + "SAVE ME!");
_saveMe.setHologramTarget(HologramTarget.WHITELIST);
_saveMe.setFollowEntity(_ent);
_saveMe.start();
}
public LivingEntity GetEntity()
{
return _ent;
}
public Player GetPlayer()
{
return _owner;
}
public Hologram GetHolo()
{
return _holo;
}
public Hologram GetSaveMe()
{
return _saveMe;
}
public boolean getSaveMeFlop()
{
return _saveMeFlop;
}
public void setSaveMeFlop(boolean flop)
{
_saveMeFlop = flop;
}
}

View File

@ -0,0 +1,40 @@
package nautilus.game.arcade.game.games.paintball.events;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
public class PaintballEvent extends PlayerEvent
{
/**
* Created by: Mysticate
* Timestamp: November 19, 2015
*/
private static final HandlerList handlers = new HandlerList();
public static HandlerList getHandlerList()
{
return handlers;
}
@Override
public HandlerList getHandlers()
{
return getHandlerList();
}
private Player _revivedPlayer;
public PaintballEvent(Player who, Player revivedPlayer)
{
super(who);
_revivedPlayer = revivedPlayer;
}
public Player getKiller()
{
return _revivedPlayer;
}
}

View File

@ -0,0 +1,40 @@
package nautilus.game.arcade.game.games.paintball.events;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
public class ReviveEvent extends PlayerEvent
{
/**
* Created by: Mysticate
* Timestamp: November 19, 2015
*/
private static final HandlerList handlers = new HandlerList();
public static HandlerList getHandlerList()
{
return handlers;
}
@Override
public HandlerList getHandlers()
{
return getHandlerList();
}
private Player _revivedPlayer;
public ReviveEvent(Player who, Player revivedPlayer)
{
super(who);
_revivedPlayer = revivedPlayer;
}
public Player getRevivedPlayer()
{
return _revivedPlayer;
}
}

View File

@ -1,21 +1,23 @@
package nautilus.game.arcade.game.games.paintball.kits; package nautilus.game.arcade.game.games.paintball.kits;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilInv;
import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.game.games.paintball.kits.perks.PerkPaintballMachineGun;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.KitAvailability;
import nautilus.game.arcade.kit.Perk;
import org.bukkit.Color; import org.bukkit.Color;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.inventory.meta.PotionMeta;
import mineplex.core.common.util.C;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.KitAvailability;
import nautilus.game.arcade.kit.Perk;
import nautilus.game.arcade.kit.perks.*;
public class KitMachineGun extends Kit public class KitMachineGun extends Kit
{ {
public KitMachineGun(ArcadeManager manager) public KitMachineGun(ArcadeManager manager)
@ -39,36 +41,17 @@ public class KitMachineGun extends Kit
@Override @Override
public void GiveItems(Player player) public void GiveItems(Player player)
{ {
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_BARDING, (byte)0, 1, "Paintball Machine Gun")); UtilInv.insert(player, ItemStackFactory.Instance.CreateStack(Material.DIAMOND_BARDING, (byte)0, 1, F.item("Paintball Machine Gun")));
ItemStack potion = new ItemStack(Material.POTION, 3, (short)16429); // 16422 ItemStack potion = new ItemStack(Material.POTION, 3, (short)16429); // 16422
PotionMeta potionMeta = (PotionMeta)potion.getItemMeta(); PotionMeta potionMeta = (PotionMeta)potion.getItemMeta();
potionMeta.setDisplayName("Water Bomb"); potionMeta.setDisplayName(F.item("Water Bomb"));
potion.setItemMeta(potionMeta); potion.setItemMeta(potionMeta);
player.getInventory().addItem(potion); UtilInv.insert(player, potion);
ItemStack helm = new ItemStack(Material.LEATHER_HELMET); player.getInventory().setHelmet(new ItemBuilder(Material.LEATHER_HELMET).setUnbreakable(true).setColor(Color.WHITE).build());
LeatherArmorMeta metaHelm = (LeatherArmorMeta)helm.getItemMeta(); player.getInventory().setChestplate(new ItemBuilder(Material.LEATHER_CHESTPLATE).setUnbreakable(true).setColor(Color.WHITE).build());
metaHelm.setColor(Color.WHITE); player.getInventory().setLeggings(new ItemBuilder(Material.LEATHER_LEGGINGS).setUnbreakable(true).setColor(Color.WHITE).build());
helm.setItemMeta(metaHelm); player.getInventory().setBoots(new ItemBuilder(Material.LEATHER_BOOTS).setUnbreakable(true).setColor(Color.WHITE).build());
player.getInventory().setHelmet(helm);
ItemStack armor = new ItemStack(Material.LEATHER_CHESTPLATE);
LeatherArmorMeta meta = (LeatherArmorMeta)armor.getItemMeta();
meta.setColor(Color.WHITE);
armor.setItemMeta(meta);
player.getInventory().setChestplate(armor);
ItemStack legs = new ItemStack(Material.LEATHER_LEGGINGS);
LeatherArmorMeta metaLegs = (LeatherArmorMeta)armor.getItemMeta();
metaLegs.setColor(Color.WHITE);
legs.setItemMeta(metaLegs);
player.getInventory().setLeggings(legs);
ItemStack boots = new ItemStack(Material.LEATHER_BOOTS);
LeatherArmorMeta metaBoots = (LeatherArmorMeta)armor.getItemMeta();
metaBoots.setColor(Color.WHITE);
boots.setItemMeta(metaBoots);
player.getInventory().setBoots(boots);
} }
} }

View File

@ -1,21 +1,23 @@
package nautilus.game.arcade.game.games.paintball.kits; package nautilus.game.arcade.game.games.paintball.kits;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilInv;
import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.game.games.paintball.kits.perks.PerkPaintballRifle;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.KitAvailability;
import nautilus.game.arcade.kit.Perk;
import nautilus.game.arcade.kit.perks.PerkSpeed;
import org.bukkit.Color; import org.bukkit.Color;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.inventory.meta.PotionMeta;
import org.bukkit.potion.PotionEffectType;
import mineplex.core.common.util.C;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.KitAvailability;
import nautilus.game.arcade.kit.Perk;
import nautilus.game.arcade.kit.perks.*;
public class KitRifle extends Kit public class KitRifle extends Kit
{ {
@ -41,37 +43,17 @@ public class KitRifle extends Kit
@Override @Override
public void GiveItems(Player player) public void GiveItems(Player player)
{ {
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_BARDING, (byte)0, 1, "Paintball Rifle")); UtilInv.insert(player, ItemStackFactory.Instance.CreateStack(Material.IRON_BARDING, (byte)0, 1, F.item("Paintball Rifle")));
//Potion
ItemStack potion = new ItemStack(Material.POTION, 3, (short)16429); // 16422 ItemStack potion = new ItemStack(Material.POTION, 3, (short)16429); // 16422
PotionMeta potionMeta = (PotionMeta)potion.getItemMeta(); PotionMeta potionMeta = (PotionMeta)potion.getItemMeta();
potionMeta.setDisplayName("Water Bomb"); potionMeta.setDisplayName(F.item("Water Bomb"));
potion.setItemMeta(potionMeta); potion.setItemMeta(potionMeta);
player.getInventory().addItem(potion); UtilInv.insert(player, potion);
ItemStack helm = new ItemStack(Material.LEATHER_HELMET); player.getInventory().setHelmet(new ItemBuilder(Material.LEATHER_HELMET).setUnbreakable(true).setColor(Color.WHITE).build());
LeatherArmorMeta metaHelm = (LeatherArmorMeta)helm.getItemMeta(); player.getInventory().setChestplate(new ItemBuilder(Material.LEATHER_CHESTPLATE).setUnbreakable(true).setColor(Color.WHITE).build());
metaHelm.setColor(Color.WHITE); player.getInventory().setLeggings(new ItemBuilder(Material.LEATHER_LEGGINGS).setUnbreakable(true).setColor(Color.WHITE).build());
helm.setItemMeta(metaHelm); player.getInventory().setBoots(new ItemBuilder(Material.LEATHER_BOOTS).setUnbreakable(true).setColor(Color.WHITE).build());
player.getInventory().setHelmet(helm);
ItemStack armor = new ItemStack(Material.LEATHER_CHESTPLATE);
LeatherArmorMeta meta = (LeatherArmorMeta)armor.getItemMeta();
meta.setColor(Color.WHITE);
armor.setItemMeta(meta);
player.getInventory().setChestplate(armor);
ItemStack legs = new ItemStack(Material.LEATHER_LEGGINGS);
LeatherArmorMeta metaLegs = (LeatherArmorMeta)armor.getItemMeta();
metaLegs.setColor(Color.WHITE);
legs.setItemMeta(metaLegs);
player.getInventory().setLeggings(legs);
ItemStack boots = new ItemStack(Material.LEATHER_BOOTS);
LeatherArmorMeta metaBoots = (LeatherArmorMeta)armor.getItemMeta();
metaBoots.setColor(Color.WHITE);
boots.setItemMeta(metaBoots);
player.getInventory().setBoots(boots);
} }
} }

View File

@ -1,21 +1,24 @@
package nautilus.game.arcade.game.games.paintball.kits; package nautilus.game.arcade.game.games.paintball.kits;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilInv;
import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.game.games.paintball.kits.perks.PerkPaintballShotgun;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.KitAvailability;
import nautilus.game.arcade.kit.Perk;
import nautilus.game.arcade.kit.perks.PerkSpeed;
import org.bukkit.Color; import org.bukkit.Color;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.inventory.meta.PotionMeta;
import mineplex.core.common.util.C;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.KitAvailability;
import nautilus.game.arcade.kit.Perk;
import nautilus.game.arcade.kit.perks.*;
public class KitShotgun extends Kit public class KitShotgun extends Kit
{ {
public KitShotgun(ArcadeManager manager) public KitShotgun(ArcadeManager manager)
@ -40,36 +43,17 @@ public class KitShotgun extends Kit
@Override @Override
public void GiveItems(Player player) public void GiveItems(Player player)
{ {
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.GOLD_BARDING, (byte)0, 1, "Paintball Shotgun")); UtilInv.insert(player, ItemStackFactory.Instance.CreateStack(Material.GOLD_BARDING, (byte)0, 1, F.item("Paintball Shotgun")));
ItemStack potion = new ItemStack(Material.POTION, 3, (short)16429); // 16422 ItemStack potion = new ItemStack(Material.POTION, 3, (short)16429); // 16422
PotionMeta potionMeta = (PotionMeta)potion.getItemMeta(); PotionMeta potionMeta = (PotionMeta)potion.getItemMeta();
potionMeta.setDisplayName("Water Bomb"); potionMeta.setDisplayName(F.item("Water Bomb"));
potion.setItemMeta(potionMeta); potion.setItemMeta(potionMeta);
player.getInventory().addItem(potion); UtilInv.insert(player, potion);
ItemStack helm = new ItemStack(Material.LEATHER_HELMET); player.getInventory().setHelmet(new ItemBuilder(Material.LEATHER_HELMET).setUnbreakable(true).setColor(Color.WHITE).build());
LeatherArmorMeta metaHelm = (LeatherArmorMeta)helm.getItemMeta(); player.getInventory().setChestplate(new ItemBuilder(Material.LEATHER_CHESTPLATE).setUnbreakable(true).setColor(Color.WHITE).build());
metaHelm.setColor(Color.WHITE); player.getInventory().setLeggings(new ItemBuilder(Material.LEATHER_LEGGINGS).setUnbreakable(true).setColor(Color.WHITE).build());
helm.setItemMeta(metaHelm); player.getInventory().setBoots(new ItemBuilder(Material.LEATHER_BOOTS).setUnbreakable(true).setColor(Color.WHITE).build());
player.getInventory().setHelmet(helm);
ItemStack armor = new ItemStack(Material.LEATHER_CHESTPLATE);
LeatherArmorMeta meta = (LeatherArmorMeta)armor.getItemMeta();
meta.setColor(Color.WHITE);
armor.setItemMeta(meta);
player.getInventory().setChestplate(armor);
ItemStack legs = new ItemStack(Material.LEATHER_LEGGINGS);
LeatherArmorMeta metaLegs = (LeatherArmorMeta)armor.getItemMeta();
metaLegs.setColor(Color.WHITE);
legs.setItemMeta(metaLegs);
player.getInventory().setLeggings(legs);
ItemStack boots = new ItemStack(Material.LEATHER_BOOTS);
LeatherArmorMeta metaBoots = (LeatherArmorMeta)armor.getItemMeta();
metaBoots.setColor(Color.WHITE);
boots.setItemMeta(metaBoots);
player.getInventory().setBoots(boots);
} }
} }

View File

@ -0,0 +1,81 @@
package nautilus.game.arcade.game.games.paintball.kits;
import org.bukkit.Color;
import org.bukkit.Material;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.PotionMeta;
import mineplex.core.achievement.Achievement;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilInv;
import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.game.games.paintball.kits.perks.PerkPaintballSniper;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.KitAvailability;
import nautilus.game.arcade.kit.Perk;
public class KitSniper extends Kit
{
public KitSniper(ArcadeManager manager)
{
super(manager, "Sniper", KitAvailability.Achievement,
new String[]
{
"Long range sniper rifle",
C.cGold + "Higher damage the longer scoped"
},
new Perk[]
{
new PerkPaintballSniper(),
},
EntityType.ZOMBIE,
new ItemStack(Material.STONE_HOE));
setAchievementRequirements(new Achievement[]
{
Achievement.SUPER_PAINTBALL_FLAWLESS_VICTORY,
Achievement.SUPER_PAINTBALL_KILLING_SPREE,
Achievement.SUPER_PAINTBALL_LAST_STAND,
Achievement.SUPER_PAINTBALL_MEDIC,
Achievement.SUPER_PAINTBALL_SPEEDRUNNER,
Achievement.SUPER_PAINTBALL_WINS
});
}
@Override
public void GiveItems(Player player)
{
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.STONE_HOE, (byte)0, 1, F.item("Paintball Sniper Rifle")));
ItemStack potion = new ItemStack(Material.POTION, 2, (short)16429); // 16422
PotionMeta potionMeta = (PotionMeta)potion.getItemMeta();
potionMeta.setDisplayName(F.item("Water Bomb"));
potion.setItemMeta(potionMeta);
UtilInv.insert(player, potion);
player.getInventory().setHelmet(new ItemBuilder(Material.LEATHER_HELMET).setUnbreakable(true).setColor(Color.WHITE).build());
player.getInventory().setChestplate(new ItemBuilder(Material.LEATHER_CHESTPLATE).setUnbreakable(true).setColor(Color.WHITE).build());
player.getInventory().setLeggings(new ItemBuilder(Material.LEATHER_LEGGINGS).setUnbreakable(true).setColor(Color.WHITE).build());
player.getInventory().setBoots(new ItemBuilder(Material.LEATHER_BOOTS).setUnbreakable(true).setColor(Color.WHITE).build());
}
public int getPaintDamage(Arrow proj)
{
for (Perk perk : GetPerks())
{
if (perk instanceof PerkPaintballSniper)
{
return ((PerkPaintballSniper) perk).getPaintDamage(proj);
}
}
return -1;
}
}

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.kit.perks; package nautilus.game.arcade.game.games.paintball.kits.perks;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
@ -51,6 +51,9 @@ public class PerkPaintballMachineGun extends Perk
@EventHandler @EventHandler
public void Shoot(PlayerInteractEvent event) public void Shoot(PlayerInteractEvent event)
{ {
if (!Manager.GetGame().IsLive())
return;
if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK)
return; return;
@ -95,7 +98,8 @@ public class PerkPaintballMachineGun extends Perk
//Energy //Energy
if (player.getExp() >= 0.97) if (player.getExp() >= 0.97)
return; return;
player.setExp((float) (player.getExp() + 0.025));
player.setExp((float) Math.min(.999, player.getExp() + 0.025));
//Shoot //Shoot
Vector rand = new Vector(Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5); Vector rand = new Vector(Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5);

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.kit.perks; package nautilus.game.arcade.game.games.paintball.kits.perks;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
@ -39,6 +39,9 @@ public class PerkPaintballRifle extends Perk
@EventHandler @EventHandler
public void Shoot(PlayerInteractEvent event) public void Shoot(PlayerInteractEvent event)
{ {
if (!Manager.GetGame().IsLive())
return;
if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK)
return; return;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.kit.perks; package nautilus.game.arcade.game.games.paintball.kits.perks;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
@ -42,6 +42,9 @@ public class PerkPaintballShotgun extends Perk
@EventHandler @EventHandler
public void Shoot(PlayerInteractEvent event) public void Shoot(PlayerInteractEvent event)
{ {
if (!Manager.GetGame().IsLive())
return;
if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK)
return; return;

View File

@ -0,0 +1,350 @@
package nautilus.game.arcade.game.games.paintball.kits.perks;
import java.util.ArrayList;
import java.util.HashSet;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.craftbukkit.v1_8_R3.CraftWorld;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.metadata.FixedMetadataValue;
import mineplex.core.common.util.C;
import mineplex.core.common.util.NautHashMap;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilParticle;
import mineplex.core.common.util.UtilParticle.ParticleType;
import mineplex.core.common.util.UtilParticle.ViewDist;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.packethandler.IPacketHandler;
import mineplex.core.packethandler.PacketInfo;
import mineplex.core.recharge.Recharge;
import mineplex.core.recharge.RechargedEvent;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.minecraft.game.core.condition.Condition.ConditionType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.kit.Perk;
import net.md_5.bungee.api.ChatColor;
import net.minecraft.server.v1_8_R3.EntityArrow;
import net.minecraft.server.v1_8_R3.PacketPlayOutSpawnEntity;
public class PerkPaintballSniper extends Perk implements IPacketHandler
{
/**
* Created by: Mysticate
* Timestamp: October 27, 2015
*/
private static class Bullet
{
public Player Shooter;
public int Damage;
public Location LastSeen;
}
private HashSet<Player> _crouching = new HashSet<Player>();
private NautHashMap<Arrow, Bullet> _fired = new NautHashMap<Arrow, Bullet>();
private double _velocity = 15;
private boolean _spawning = false;
public PerkPaintballSniper()
{
super("Sniper Rifle", new String[]
{
C.cYellow + "Crouch" + C.cGray + " to use " + C.cGreen + "Scope",
C.cYellow + "Right-Click" + C.cGray + " to use " + C.cGreen + "Sniper Rifle",
"Experience Bar represents damage."
});
}
@SuppressWarnings("unchecked")
@Override
public void registeredEvents()
{
Manager.getPacketHandler().addPacketHandler(this, PacketPlayOutSpawnEntity.class);
}
@EventHandler
public void Recharge(RechargedEvent event)
{
if (!event.GetAbility().equals(GetName()))
return;
event.GetPlayer().playSound(event.GetPlayer().getLocation(), Sound.NOTE_STICKS, 2f, 1f);
event.GetPlayer().playSound(event.GetPlayer().getLocation(), Sound.NOTE_STICKS, 2f, 1.5f);
}
@EventHandler
public void Shoot(PlayerInteractEvent event)
{
if (!Manager.GetGame().IsLive())
return;
if (!UtilEvent.isAction(event, ActionType.R))
return;
if (UtilBlock.usable(event.getClickedBlock()))
return;
if (!UtilGear.isMat(event.getItem(), Material.STONE_HOE))
return;
Player player = event.getPlayer();
if (!Manager.IsAlive(player))
return;
if (UtilPlayer.isSpectator(player))
return;
if (!Kit.HasKit(player))
return;
event.setCancelled(true);
if (!Recharge.Instance.use(player, GetName(), 1000, true, true))
return;
net.minecraft.server.v1_8_R3.World world = ((CraftWorld) player.getWorld()).getHandle();
EntityArrow launch = new EntityArrow(world, ((CraftPlayer) player).getHandle(), 0F);
Location location = player.getEyeLocation();
launch.projectileSource = player;
launch.setPositionRotation(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
((Projectile) launch.getBukkitEntity()).setVelocity(player.getEyeLocation().getDirection().clone().multiply(_velocity));
_spawning = true;
world.addEntity(launch);
_spawning = false;
Arrow proj = (Arrow) launch.getBukkitEntity();
proj.setMetadata("color", new FixedMetadataValue(Manager.getPlugin(), Manager.GetGame().GetTeam(player).GetColor().ordinal()));
Bullet bullet = new Bullet();
bullet.Shooter = player;
bullet.Damage = getPaintDamage(player);
bullet.LastSeen = proj.getLocation();
_fired.put(proj, bullet);
//Sound
player.getWorld().playSound(player.getLocation(), Sound.CHICKEN_EGG_POP, 0.8f, 1f);
player.setSneaking(false);
//Effects
removeEffects(player);
}
@EventHandler
public void onUpdate(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
return;
if (!Manager.GetGame().IsLive())
return;
//Cleanup check
for (Player player : new HashSet<Player>(_crouching))
{
boolean remove = false;
if (!player.isOnline())
remove = true;
if (!Manager.GetGame().IsAlive(player))
remove = true;
if (UtilPlayer.isSpectator(player))
remove = true;
if (!player.isSneaking())
remove = true;
if (!UtilInv.IsItem(player.getItemInHand(), Material.STONE_HOE, (byte) -1))
remove = true;
if (!Recharge.Instance.usable(player, GetName()))
remove = true;
if (remove)
{
if (_crouching.contains(player))
_crouching.remove(player);
player.setExp(0F);
player.setSneaking(false);
// Zoom
removeEffects(player);
}
}
//Add check
for (Player player : Manager.GetGame().GetPlayers(true))
{
if (UtilPlayer.isSpectator(player))
continue;
if (!Kit.HasKit(player))
continue;
if (!player.isSneaking())
continue;
if (!UtilInv.IsItem(player.getItemInHand(), Material.STONE_HOE, (byte) -1))
continue;
if (_crouching.contains(player))
continue;
_crouching.add(player);
// Zoom
addEffects(player);
}
// Exp check
for (Player player : Manager.GetGame().GetPlayers(true))
{
if (UtilPlayer.isSpectator(player))
continue;
if (!Kit.HasKit(player))
continue;
if (!_crouching.contains(player))
continue;
player.setExp((float) Math.min(.999F, player.getExp() + .03332));
}
}
@EventHandler
public void doArrowEffects(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
return;
if (!Manager.GetGame().IsLive())
return;
for (Arrow proj : new ArrayList<Arrow>(_fired.keySet()))
{
Bullet bullet = _fired.get(proj);
double curRange = 0;
double distance = Math.abs(UtilMath.offset(proj.getLocation(), bullet.LastSeen));
while (curRange <= distance)
{
Location newTarget = bullet.LastSeen.add(UtilAlg.getTrajectory(bullet.LastSeen, proj.getLocation()).multiply(curRange));
//Progress Forwards
curRange += 0.8;
if (UtilMath.offset(bullet.Shooter.getLocation(), newTarget) < 2)
continue;
ChatColor color = ChatColor.values()[proj.getMetadata("color").get(0).asInt()];
if (color == ChatColor.BLUE || color == ChatColor.AQUA)
{
UtilParticle.PlayParticle(ParticleType.RED_DUST, newTarget, -1, 1, 1, 1, 0,
ViewDist.NORMAL, UtilServer.getPlayers());
}
else
{
UtilParticle.PlayParticle(ParticleType.RED_DUST, newTarget, 0, 0, 0, 0, 1,
ViewDist.NORMAL, UtilServer.getPlayers());
}
}
if (!proj.isValid())
{
_fired.remove(proj);
continue;
}
bullet.LastSeen = proj.getLocation();
}
}
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void clean(GameStateChangeEvent event)
{
if (event.GetState() != GameState.End)
return;
for (Player player : _crouching)
{
removeEffects(player);
}
_crouching.clear();
Manager.getPacketHandler().removePacketHandler(this);
}
private void removeEffects(Player player)
{
// Zoom
if (Manager.GetCondition().HasCondition(player, ConditionType.SLOW, GetName()))
Manager.GetCondition().EndCondition(player, ConditionType.SLOW, GetName());
// if (Manager.GetCondition().HasCondition(player, ConditionType.JUMP, GetName()))
// Manager.GetCondition().EndCondition(player, ConditionType.JUMP, GetName());
}
private void addEffects(Player player)
{
// Zoom
if (!Manager.GetCondition().HasCondition(player, ConditionType.SLOW, GetName()))
Manager.GetCondition().Factory().Slow(GetName(), player, null, Double.MAX_VALUE, 8, false, false, false, true);
}
public int getPaintDamage(Arrow proj)
{
if (!_fired.containsKey(proj))
return 1;
return _fired.get(proj).Damage;
}
private int getPaintDamage(Player player)
{
if (!_crouching.contains(player))
return 1;
return 1 + (int) Math.floor(player.getExp() * 10 / 3);
}
@Override
public void handle(PacketInfo packetInfo)
{
if (!_spawning)
return;
packetInfo.setCancelled(true);
}
}

View File

@ -0,0 +1,56 @@
package nautilus.game.arcade.game.games.paintball.trackers;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import nautilus.game.arcade.game.Game;
import nautilus.game.arcade.game.games.paintball.Paintball;
import nautilus.game.arcade.game.games.paintball.events.PaintballEvent;
import nautilus.game.arcade.stats.StatTracker;
public class KillingSpreeTracker extends StatTracker<Paintball>
{
private final Map<UUID, Integer> _killCount = new HashMap<>();
private final Map<UUID, Long> _lastKillTime = new HashMap<>();
public KillingSpreeTracker(Paintball game)
{
super(game);
}
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
public void onCombatDeath(PaintballEvent event)
{
if (getGame().GetState() != Game.GameState.Live)
return;
Long lastTime = _lastKillTime.get(event.getKiller().getUniqueId());
long now = System.currentTimeMillis();
Integer killCount;
if (lastTime == null || now - lastTime > 5000)
killCount = 0;
else
{
killCount = _killCount.get(event.getKiller().getUniqueId());
if (killCount == null)
killCount = 0;
}
killCount++;
_killCount.put(event.getKiller().getUniqueId(), killCount);
_lastKillTime.put(event.getKiller().getUniqueId(), now);
_killCount.remove(event.getPlayer().getUniqueId());
_lastKillTime.remove(event.getPlayer().getUniqueId());
if (killCount >= 4)
addStat(event.getKiller(), "KillingSpree", 1, true, false);
}
}

View File

@ -0,0 +1,40 @@
package nautilus.game.arcade.game.games.paintball.trackers;
import java.util.UUID;
import org.bukkit.event.EventHandler;
import mineplex.core.common.util.NautHashMap;
import nautilus.game.arcade.game.games.paintball.Paintball;
import nautilus.game.arcade.game.games.paintball.events.PaintballEvent;
import nautilus.game.arcade.stats.StatTracker;
public class LastStandStatTracker extends StatTracker<Paintball>
{
private final NautHashMap<UUID, Integer> _kills = new NautHashMap<UUID, Integer>();
public LastStandStatTracker(Paintball game)
{
super(game);
}
@EventHandler
public void onPaintball(PaintballEvent event)
{
if (!getGame().IsLive())
return;
if (getGame().GetTeam(event.getKiller()).GetPlayers(true).size() == 1)
{
if (!_kills.containsKey(event.getKiller().getUniqueId()))
_kills.put(event.getKiller().getUniqueId(), 0);
int kills = _kills.get(event.getKiller().getUniqueId()) + 1;
if (kills >= 3)
addStat(event.getKiller(), "LastStand", 1, true, false);
_kills.put(event.getKiller().getUniqueId(), kills);
}
}
}

View File

@ -0,0 +1,25 @@
package nautilus.game.arcade.game.games.paintball.trackers;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import nautilus.game.arcade.game.games.paintball.Paintball;
import nautilus.game.arcade.game.games.paintball.events.ReviveEvent;
import nautilus.game.arcade.stats.StatTracker;
public class MedicStatTracker extends StatTracker<Paintball>
{
public MedicStatTracker(Paintball game)
{
super(game);
}
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
public void onCombatDeath(ReviveEvent event)
{
if (!getGame().IsLive())
return;
addStat(event.getPlayer(), "Medic", 1, false, false);
}
}

View File

@ -1,24 +1,22 @@
package nautilus.game.arcade.game.games.paintball; package nautilus.game.arcade.game.games.wither;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.disguise.disguises.DisguisePlayer;
import nautilus.game.arcade.game.Game;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.EntityEffect;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Skeleton; import org.bukkit.entity.Skeleton;
public class PlayerCopy import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilEnt;
import nautilus.game.arcade.game.Game;
public class PlayerCopyWither
{ {
private Game Host; private Game Host;
private Skeleton _ent; private Skeleton _ent;
private Player _owner; private Player _owner;
public PlayerCopy(Game host, Player owner, ChatColor nameColor) public PlayerCopyWither(Game host, Player owner, ChatColor nameColor)
{ {
Host = host; Host = host;

View File

@ -1,55 +1,11 @@
package nautilus.game.arcade.game.games.wither; package nautilus.game.arcade.game.games.wither;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.Set; import java.util.Set;
import mineplex.core.common.block.BlockData;
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.UtilBlock;
import mineplex.core.common.util.UtilParticle;
import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.common.util.UtilParticle.ParticleType;
import mineplex.core.common.util.UtilParticle.ViewDist;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTextMiddle;
import mineplex.core.common.util.UtilTime;
import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.minecraft.game.core.condition.Condition.ConditionType;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.GameTeam.PlayerState;
import nautilus.game.arcade.game.TeamGame;
import nautilus.game.arcade.game.games.paintball.PlayerCopy;
import nautilus.game.arcade.game.games.wither.events.HumanReviveEvent;
import nautilus.game.arcade.game.games.wither.kit.KitHumanArcher;
import nautilus.game.arcade.game.games.wither.kit.KitHumanMedic;
import nautilus.game.arcade.game.games.wither.kit.KitHumanEditor;
import nautilus.game.arcade.game.games.wither.kit.KitWitherMinion;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.NullKit;
import nautilus.game.arcade.kit.perks.data.IBlockRestorer;
import nautilus.game.arcade.stats.BloodThirstyStatTracker;
import nautilus.game.arcade.stats.KingDamageStatTracker;
import nautilus.game.arcade.stats.KingSlayerStatTracker;
import nautilus.game.arcade.stats.TeamDeathsStatTracker;
import nautilus.game.arcade.stats.TeamKillsStatTracker;
import nautilus.game.arcade.stats.WinAsTeamStatTracker;
import nautilus.game.arcade.stats.WitherAssaultReviveTracker;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.EntityEffect; import org.bukkit.EntityEffect;
@ -74,13 +30,45 @@ import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.event.entity.ProjectileLaunchEvent;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
import mineplex.core.common.block.BlockData;
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.UtilBlock;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilParticle;
import mineplex.core.common.util.UtilParticle.ParticleType;
import mineplex.core.common.util.UtilParticle.ViewDist;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTextMiddle;
import mineplex.core.common.util.UtilTime;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.minecraft.game.core.condition.Condition.ConditionType;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.GameTeam.PlayerState;
import nautilus.game.arcade.game.TeamGame;
import nautilus.game.arcade.game.games.wither.events.HumanReviveEvent;
import nautilus.game.arcade.game.games.wither.kit.KitHumanArcher;
import nautilus.game.arcade.game.games.wither.kit.KitHumanEditor;
import nautilus.game.arcade.game.games.wither.kit.KitHumanMedic;
import nautilus.game.arcade.game.games.wither.kit.KitWitherMinion;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.NullKit;
import nautilus.game.arcade.kit.perks.data.IBlockRestorer;
import nautilus.game.arcade.stats.TeamDeathsStatTracker;
import nautilus.game.arcade.stats.TeamKillsStatTracker;
public class WitherGame extends TeamGame implements IBlockRestorer public class WitherGame extends TeamGame implements IBlockRestorer
{ {
private GameTeam _runners; private GameTeam _runners;
@ -93,7 +81,7 @@ public class WitherGame extends TeamGame implements IBlockRestorer
private long _gameTime = 300000; private long _gameTime = 300000;
private HashMap<Player, PlayerCopy> _doubles = new HashMap<Player, PlayerCopy>(); private HashMap<Player, PlayerCopyWither> _doubles = new HashMap<Player, PlayerCopyWither>();
// private int _livesPerPlayer = 3; // private int _livesPerPlayer = 3;
// private HashMap<Player, Integer> _lives = new HashMap<Player, Integer>(); // private HashMap<Player, Integer> _lives = new HashMap<Player, Integer>();
@ -456,7 +444,7 @@ public class WitherGame extends TeamGame implements IBlockRestorer
{ {
if(!players.isOnline()) if(!players.isOnline())
{ {
PlayerCopy pc = _doubles.get(players); PlayerCopyWither pc = _doubles.get(players);
pc.GetEntity().remove(); pc.GetEntity().remove();
_doubles.remove(players); _doubles.remove(players);
} }
@ -803,7 +791,7 @@ public class WitherGame extends TeamGame implements IBlockRestorer
player.setVelocity(new Vector(0, 1.2, 0)); player.setVelocity(new Vector(0, 1.2, 0));
_doubles.put(player, new PlayerCopy(this, player, ChatColor.YELLOW)); _doubles.put(player, new PlayerCopyWither(this, player, ChatColor.YELLOW));
} }
public void playerIn(final Player player, final LivingEntity copy, Player revivedBy) public void playerIn(final Player player, final LivingEntity copy, Player revivedBy)
@ -888,10 +876,10 @@ public class WitherGame extends TeamGame implements IBlockRestorer
return; return;
// Revive a copy // Revive a copy
Iterator<PlayerCopy> copyIterator = _doubles.values().iterator(); Iterator<PlayerCopyWither> copyIterator = _doubles.values().iterator();
while (copyIterator.hasNext()) while (copyIterator.hasNext())
{ {
PlayerCopy copy = copyIterator.next(); PlayerCopyWither copy = copyIterator.next();
GameTeam otherTeam = GetTeam(copy.GetPlayer()); GameTeam otherTeam = GetTeam(copy.GetPlayer());
if (otherTeam == null || !otherTeam.equals(throwerTeam)) if (otherTeam == null || !otherTeam.equals(throwerTeam))
@ -937,7 +925,7 @@ public class WitherGame extends TeamGame implements IBlockRestorer
@EventHandler @EventHandler
public void skeletonDamage(CustomDamageEvent event) public void skeletonDamage(CustomDamageEvent event)
{ {
for (PlayerCopy copy : _doubles.values()) for (PlayerCopyWither copy : _doubles.values())
{ {
if (copy.GetEntity().equals(event.GetDamageeEntity())) if (copy.GetEntity().equals(event.GetDamageeEntity()))
{ {
@ -950,7 +938,7 @@ public class WitherGame extends TeamGame implements IBlockRestorer
@EventHandler @EventHandler
public void skeletonCombust(EntityCombustEvent event) public void skeletonCombust(EntityCombustEvent event)
{ {
for (PlayerCopy copy : _doubles.values()) for (PlayerCopyWither copy : _doubles.values())
{ {
if (copy.GetEntity().equals(event.getEntity())) if (copy.GetEntity().equals(event.getEntity()))
{ {

View File

@ -4,10 +4,8 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.HashMap;
import java.util.List; import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -57,7 +55,7 @@ public class SpectatorPage extends
_buttons = new IButton[54]; _buttons = new IButton[54];
_items = new ItemStack[54]; _items = new ItemStack[54];
List<GameTeam> teamList = _arcadeManager.GetGame().GetTeamList(); List<GameTeam> teamList = new ArrayList<GameTeam>(_arcadeManager.GetGame().GetTeamList());
int playerCount = _arcadeManager.GetGame().GetPlayers(true).size(); int playerCount = _arcadeManager.GetGame().GetPlayers(true).size();
@ -153,9 +151,8 @@ public class SpectatorPage extends
int rowsNeeded = (int) Math.ceil(teamPlayers.size() / 8.0); int rowsNeeded = (int) Math.ceil(teamPlayers.size() / 8.0);
_buttons = Arrays.copyOf(_buttons, _buttons.length _buttons = Arrays.copyOf(_buttons, _buttons.length + (rowsNeeded * 9));
+ (rowsNeeded * 9)); _items = Arrays.copyOf(_items, _items.length + (rowsNeeded * 9));
_items = Arrays.copyOf(_items, _items.length + (rowsNeeded * 9) + rowsNeeded);
for (int row = 0; row < rowsNeeded; row++) for (int row = 0; row < rowsNeeded; row++)
{ {
@ -178,6 +175,9 @@ public class SpectatorPage extends
if (rowsNeeded == 1 && teamList.size() < 4 && playerCount <= 26) if (rowsNeeded == 1 && teamList.size() < 4 && playerCount <= 26)
{ {
currentRow += 2; currentRow += 2;
_buttons = Arrays.copyOf(_buttons, _buttons.length + 9);
_items = Arrays.copyOf(_items, _items.length + 9);
} }
else else
{ {

View File

@ -16,6 +16,7 @@ import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilInv; import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilPlayer;
import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.itemstack.ItemStackFactory;
@ -48,10 +49,7 @@ public class PerkBaconBlast extends Perk implements IThrown
if (UtilBlock.usable(event.getClickedBlock())) if (UtilBlock.usable(event.getClickedBlock()))
return; return;
if (event.getPlayer().getItemInHand() == null) if (!UtilGear.isAxe(event.getItem()))
return;
if (!event.getPlayer().getItemInHand().getType().toString().contains("_AXE"))
return; return;
Player player = event.getPlayer(); Player player = event.getPlayer();

View File

@ -2,7 +2,6 @@ package nautilus.game.arcade.kit.perks;
import java.util.HashMap; import java.util.HashMap;
import org.bukkit.GameMode;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;

View File

@ -11,7 +11,10 @@ import org.bukkit.event.player.PlayerInteractEvent;
import mineplex.core.common.util.C; import mineplex.core.common.util.C;
import mineplex.core.common.util.F; import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.recharge.Recharge; import mineplex.core.recharge.Recharge;
import mineplex.minecraft.game.core.damage.CustomDamageEvent; import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.kit.Perk; import nautilus.game.arcade.kit.Perk;
@ -31,10 +34,10 @@ public class PerkPigCloak extends Perk
{ {
Player player = event.getPlayer(); Player player = event.getPlayer();
if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) if (!UtilEvent.isAction(event, ActionType.R))
return; return;
if (!event.getPlayer().getItemInHand().getType().toString().contains("_AXE")) if (!UtilGear.isAxe(event.getItem()))
return; return;
if (!Kit.HasKit(player)) if (!Kit.HasKit(player))

View File

@ -0,0 +1,293 @@
package nautilus.game.arcade.managers;
import java.util.HashSet;
import java.util.Set;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerLoginEvent.Result;
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.common.util.UtilServer;
import nautilus.game.arcade.ArcadeManager;
public class GameTestingManager implements Listener
{
/**
* Created by: Mysticate
* Timestamp: November 25, 2015
*/
private ArcadeManager _manager;
private boolean _enabled;
private boolean _capped = false;
private int _cap = 16;
private String _capMessage = "";
private boolean _whitelisted = false;
private Set<String> _whitelistAdded = new HashSet<String>();
private String _whitelistMessage = "";
public GameTestingManager(ArcadeManager manager)
{
_manager = manager;
_manager.getPluginManager().registerEvents(this, _manager.getPlugin());
_enabled = _manager.getPlugin().getConfig().getString("serverstatus.group").equalsIgnoreCase("Testing");
}
public ArcadeManager getManager()
{
return _manager;
}
public void setCapped(boolean cap)
{
_capped = cap;
}
public boolean isCapped()
{
return _capped;
}
public void setCap(int cap)
{
_cap = cap;
}
public int getCap()
{
return _cap;
}
public boolean isWhitelisted(String name)
{
return _whitelistAdded.contains(new String(name).toLowerCase());
}
public void setWhitelisted(String name, boolean whitelist)
{
if (isWhitelisted(name))
{
_whitelistAdded.remove(name.toLowerCase());
}
else
{
_whitelistAdded.add(new String(name).toLowerCase());
}
}
@EventHandler
public void onLogin(PlayerLoginEvent event)
{
if (!_enabled)
return;
if (_capped)
{
if (UtilServer.getPlayers().length >= _cap)
{
if (!isWhitelisted(event.getPlayer().getName()))
{
event.disallow(Result.KICK_FULL, C.cGray + "That server has a set cap!\n"
+ C.cGray + "Current players " + C.cYellow + UtilServer.getPlayers().length + "/" + _cap + "\n"
+ C.cGreen + _capMessage);
}
return;
}
}
if (_whitelisted)
{
if (!isWhitelisted(event.getPlayer().getName()))
{
event.disallow(Result.KICK_FULL, C.cGray + "That server has a testing whitelist!\n"
+ C.cGray + "Current players " + C.cYellow + UtilServer.getPlayers().length + "/" + _cap + "\n"
+ C.cGreen + _capMessage);
}
return;
}
}
@EventHandler
public void onCommandTesting(PlayerCommandPreprocessEvent event)
{
if (!_enabled)
return;
String[] args = event.getMessage().split(" ");
String cmd = args[0];
if (!cmd.equalsIgnoreCase("/testing"))
return;
event.setCancelled(true);
if (!_manager.GetClients().Get(event.getPlayer()).GetRank().has(event.getPlayer(), Rank.JNR_DEV, true))
return;
if (args.length == 1) // Help
{
sendGlobalHelp(event.getPlayer());
return;
}
else if (args[1].equalsIgnoreCase("cap"))
{
if (args.length == 2)
{
sendCapHelp(event.getPlayer());
return;
}
if (args.length == 3) // No cap arguments
{
if (args[2].equalsIgnoreCase("toggle"))
{
_capped = !_capped;
UtilPlayer.message(event.getPlayer(), F.main("Testing", "Testing cap enabled " + F.tf(_capped) + "."));
return;
}
try
{
_cap = Integer.valueOf(args[2]);
UtilPlayer.message(event.getPlayer(), F.main("Testing", "Testing cap set to " + F.elem("" + _cap) + "."));
}
catch (Exception ex)
{
sendCapHelp(event.getPlayer());
}
return;
}
if (args.length >= 4)
{
if (args[2].equalsIgnoreCase("message"))
{
String message = "";
for (int i = 3 ; i < args.length ; i++)
message += (args[i] + " ");
_capMessage = message.trim();
UtilPlayer.message(event.getPlayer(), F.main("Testing", "Testing cap message set to " + F.elem(_capMessage) + "."));
return;
}
sendCapHelp(event.getPlayer());
return;
}
sendCapHelp(event.getPlayer());
return;
}
else if (args[1].equalsIgnoreCase("whitelist"))
{
if (args.length == 2)
{
sendWhitelistHelp(event.getPlayer());
return;
}
if (args.length == 3) // No cap arguments
{
if (args[2].equalsIgnoreCase("toggle"))
{
_whitelisted = !_whitelisted;
UtilPlayer.message(event.getPlayer(), F.main("Testing", "Testing whitelist enabled " + F.tf(_whitelisted) + "."));
return;
}
sendWhitelistHelp(event.getPlayer());
return;
}
if (args.length == 4)
{
if (args[2].equalsIgnoreCase("add"))
{
String playerName = args[3];
if (isWhitelisted(playerName))
{
UtilPlayer.message(event.getPlayer(), F.main("Testing", "That player is already whitelisted!"));
}
else
{
setWhitelisted(playerName, true);
UtilPlayer.message(event.getPlayer(), F.main("Testing", "You have whitelisted " + F.name(playerName) + "."));
}
return;
}
else if (args[2].equalsIgnoreCase("remove"))
{
String playerName = args[3];
if (!isWhitelisted(playerName))
{
UtilPlayer.message(event.getPlayer(), F.main("Testing", "That player is not whitelisted!"));
}
else
{
setWhitelisted(playerName, false);
UtilPlayer.message(event.getPlayer(), F.main("Testing", "You have removed " + F.name(playerName) + " from the whitelist."));
}
return;
}
}
if (args.length >= 4)
{
if (args[2].equalsIgnoreCase("message"))
{
String message = "";
for (int i = 3 ; i < args.length ; i++)
message += (args[i] + " ");
_whitelistMessage = message.trim();
UtilPlayer.message(event.getPlayer(), F.main("Testing", "Testing whitelist message set to " + F.elem(_whitelistMessage) + "."));
return;
}
sendWhitelistHelp(event.getPlayer());
return;
}
sendWhitelistHelp(event.getPlayer());
return;
}
}
private void sendGlobalHelp(Player player)
{
UtilPlayer.message(player, "");
UtilPlayer.message(player, F.main("Testing", "/testing cap"));
UtilPlayer.message(player, F.main("Testing", "/testing whitelist"));
}
private void sendCapHelp(Player player)
{
UtilPlayer.message(player, "");
UtilPlayer.message(player, F.main("Testing", "/testing cap toggle"));
UtilPlayer.message(player, F.main("Testing", "/testing cap <cap>"));
UtilPlayer.message(player, F.main("Testing", "/testing cap message <message>"));
}
private void sendWhitelistHelp(Player player)
{
UtilPlayer.message(player, "");
UtilPlayer.message(player, F.main("Testing", "/testing whitelist toggle"));
UtilPlayer.message(player, F.main("Testing", "/testing whitelist add <name>"));
UtilPlayer.message(player, F.main("Testing", "/testing whitelist remove <name>"));
UtilPlayer.message(player, F.main("Testing", "/testing whitelist message <message>"));
}
}

View File

@ -15,7 +15,7 @@ public class TitanGiveawayRepository extends RepositoryBase
public TitanGiveawayRepository(JavaPlugin plugin) public TitanGiveawayRepository(JavaPlugin plugin)
{ {
super(plugin, DBPool.ACCOUNT); super(plugin, DBPool.getAccount());
_titanGiveawayCount = 0; _titanGiveawayCount = 0;
} }

View File

@ -1,63 +0,0 @@
package nautilus.game.arcade.stats;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import mineplex.core.common.util.UtilPlayer;
import mineplex.minecraft.game.core.combat.event.CombatDeathEvent;
import nautilus.game.arcade.game.Game;
import nautilus.game.arcade.game.TeamGame;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
public class LastStandStatTracker extends StatTracker<TeamGame>
{
private final Map<UUID, Integer> _kills = new HashMap<>();
public LastStandStatTracker(TeamGame game)
{
super(game);
}
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
public void onCombatDeath(CombatDeathEvent event)
{
if (getGame().GetState() != Game.GameState.Live)
return;
if (event.GetLog().GetKiller() == null)
return;
if (!event.GetLog().GetKiller().IsPlayer())
return;
Player killer = UtilPlayer.searchExact(event.GetLog().GetKiller().GetName());
if (killer == null)
return;
if (event.GetLog().GetPlayer() == null)
return;
if (!event.GetLog().GetPlayer().IsPlayer())
return;
Player player = UtilPlayer.searchExact(event.GetLog().GetPlayer().GetName());
if (player == null)
return;
if (getGame().GetTeam(killer).GetPlayers(true).size() == 1)
{
Integer kills = _kills.get(killer.getUniqueId());
kills = (kills == null ? 0 : kills) + 1;
_kills.put(killer.getUniqueId(), kills);
if (kills >= 3)
addStat(killer, "LastStand", 1, true, false);
}
}
}

View File

@ -1,24 +0,0 @@
package nautilus.game.arcade.stats;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import nautilus.game.arcade.game.Game;
import nautilus.game.arcade.game.games.paintball.Paintball;
public class MedicStatTracker extends StatTracker<Game>
{
public MedicStatTracker(Game game)
{
super(game);
}
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
public void onCombatDeath(Paintball.ReviveEvent event)
{
if (getGame().GetState() != Game.GameState.Live)
return;
addStat(event.getPlayer(), "Medic", 1, false, false);
}
}