Merge branch 'master' of ssh://184.154.0.242:7999/min/Mineplex into alex-compvanilla
This commit is contained in:
commit
66c9fa122c
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DataSourceManagerImpl" format="xml" hash="2876127046">
|
||||
<component name="DataSourceManagerImpl" format="xml" hash="1486084220">
|
||||
<data-source source="LOCAL" name="Mineplex" uuid="14dfc55d-5343-47c4-ab24-76a055b8059e">
|
||||
<driver-ref>mysql</driver-ref>
|
||||
<synchronize>true</synchronize>
|
||||
|
@ -51,13 +51,13 @@ public abstract class DnsMadeEasyApiCallBase
|
||||
try
|
||||
{
|
||||
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.init(keySpec);
|
||||
byte[] hashBytes = mac.doFinal((timeStamp + "").getBytes());
|
||||
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-hmac", Hex.encodeHexString(hashBytes));
|
||||
request.addHeader("Content-Type", "application/json");
|
||||
|
@ -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/craftbukkit.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.Cache"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
@ -539,9 +539,10 @@ public class CustomTagFix extends MiniPlugin implements IPacketHandler, NCPHook
|
||||
DataWatcher squidWatcher = new DataWatcher(new DummyEntity(((CraftWorld) owner.getWorld()).getHandle()));
|
||||
squidWatcher.a(0, (byte) (0 | 1 << 5));
|
||||
|
||||
final PacketPlayOutSpawnEntityLiving spawnPacket = new PacketPlayOutSpawnEntityLiving();
|
||||
PacketPlayOutSpawnEntityLiving spawnPacket = new PacketPlayOutSpawnEntityLiving();
|
||||
spawnPacket.a = squidId;
|
||||
spawnPacket.b = (byte) EntityType.SQUID.getTypeId();
|
||||
spawnPacket.c = 1000000;
|
||||
|
||||
spawnPacket.l = squidWatcher;
|
||||
|
||||
@ -555,9 +556,10 @@ public class CustomTagFix extends MiniPlugin implements IPacketHandler, NCPHook
|
||||
UtilPlayer.sendPacket(owner, vehiclePacket);
|
||||
}
|
||||
|
||||
final PacketPlayOutSpawnEntityLiving spawnPacket = new PacketPlayOutSpawnEntityLiving();
|
||||
PacketPlayOutSpawnEntityLiving spawnPacket = new PacketPlayOutSpawnEntityLiving();
|
||||
spawnPacket.a = newEntityId;
|
||||
spawnPacket.b = (byte) 30;
|
||||
spawnPacket.c = 1000000;
|
||||
|
||||
spawnPacket.l = watcher;
|
||||
|
||||
|
@ -26,6 +26,7 @@ public abstract class MiniClientPlugin<DataType extends Object> extends MiniPlug
|
||||
{
|
||||
synchronized (_clientDataLock)
|
||||
{
|
||||
saveData(event.GetName(), event.getAccountId());
|
||||
_clientData.remove(event.GetName());
|
||||
}
|
||||
}
|
||||
@ -41,6 +42,8 @@ public abstract class MiniClientPlugin<DataType extends Object> extends MiniPlug
|
||||
}
|
||||
}
|
||||
|
||||
public void saveData(String name, int accountId) {}
|
||||
|
||||
public DataType Get(Player player)
|
||||
{
|
||||
return Get(player.getName());
|
||||
|
@ -35,7 +35,6 @@ import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
|
||||
import org.bukkit.event.player.AsyncPlayerPreLoginEvent.Result;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerKickEvent;
|
||||
import org.bukkit.event.player.PlayerLoginEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
@ -104,14 +103,15 @@ public class CoreClientManager extends MiniPlugin
|
||||
return newClient;
|
||||
}
|
||||
|
||||
public void Del(String name)
|
||||
public void Del(String name, int accountId)
|
||||
{
|
||||
synchronized(_clientLock)
|
||||
{
|
||||
_clientList.remove(name);
|
||||
}
|
||||
|
||||
_plugin.getServer().getPluginManager().callEvent(new ClientUnloadEvent(name));
|
||||
// rawr added account id for custom data - william
|
||||
_plugin.getServer().getPluginManager().callEvent(new ClientUnloadEvent(name, accountId));
|
||||
}
|
||||
|
||||
public CoreClient Get(String name)
|
||||
@ -365,7 +365,7 @@ public class CoreClientManager extends MiniPlugin
|
||||
|
||||
if (client == null || client.GetRank() == null)
|
||||
{
|
||||
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "There was an error logging you in. Please reconncet.");
|
||||
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "There was an error logging you in. Please reconnect.");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -407,7 +407,7 @@ public class CoreClientManager extends MiniPlugin
|
||||
|
||||
if (!_duplicateLoginGlitchPreventionList.contains(event.getPlayer().getName()))
|
||||
{
|
||||
Del(event.getPlayer().getName());
|
||||
Del(event.getPlayer().getName(), _clientList.get(event.getPlayer().getName()).getAccountId());
|
||||
_duplicateLoginGlitchPreventionList.remove(event.getPlayer().getName());
|
||||
}
|
||||
}
|
||||
@ -529,7 +529,8 @@ public class CoreClientManager extends MiniPlugin
|
||||
{
|
||||
for (Iterator<Entry<String, CoreClient>> clientIterator = _clientList.entrySet().iterator(); clientIterator.hasNext();)
|
||||
{
|
||||
Player clientPlayer = clientIterator.next().getValue().GetPlayer();
|
||||
CoreClient client = clientIterator.next().getValue(); // rawr, needed this for custom data - william
|
||||
Player clientPlayer = client.GetPlayer();
|
||||
|
||||
if (clientPlayer != null && !clientPlayer.isOnline())
|
||||
{
|
||||
@ -537,7 +538,7 @@ public class CoreClientManager extends MiniPlugin
|
||||
|
||||
if (clientPlayer != null)
|
||||
{
|
||||
_plugin.getServer().getPluginManager().callEvent(new ClientUnloadEvent(clientPlayer.getName()));
|
||||
_plugin.getServer().getPluginManager().callEvent(new ClientUnloadEvent(clientPlayer.getName(), client.getAccountId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -8,10 +8,12 @@ public class ClientUnloadEvent extends Event
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
|
||||
private String _name;
|
||||
private int _accountId;
|
||||
|
||||
public ClientUnloadEvent(String name)
|
||||
public ClientUnloadEvent(String name, int accountId)
|
||||
{
|
||||
_name = name;
|
||||
_accountId = accountId;
|
||||
}
|
||||
|
||||
public String GetName()
|
||||
@ -19,6 +21,11 @@ public class ClientUnloadEvent extends Event
|
||||
return _name;
|
||||
}
|
||||
|
||||
public int getAccountId()
|
||||
{
|
||||
return _accountId;
|
||||
}
|
||||
|
||||
public HandlerList getHandlers()
|
||||
{
|
||||
return handlers;
|
||||
|
@ -46,7 +46,7 @@ public class AccountRepository extends RepositoryBase
|
||||
|
||||
public AccountRepository(JavaPlugin plugin, String webAddress)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
|
||||
_webAddress = webAddress;
|
||||
}
|
||||
|
@ -2,6 +2,10 @@ package mineplex.core.achievement;
|
||||
|
||||
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.common.Rank;
|
||||
import mineplex.core.common.util.C;
|
||||
@ -10,10 +14,6 @@ import mineplex.core.game.GameDisplay;
|
||||
import mineplex.core.stats.PlayerStats;
|
||||
import mineplex.core.stats.StatsManager;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public enum AchievementCategory
|
||||
{
|
||||
GLOBAL("Global", null,
|
||||
@ -109,7 +109,7 @@ public enum AchievementCategory
|
||||
|
||||
SUPER_PAINTBALL("Super Paintball", null,
|
||||
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,
|
||||
new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED },
|
||||
|
@ -33,7 +33,7 @@ public class AntiHackRepository
|
||||
{
|
||||
PreparedStatement preparedStatement = null;
|
||||
|
||||
try (Connection connection = DBPool.STATS_MINEPLEX.getConnection())
|
||||
try (Connection connection = DBPool.getStats().getConnection())
|
||||
{
|
||||
preparedStatement = connection.prepareStatement(UPDATE_PLAYER_OFFENSES);
|
||||
|
||||
|
@ -19,7 +19,7 @@ public class BenefitManagerRepository extends RepositoryBase
|
||||
|
||||
public BenefitManagerRepository(JavaPlugin plugin)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -678,22 +678,19 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
||||
|
||||
if (rank.has(Rank.TITAN))
|
||||
{
|
||||
data.setAncientChests(6);
|
||||
data.setMythicalChests(3);
|
||||
data.setMythicalChests(5);
|
||||
}
|
||||
else if (rank.has(Rank.LEGEND))
|
||||
{
|
||||
data.setAncientChests(4);
|
||||
data.setMythicalChests(1);
|
||||
data.setMythicalChests(3);
|
||||
}
|
||||
else if (rank.has(Rank.HERO))
|
||||
{
|
||||
data.setAncientChests(3);
|
||||
data.setMythicalChests(2);
|
||||
}
|
||||
else if (rank.has(Rank.ULTRA))
|
||||
{
|
||||
data.setOldChests(3);
|
||||
data.setAncientChests(1);
|
||||
data.setMythicalChests(1);
|
||||
}
|
||||
|
||||
return data;
|
||||
@ -792,7 +789,7 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
||||
{
|
||||
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();
|
||||
runSync(new Runnable()
|
||||
{
|
||||
|
@ -36,7 +36,7 @@ public class BonusRepository extends RepositoryBase
|
||||
|
||||
public BonusRepository(JavaPlugin plugin, BonusManager bonusManager, DonationManager donationManager)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
_manager = bonusManager;
|
||||
_donationManager = donationManager;
|
||||
}
|
||||
@ -145,7 +145,7 @@ public class BonusRepository extends RepositoryBase
|
||||
{
|
||||
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)).
|
||||
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();
|
||||
|
@ -24,7 +24,7 @@ public class BotSpamRepository extends RepositoryBase
|
||||
|
||||
public BotSpamRepository(JavaPlugin plugin)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
}
|
||||
|
||||
public ArrayList<SpamText> getSpamText()
|
||||
|
@ -117,7 +117,7 @@ public class Menu extends ShopPageBase<CosmeticManager, CosmeticShop>
|
||||
Mount<?> mountActive = getPlugin().getMountManager().getActive(getPlayer());
|
||||
for (Mount<?> mount : getPlugin().getMountManager().getMounts())
|
||||
{
|
||||
if (mount.HasMount(getPlayer()))
|
||||
if (getDonationManager().Get(getPlayer()).OwnsUnknownPackage(mount.GetName()) || mount.HasMount(getPlayer()))
|
||||
{
|
||||
mountOwned++;
|
||||
}
|
||||
|
@ -0,0 +1,21 @@
|
||||
package mineplex.core.customdata;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* Created by William (WilliamTiger).
|
||||
* 17/12/15
|
||||
*/
|
||||
public class CorePlayer extends MineplexPlayer
|
||||
{
|
||||
public CorePlayer(Player player, CustomDataManager customDataManager)
|
||||
{
|
||||
super(player, customDataManager);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getKeyPrefix()
|
||||
{
|
||||
return "core.";
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package mineplex.core.customdata;
|
||||
|
||||
/**
|
||||
* Created by William (WilliamTiger).
|
||||
* 16/12/15
|
||||
*/
|
||||
public class CustomData
|
||||
{
|
||||
private int _id;
|
||||
private String _key;
|
||||
|
||||
public CustomData(int id, String key)
|
||||
{
|
||||
_id = id;
|
||||
_key = key;
|
||||
}
|
||||
|
||||
public int getId()
|
||||
{
|
||||
return _id;
|
||||
}
|
||||
|
||||
public String getKey()
|
||||
{
|
||||
return _key;
|
||||
}
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
package mineplex.core.customdata;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import mineplex.core.MiniDbClientPlugin;
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
import mineplex.core.customdata.repository.CustomDataRepository;
|
||||
|
||||
/**
|
||||
* Created by William (WilliamTiger).
|
||||
* 16/12/15
|
||||
*/
|
||||
public class CustomDataManager extends MiniDbClientPlugin<PlayerCustomData>
|
||||
{
|
||||
private CustomDataRepository _repository;
|
||||
|
||||
public CustomDataManager(JavaPlugin plugin, CoreClientManager clientManager)
|
||||
{
|
||||
super("Custom Data Manager", plugin, clientManager);
|
||||
|
||||
_repository = new CustomDataRepository(plugin, clientManager, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processLoginResultSet(String playerName, int accountId, ResultSet resultSet) throws SQLException
|
||||
{
|
||||
PlayerCustomData data = new PlayerCustomData(_repository);
|
||||
while (resultSet.next())
|
||||
{
|
||||
data.setData(_repository.getKey(resultSet.getInt("customDataId")), resultSet.getInt("data"));
|
||||
}
|
||||
Set(playerName, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getQuery(int accountId, String uuid, String name)
|
||||
{
|
||||
return "SELECT accountId, customDataId, data FROM accountCustomData INNER JOIN customData ON customData.id = accountCustomData.customDataId WHERE accountId = " + accountId + ";";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PlayerCustomData AddPlayer(String player)
|
||||
{
|
||||
return new PlayerCustomData(_repository);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveData(String name, int accountId)
|
||||
{
|
||||
_repository.saveData(name, accountId);
|
||||
}
|
||||
|
||||
public CorePlayer getCorePlayer(Player player)
|
||||
{
|
||||
return new CorePlayer(player, this);
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package mineplex.core.customdata;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* Created by William (WilliamTiger).
|
||||
* 16/12/15
|
||||
*/
|
||||
public abstract class MineplexPlayer
|
||||
{
|
||||
private Player _player;
|
||||
private CustomDataManager _customDataManager;
|
||||
|
||||
public MineplexPlayer(Player player, CustomDataManager customDataManager)
|
||||
{
|
||||
_player = player;
|
||||
_customDataManager = customDataManager;
|
||||
}
|
||||
|
||||
public Player getPlayer()
|
||||
{
|
||||
return _player;
|
||||
}
|
||||
|
||||
public String getKeyPrefix()
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
public void put(String key, int data)
|
||||
{
|
||||
key = getKeyPrefix() + key;
|
||||
_customDataManager.Get(getPlayer()).setData(key, data);
|
||||
}
|
||||
|
||||
public int get(String key)
|
||||
{
|
||||
key = getKeyPrefix() + key;
|
||||
return _customDataManager.Get(getPlayer()).getData(key);
|
||||
}
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
package mineplex.core.customdata;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import mineplex.core.customdata.repository.CustomDataRepository;
|
||||
|
||||
/**
|
||||
* Created by William (WilliamTiger).
|
||||
* 16/12/15
|
||||
*/
|
||||
public class PlayerCustomData
|
||||
{
|
||||
private HashMap<CustomData, Integer> _data;
|
||||
private CustomDataRepository _repository;
|
||||
|
||||
public PlayerCustomData(CustomDataRepository repository)
|
||||
{
|
||||
_data = new HashMap<>();
|
||||
_repository = repository;
|
||||
}
|
||||
|
||||
public HashMap<CustomData, Integer> getDataMap()
|
||||
{
|
||||
return _data;
|
||||
}
|
||||
|
||||
public void setData(CustomData cd, int amount)
|
||||
{
|
||||
_data.put(cd, amount);
|
||||
}
|
||||
|
||||
public void setData(String key, int amount)
|
||||
{
|
||||
if (_repository.doesKeyExist(key))
|
||||
{
|
||||
setData(_repository.getKey(key), amount);
|
||||
return;
|
||||
}
|
||||
|
||||
_repository.getClientManager().getScheduler().runTaskAsynchronously(
|
||||
_repository.getClientManager().getPlugin(),
|
||||
new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
_repository.registerKey(key); // Make sure it's in the DB.
|
||||
|
||||
setData(_repository.getKey(key), amount); // Input
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public int getData(String key)
|
||||
{
|
||||
if (_data.containsKey(_repository.getKey(key)))
|
||||
return _data.get(_repository.getKey(key));
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,148 @@
|
||||
package mineplex.core.customdata.repository;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
import mineplex.core.customdata.CustomData;
|
||||
import mineplex.core.customdata.CustomDataManager;
|
||||
import mineplex.core.customdata.PlayerCustomData;
|
||||
import mineplex.core.database.DBPool;
|
||||
import mineplex.core.database.RepositoryBase;
|
||||
import mineplex.core.database.ResultSetCallable;
|
||||
import mineplex.core.database.column.ColumnInt;
|
||||
import mineplex.core.database.column.ColumnVarChar;
|
||||
|
||||
/**
|
||||
* Created by William (WilliamTiger).
|
||||
* 16/12/15
|
||||
*/
|
||||
public class CustomDataRepository extends RepositoryBase
|
||||
{
|
||||
private static final String SELECT_KEYS = "SELECT id, name FROM customData;";
|
||||
private static final String INSERT_KEY = "INSERT INTO customData (name) VALUES (?);";
|
||||
private static final String UPDATE_DATA = "UPDATE accountCustomData SET data = ? WHERE accountId = ? AND customDataId = ?;";
|
||||
private static final String INSERT_DATA = "INSERT INTO accountCustomData (accountId, customDataId, data) VALUES (?, ?, ?);";
|
||||
|
||||
private ArrayList<CustomData> _dataKeys;
|
||||
|
||||
private CoreClientManager _clientManager;
|
||||
private CustomDataManager _customDataManager;
|
||||
|
||||
public CustomDataRepository(JavaPlugin plugin, CoreClientManager clientManager, CustomDataManager customDataManager)
|
||||
{
|
||||
super(plugin, DBPool.getAccount());
|
||||
|
||||
_clientManager = clientManager;
|
||||
_customDataManager = customDataManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initialize()
|
||||
{
|
||||
downloadDataKeys();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void update() {}
|
||||
|
||||
private void downloadDataKeys()
|
||||
{
|
||||
_dataKeys = new ArrayList<>();
|
||||
|
||||
executeQuery(SELECT_KEYS, new ResultSetCallable()
|
||||
{
|
||||
@Override
|
||||
public void processResultSet(ResultSet resultSet) throws SQLException
|
||||
{
|
||||
while (resultSet.next())
|
||||
{
|
||||
_dataKeys.add(new CustomData(resultSet.getInt("id"), resultSet.getString("name")));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void saveData(String name, int accountId)
|
||||
{
|
||||
PlayerCustomData data = _customDataManager.Get(name);
|
||||
|
||||
for (CustomData cd : data.getDataMap().keySet())
|
||||
{
|
||||
|
||||
executeInsert(UPDATE_DATA, new ResultSetCallable()
|
||||
{
|
||||
@Override
|
||||
public void processResultSet(ResultSet resultSet) throws SQLException
|
||||
{
|
||||
|
||||
if (!resultSet.isBeforeFirst())
|
||||
{
|
||||
|
||||
// Not already in the DB
|
||||
executeUpdate(
|
||||
INSERT_DATA,
|
||||
new ColumnInt("account", accountId),
|
||||
new ColumnInt("customData", cd.getId()),
|
||||
new ColumnInt("data", data.getDataMap().get(cd))
|
||||
);
|
||||
}
|
||||
}
|
||||
},
|
||||
new ColumnInt("data", data.getDataMap().get(cd)),
|
||||
new ColumnInt("account", accountId),
|
||||
new ColumnInt("customData", cd.getId())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public void registerKey(String key)
|
||||
{
|
||||
if (doesKeyExist(key))
|
||||
return;
|
||||
|
||||
executeUpdate(INSERT_KEY, new ColumnVarChar("name", 100, key));
|
||||
downloadDataKeys();
|
||||
}
|
||||
|
||||
public ArrayList<CustomData> getDataKeys()
|
||||
{
|
||||
return _dataKeys;
|
||||
}
|
||||
|
||||
public boolean doesKeyExist(String key)
|
||||
{
|
||||
for (CustomData cur : _dataKeys)
|
||||
if (cur.getKey().equals(key))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public CustomData getKey(int id)
|
||||
{
|
||||
for (CustomData cur : _dataKeys)
|
||||
if (cur.getId() == id)
|
||||
return cur;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public CustomData getKey(String key)
|
||||
{
|
||||
for (CustomData cur : _dataKeys)
|
||||
if (cur.getKey().equals(key))
|
||||
return cur;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public CoreClientManager getClientManager()
|
||||
{
|
||||
return _clientManager;
|
||||
}
|
||||
}
|
@ -1,16 +1,26 @@
|
||||
package mineplex.core.database;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.file.Files;
|
||||
import java.sql.Connection;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
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 static final DataSource ACCOUNT = openDataSource("jdbc:mysql://db.mineplex.com/Account", "MilitaryPolice", "CUPr6Wuw2Rus$qap");
|
||||
public static final DataSource QUEUE = openDataSource("jdbc:mysql://db.mineplex.com/Queue", "MilitaryPolice", "CUPr6Wuw2Rus$qap");
|
||||
public static final DataSource MINEPLEX = openDataSource("jdbc:mysql://db.mineplex.com:3306/Mineplex", "MilitaryPolice", "CUPr6Wuw2Rus$qap");
|
||||
public static final DataSource STATS_MINEPLEX = openDataSource("jdbc:mysql://sqlstats.mineplex.com:3306/Mineplex", "root", "tAbechAk3wR7tuTh");
|
||||
private static DataSource ACCOUNT;
|
||||
private static DataSource QUEUE;
|
||||
private static DataSource MINEPLEX;
|
||||
private static DataSource STATS_MINEPLEX;
|
||||
|
||||
private static DataSource openDataSource(String url, String username, String password)
|
||||
{
|
||||
@ -30,8 +40,86 @@ public final class DBPool
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -68,7 +68,7 @@ public abstract class RepositoryBase implements Listener
|
||||
|
||||
protected DSLContext jooq()
|
||||
{
|
||||
return DSL.using(DBPool.ACCOUNT, SQLDialect.MYSQL);
|
||||
return DSL.using(DBPool.getAccount(), SQLDialect.MYSQL);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -37,7 +37,7 @@ public class DonationRepository extends RepositoryBase
|
||||
|
||||
public DonationRepository(JavaPlugin plugin, String webAddress)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
|
||||
_webAddress = webAddress;
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ public class EloRepository extends RepositoryBase
|
||||
|
||||
public EloRepository(JavaPlugin plugin)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
|
||||
initialize();
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ public class FriendRepository extends RepositoryBase
|
||||
|
||||
public FriendRepository(JavaPlugin plugin)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
|
||||
_repository = new RedisDataRepository<PlayerStatus>(ServerManager.getMasterConnection(), ServerManager.getSlaveConnection(),
|
||||
Region.currentRegion(), PlayerStatus.class, "playerStatus");
|
||||
|
@ -45,6 +45,9 @@ import mineplex.core.gadget.set.SetFrostLord;
|
||||
import mineplex.core.gadget.set.SetRaveSuit;
|
||||
import mineplex.core.gadget.set.SetSpaceSuit;
|
||||
import mineplex.core.gadget.set.SetTitan;
|
||||
import mineplex.core.gadget.types.ArrowEffectGadget;
|
||||
import mineplex.core.gadget.types.DeathEffectGadget;
|
||||
import mineplex.core.gadget.types.DoubleJumpEffectGadget;
|
||||
import mineplex.core.gadget.types.Gadget;
|
||||
import mineplex.core.gadget.types.GadgetSet;
|
||||
import mineplex.core.gadget.types.GadgetType;
|
||||
@ -329,6 +332,15 @@ public class GadgetManager extends MiniPlugin
|
||||
if (gadget instanceof ParticleGadget)
|
||||
continue;
|
||||
|
||||
if (gadget instanceof ArrowEffectGadget)
|
||||
continue;
|
||||
|
||||
if (gadget instanceof DoubleJumpEffectGadget)
|
||||
continue;
|
||||
|
||||
if (gadget instanceof DeathEffectGadget)
|
||||
continue;
|
||||
|
||||
for (Player player : UtilServer.getPlayers())
|
||||
gadget.Disable(player);
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ public class HatGrinch extends HatGadget
|
||||
super(manager, "The Grinch",
|
||||
UtilText.splitLineToArray(C.cGray + "Great! Now where’s the Roast Beast?!", LineFormat.LORE),
|
||||
-3,
|
||||
SkinData.THE_GRINCH.getSkull());
|
||||
SkinData.THE_GRINCH.getSkull(), "The Grinch Hat");
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -17,9 +17,9 @@ public abstract class HatGadget extends OutfitGadget
|
||||
|
||||
private ItemStack _hat;
|
||||
|
||||
public HatGadget(GadgetManager manager, String name, String[] desc, int cost, ItemStack item)
|
||||
public HatGadget(GadgetManager manager, String name, String[] desc, int cost, ItemStack item, String... altNames)
|
||||
{
|
||||
super(manager, name, desc, cost, ArmorSlot.Helmet, item.getType(), item.getData().getData());
|
||||
super(manager, name, desc, cost, ArmorSlot.Helmet, item.getType(), item.getData().getData(), altNames);
|
||||
_hat = item;
|
||||
|
||||
ItemMeta im = _hat.getItemMeta();
|
||||
|
@ -20,9 +20,9 @@ public abstract class OutfitGadget extends Gadget
|
||||
|
||||
protected ArmorSlot _slot;
|
||||
|
||||
public OutfitGadget(GadgetManager manager, String name, String[] desc, int cost, ArmorSlot slot, Material mat, byte data)
|
||||
public OutfitGadget(GadgetManager manager, String name, String[] desc, int cost, ArmorSlot slot, Material mat, byte data, String... altNames)
|
||||
{
|
||||
super(manager, GadgetType.Costume, name, desc, cost, mat, data);
|
||||
super(manager, GadgetType.Costume, name, desc, cost, mat, data, 1, altNames);
|
||||
|
||||
_slot = slot;
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ public class GiveawayRepository extends RepositoryBase
|
||||
|
||||
public GiveawayRepository(JavaPlugin plugin)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
}
|
||||
|
||||
public boolean canGiveaway(int accountId, String giveawayName, String cooldownName)
|
||||
|
@ -4,11 +4,14 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
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.Packet;
|
||||
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.PacketPlayOutEntityTeleport;
|
||||
import net.minecraft.server.v1_8_R3.PacketPlayOutSpawnEntityLiving;
|
||||
import mineplex.core.common.util.UtilEnt;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
|
||||
public class Hologram
|
||||
{
|
||||
@ -313,7 +314,7 @@ public class Hologram
|
||||
*/
|
||||
public Hologram removePlayer(Player player)
|
||||
{
|
||||
return addPlayer(player.getName());
|
||||
return removePlayer(player.getName());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -17,7 +17,7 @@ public class IgnoreRepository extends RepositoryBase
|
||||
|
||||
public IgnoreRepository(JavaPlugin plugin)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -29,7 +29,7 @@ public class InventoryRepository extends RepositoryBase
|
||||
|
||||
public InventoryRepository(JavaPlugin plugin)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -36,7 +36,7 @@ public class StatEventsRepository extends RepositoryBase
|
||||
*/
|
||||
public StatEventsRepository(JavaPlugin plugin)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -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
|
||||
{
|
||||
try (Connection connection = DBPool.ACCOUNT.getConnection())
|
||||
try (Connection connection = DBPool.getAccount().getConnection())
|
||||
{
|
||||
String helmet = itemStackToYaml(player.getInventory().getHelmet());
|
||||
String chestplate = itemStackToYaml(player.getInventory().getChestplate());
|
||||
@ -386,7 +386,7 @@ public class NpcManager extends MiniPlugin
|
||||
|
||||
if (npc != null)
|
||||
{
|
||||
try (Connection connection = DBPool.ACCOUNT.getConnection())
|
||||
try (Connection connection = DBPool.getAccount().getConnection())
|
||||
{
|
||||
npc.getDatabaseRecord().attach(DSL.using(connection).configuration());
|
||||
npc.getDatabaseRecord().delete();
|
||||
@ -493,7 +493,7 @@ public class NpcManager extends MiniPlugin
|
||||
{
|
||||
String serverType = getServerName();
|
||||
|
||||
try (Connection connection = DBPool.ACCOUNT.getConnection())
|
||||
try (Connection connection = DBPool.getAccount().getConnection())
|
||||
{
|
||||
Result<NpcsRecord> result = DSL.using(connection)
|
||||
.selectFrom(Tables.npcs)
|
||||
@ -519,7 +519,7 @@ public class NpcManager extends MiniPlugin
|
||||
{
|
||||
String serverType = getServerName();
|
||||
|
||||
try (Connection connection = DBPool.ACCOUNT.getConnection())
|
||||
try (Connection connection = DBPool.getAccount().getConnection())
|
||||
{
|
||||
DSL.using(connection)
|
||||
.delete(Tables.npcs)
|
||||
|
@ -22,7 +22,7 @@ public class PetRepository extends RepositoryBase
|
||||
|
||||
public PetRepository(JavaPlugin plugin, String webAddress)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
|
||||
_webAddress = webAddress;
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ public class PollRepository extends RepositoryBase
|
||||
|
||||
public PollRepository(JavaPlugin plugin)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -28,7 +28,7 @@ public class PreferencesRepository extends RepositoryBase
|
||||
|
||||
public PreferencesRepository(JavaPlugin plugin)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -41,7 +41,7 @@ This will be used to determine if staff are handling
|
||||
|
||||
public ReportRepository(JavaPlugin plugin, String connectionString)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,41 +0,0 @@
|
||||
package mineplex.core.resourcepack;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import mineplex.core.resourcepack.redis.RedisUnloadResPack;
|
||||
import mineplex.serverdata.commands.CommandCallback;
|
||||
import mineplex.serverdata.commands.ServerCommand;
|
||||
import mineplex.serverdata.commands.ServerCommandManager;
|
||||
|
||||
public class ResPackManager implements CommandCallback
|
||||
{
|
||||
private ResUnloadCheck _packUnloadCheck;
|
||||
|
||||
public ResPackManager(ResUnloadCheck packUnloadCheck)
|
||||
{
|
||||
_packUnloadCheck = packUnloadCheck;
|
||||
|
||||
ServerCommandManager.getInstance().registerCommandType("RedisUnloadResPack", RedisUnloadResPack.class, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(ServerCommand command)
|
||||
{
|
||||
if (command instanceof RedisUnloadResPack)
|
||||
{
|
||||
RedisUnloadResPack redisCommand = (RedisUnloadResPack) command;
|
||||
|
||||
Player player = Bukkit.getPlayerExact(redisCommand.getPlayer());
|
||||
|
||||
if (player != null)
|
||||
{
|
||||
if (_packUnloadCheck.canSendUnload(player))
|
||||
{
|
||||
player.setResourcePack("http://file.mineplex.com/ResReset.zip");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
package mineplex.core.resourcepack;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public interface ResUnloadCheck
|
||||
{
|
||||
|
||||
public boolean canSendUnload(Player player);
|
||||
}
|
@ -0,0 +1,238 @@
|
||||
package mineplex.core.resourcepack;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.player.PlayerResourcePackStatusEvent;
|
||||
import org.bukkit.event.player.PlayerResourcePackStatusEvent.Status;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
|
||||
import mineplex.core.MiniPlugin;
|
||||
import mineplex.core.common.jsonchat.ClickEvent;
|
||||
import mineplex.core.common.jsonchat.JsonMessage;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.NautHashMap;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.portal.Portal;
|
||||
import mineplex.core.resourcepack.redis.RedisUnloadResPack;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.serverdata.commands.CommandCallback;
|
||||
import mineplex.serverdata.commands.ServerCommand;
|
||||
import mineplex.serverdata.commands.ServerCommandManager;
|
||||
|
||||
public class ResourcePackManager extends MiniPlugin implements CommandCallback
|
||||
{
|
||||
private String _resourcePackUrl;
|
||||
private boolean _resourcePackRequired;
|
||||
private NautHashMap<String, Boolean> _resourcePackUsers = new NautHashMap<String, Boolean>();
|
||||
private NautHashMap<String, Long> _resourcePackNoResponse = new NautHashMap<String, Long>();
|
||||
private Portal _portal;
|
||||
|
||||
public ResourcePackManager(JavaPlugin plugin, Portal portal)
|
||||
{
|
||||
super("Resource Pack Manager", plugin);
|
||||
|
||||
_portal = portal;
|
||||
|
||||
ServerCommandManager.getInstance().registerCommandType("RedisUnloadResPack", RedisUnloadResPack.class, this);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void ResourcePackJoin(PlayerJoinEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if (_resourcePackUrl == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_resourcePackRequired)
|
||||
{
|
||||
_resourcePackNoResponse.put(player.getName(), System.currentTimeMillis());
|
||||
}
|
||||
|
||||
_resourcePackUsers.put(player.getName(), false);
|
||||
player.setResourcePack(_resourcePackUrl);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onSecond(UpdateEvent event)
|
||||
{
|
||||
Iterator<Entry<String, Long>> itel = _resourcePackNoResponse.entrySet().iterator();
|
||||
|
||||
while (itel.hasNext())
|
||||
{
|
||||
Entry<String, Long> entry = itel.next();
|
||||
|
||||
if (!UtilTime.elapsed(entry.getValue(), 20000))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
Player player = Bukkit.getPlayerExact(entry.getKey());
|
||||
|
||||
if (player == null)
|
||||
{
|
||||
itel.remove();
|
||||
continue;
|
||||
}
|
||||
|
||||
// Send it again, enforce it!
|
||||
_resourcePackNoResponse.put(player.getName(), System.currentTimeMillis());
|
||||
player.setResourcePack(_resourcePackUrl);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onResourcePackStatus(PlayerResourcePackStatusEvent event)
|
||||
{
|
||||
if (_resourcePackUrl == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if (_resourcePackRequired)
|
||||
{
|
||||
if (event.getStatus() == Status.ACCEPTED)
|
||||
{
|
||||
_resourcePackNoResponse.remove(player.getName());
|
||||
}
|
||||
else if (event.getStatus() == Status.DECLINED)
|
||||
{
|
||||
_resourcePackNoResponse.remove(player.getName());
|
||||
|
||||
UtilPlayer.message(player, " ");
|
||||
JsonMessage message = new JsonMessage("").color("gold").bold()
|
||||
.extra("You need to accept the resource pack!\n" + "Click me for instructions on how to fix this!")
|
||||
|
||||
.click(ClickEvent.OPEN_URL,
|
||||
|
||||
"http://mineplex.com/forums/m/11929946/viewthread/21554536-wizards-resource-pack-help");
|
||||
|
||||
message.sendToPlayer(player);
|
||||
UtilPlayer.message(player, " ");
|
||||
|
||||
returnHubNoResPack(player);
|
||||
}
|
||||
else if (event.getStatus() == Status.FAILED_DOWNLOAD)
|
||||
{
|
||||
_resourcePackNoResponse.remove(player.getName());
|
||||
|
||||
returnHubNoResPack(player, "Failed to download resource pack!");
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (event.getStatus() == Status.ACCEPTED || event.getStatus() == Status.SUCCESSFULLY_LOADED)
|
||||
{
|
||||
_resourcePackUsers.put(player.getName(), true);
|
||||
}
|
||||
else
|
||||
{
|
||||
_resourcePackUsers.remove(player.getName());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void ResourcePackQuit(PlayerQuitEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if (!_resourcePackUsers.containsKey(player.getName()) || !_resourcePackUsers.get(player.getName()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
new RedisUnloadResPack(player.getName()).publish();
|
||||
|
||||
_resourcePackUsers.remove(player.getName());
|
||||
}
|
||||
|
||||
private void returnHubNoResPack(Player player)
|
||||
{
|
||||
player.playSound(player.getLocation(), Sound.ENDERDRAGON_GROWL, 10f, 1f);
|
||||
_portal.sendPlayerToServer(player, "Lobby");
|
||||
}
|
||||
|
||||
private void returnHubNoResPack(Player player, String message)
|
||||
{
|
||||
UtilPlayer.message(player, " ");
|
||||
UtilPlayer.message(player, C.cGold + C.Bold + message);
|
||||
UtilPlayer.message(player, " ");
|
||||
|
||||
returnHubNoResPack(player);
|
||||
}
|
||||
|
||||
public void setResourcePack(String resourcePack, boolean forceResourcePack)
|
||||
{
|
||||
if (Objects.equal(resourcePack, _resourcePackUrl) && forceResourcePack == _resourcePackRequired)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_resourcePackNoResponse.clear();
|
||||
_resourcePackUsers.clear();
|
||||
_resourcePackUrl = resourcePack == null || resourcePack.isEmpty() ? null : resourcePack;
|
||||
_resourcePackRequired = forceResourcePack;
|
||||
|
||||
if (_resourcePackUrl == null || _resourcePackUrl.isEmpty())
|
||||
{
|
||||
_resourcePackRequired = false;
|
||||
|
||||
for (Player player : Bukkit.getOnlinePlayers())
|
||||
{
|
||||
player.setResourcePack("http://file.mineplex.com/ResReset.zip");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (Player player : Bukkit.getOnlinePlayers())
|
||||
{
|
||||
if (_resourcePackRequired)
|
||||
{
|
||||
_resourcePackNoResponse.put(player.getName(), System.currentTimeMillis());
|
||||
}
|
||||
|
||||
_resourcePackUsers.put(player.getName(), false);
|
||||
player.setResourcePack(_resourcePackUrl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(ServerCommand command)
|
||||
{
|
||||
if (command instanceof RedisUnloadResPack)
|
||||
{
|
||||
RedisUnloadResPack redisCommand = (RedisUnloadResPack) command;
|
||||
|
||||
Player player = Bukkit.getPlayerExact(redisCommand.getPlayer());
|
||||
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_resourcePackUsers.containsKey(player.getName()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
player.setResourcePack("http://file.mineplex.com/ResReset.zip");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -45,7 +45,7 @@ public class RewardManager
|
||||
|
||||
private int _uncommonShards = 100;
|
||||
private int _rareShards = 500;
|
||||
private int _legendaryShards = 6000;
|
||||
private int _legendaryShards = 5000;
|
||||
|
||||
|
||||
public RewardManager(CoreClientManager clientManager, ServerStatusManager statusManager, DonationManager donationManager, InventoryManager inventoryManager, PetManager petManager, StatsManager statsManager, GiveawayManager giveawayManager,
|
||||
@ -264,11 +264,11 @@ public class RewardManager
|
||||
addReward(RewardPool.Type.WINTER_HOLIDAY, new UnknownPackageReward(donationManager, "Death Effect", "Candy Cane Remains", "Candy Cane Remains",
|
||||
new ItemStack(Material.SNOW_BALL), rarity, 5, _rareShards));
|
||||
addReward(RewardPool.Type.WINTER_HOLIDAY, new UnknownPackageReward(donationManager, "Particles", "Crushed Candy Cane", "Crushed Candy Cane",
|
||||
new ItemStack(Material.SNOW_BALL), rarity, 5, _legendaryShards));
|
||||
new ItemStack(Material.SNOW_BALL), rarity, 5, _rareShards));
|
||||
addReward(RewardPool.Type.WINTER_HOLIDAY, new UnknownPackageReward(donationManager, "Arrow Effect", "Candy Cane Arrows", "Candy Cane Arrows",
|
||||
new ItemStack(Material.SNOW_BALL), rarity, 5, _legendaryShards));
|
||||
new ItemStack(Material.SNOW_BALL), rarity, 5, _rareShards));
|
||||
addReward(RewardPool.Type.WINTER_HOLIDAY, new UnknownPackageReward(donationManager, "Jump Effect", "Candy Cane Blast", "Candy Cane Blast",
|
||||
new ItemStack(Material.SNOW_BALL), rarity, 5, _legendaryShards));
|
||||
new ItemStack(Material.SNOW_BALL), rarity, 5, _rareShards));
|
||||
|
||||
// Mounts
|
||||
addReward(new UnknownPackageReward(donationManager, "Mount", "Mule", "Mount Mule",
|
||||
@ -326,7 +326,7 @@ public class RewardManager
|
||||
// addReward(new CoinReward(donationManager, (int)minValue, (int)maxValue, 25, rarity));
|
||||
}
|
||||
|
||||
addReward(RewardPool.Type.WINTER_HOLIDAY, new UnknownPackageReward(donationManager, "Hat", "The Grinch", "The Grinch Hat",
|
||||
addReward(RewardPool.Type.WINTER_HOLIDAY, new UnknownPackageReward(donationManager, "Hat", "The Grinch", "The Grinch",
|
||||
SkinData.THE_GRINCH.getSkull(), rarity, 5, _legendaryShards));
|
||||
addReward(RewardPool.Type.WINTER_HOLIDAY, new UnknownPackageReward(donationManager, "Morph", "Olaf", "Olaf Morph",
|
||||
new ItemStack(Material.SNOW_BALL), rarity, 5, _legendaryShards));
|
||||
@ -341,7 +341,7 @@ public class RewardManager
|
||||
addReward(RewardPool.Type.WINTER_HOLIDAY, new UnknownPackageReward(donationManager, "Jump Effect", "Gust of the Frost Lord", "Gust of the Frost Lord",
|
||||
new ItemStack(Material.SNOW_BALL), rarity, 5, _legendaryShards));
|
||||
addReward(RewardPool.Type.WINTER_HOLIDAY, new UnknownPackageReward(donationManager, "Death Effect", "Fall of the Frost Lord", "Fall of the Frost Lord",
|
||||
new ItemStack(Material.SNOW_BALL), rarity, 5, _rareShards));
|
||||
new ItemStack(Material.SNOW_BALL), rarity, 5, _legendaryShards));
|
||||
|
||||
// Mounts
|
||||
addReward(new UnknownPackageReward(donationManager, "Mount", "Infernal Horror", "Infernal Horror",
|
||||
@ -480,12 +480,17 @@ public class RewardManager
|
||||
}
|
||||
}
|
||||
|
||||
if (!isExcluded)
|
||||
{
|
||||
possibleRewards.add(treasure);
|
||||
totalWeight += treasure.getWeight();
|
||||
}
|
||||
}
|
||||
|
||||
if (possibleRewards.size() == 0)
|
||||
{
|
||||
totalWeight = 0;
|
||||
|
||||
// go again, ignore excluded
|
||||
for (Reward treasure : treasureList)
|
||||
{
|
||||
|
@ -9,8 +9,8 @@ public enum RewardType
|
||||
|
||||
OldChest( 0, 0.06, 0.8, 16),
|
||||
AncientChest( 0, 2, 8, 32),
|
||||
MythicalChest( 0.3, 4, 16, 72),
|
||||
WinterChest( 0, 6, 20, 32),
|
||||
MythicalChest( 0.1, 4, 16, 72),
|
||||
WinterChest( 0, 5, 18, 32),
|
||||
|
||||
SpinnerFiller( 0.1, 1, 4, 20),
|
||||
SpinnerReal( 0.000001, 0.05, 0.4, 5);
|
||||
|
@ -23,7 +23,7 @@ public class SpawnRepository extends RepositoryBase
|
||||
|
||||
public SpawnRepository(JavaPlugin plugin, String serverName)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
_serverName = serverName;
|
||||
}
|
||||
|
||||
|
@ -22,6 +22,13 @@ public class PlayerStats
|
||||
return _statHash.get(statName);
|
||||
}
|
||||
|
||||
public long setStat(String statName, long value)
|
||||
{
|
||||
_statHash.put(statName, value);
|
||||
|
||||
return _statHash.get(statName);
|
||||
}
|
||||
|
||||
public long getStat(String statName)
|
||||
{
|
||||
return _statHash.containsKey(statName) ? _statHash.get(statName) : 0L;
|
||||
|
@ -14,6 +14,7 @@ import mineplex.core.database.RepositoryBase;
|
||||
import mineplex.core.database.ResultSetCallable;
|
||||
import mineplex.core.database.column.ColumnVarChar;
|
||||
import mineplex.database.Tables;
|
||||
import net.md_5.bungee.chat.TranslatableComponentSerializer;
|
||||
|
||||
import org.jooq.DSLContext;
|
||||
import org.jooq.Insert;
|
||||
@ -31,7 +32,7 @@ public class StatsRepository extends RepositoryBase
|
||||
|
||||
public StatsRepository(JavaPlugin plugin)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -134,8 +135,9 @@ public class StatsRepository extends RepositoryBase
|
||||
.on(Tables.stats.id.eq(Tables.accountStat.statId))
|
||||
.where(Tables.accountStat.accountId.eq(DSL.select(Tables.accounts.id)
|
||||
.from(Tables.accounts)
|
||||
.where(Tables.accounts.name.eq(playerName)))
|
||||
).fetch();
|
||||
.where(Tables.accounts.name.eq(playerName)).limit(1))
|
||||
)
|
||||
.fetch();
|
||||
|
||||
|
||||
if (result.isNotEmpty())
|
||||
|
@ -24,7 +24,7 @@ public class TaskRepository extends RepositoryBase
|
||||
|
||||
public TaskRepository(JavaPlugin plugin)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -20,7 +20,7 @@ public class TitanGiveawayRepository extends RepositoryBase
|
||||
|
||||
public TitanGiveawayRepository(JavaPlugin plugin)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
_titanCount = 0;
|
||||
}
|
||||
|
||||
|
@ -86,7 +86,7 @@ public class ClanRepository extends RepositoryBase
|
||||
|
||||
public ClanRepository(JavaPlugin plugin, String serverName, boolean isClansServer)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
|
||||
_serverName = serverName;
|
||||
_serverId = -1;
|
||||
|
@ -49,7 +49,7 @@ import net.minecraft.server.v1_8_R3.MinecraftServer;
|
||||
|
||||
public class Clans extends JavaPlugin
|
||||
{
|
||||
public static final String VERSION = "0.17b";
|
||||
public static final String VERSION = "0.17d";
|
||||
private String WEB_CONFIG = "webServer";
|
||||
|
||||
// Modules
|
||||
|
@ -10,7 +10,6 @@ import java.util.TimeZone;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -66,7 +65,6 @@ import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.game.clans.clans.ClanTips.TipType;
|
||||
import mineplex.game.clans.clans.ClansUtility.ClanRelation;
|
||||
import mineplex.game.clans.clans.claimview.ClaimVisualizer;
|
||||
import mineplex.game.clans.clans.commands.ClanManagementCommand;
|
||||
import mineplex.game.clans.clans.commands.ClansAllyChatCommand;
|
||||
import mineplex.game.clans.clans.commands.ClansChatCommand;
|
||||
@ -81,7 +79,9 @@ import mineplex.game.clans.clans.gui.ClanShop;
|
||||
import mineplex.game.clans.clans.loot.LootManager;
|
||||
import mineplex.game.clans.clans.map.ItemMapManager;
|
||||
import mineplex.game.clans.clans.observer.ObserverManager;
|
||||
import mineplex.game.clans.clans.playtime.Playtime;
|
||||
import mineplex.game.clans.clans.potato.PotatoManager;
|
||||
import mineplex.game.clans.clans.pvptimer.PvpTimer;
|
||||
import mineplex.game.clans.clans.redis.ClanDeleteCommandHandler;
|
||||
import mineplex.game.clans.clans.redis.ClanLoadCommandHandler;
|
||||
import mineplex.game.clans.clans.regions.ClansRegions;
|
||||
@ -155,6 +155,8 @@ public class ClansManager extends MiniClientPlugin<ClientClan>implements IRelati
|
||||
private LootManager _lootManager;
|
||||
private DonationManager _donationManager;
|
||||
|
||||
private Playtime _playTracker;
|
||||
|
||||
private TutorialManager _tutorialManager;
|
||||
|
||||
private ClassManager _classManager;
|
||||
@ -228,18 +230,12 @@ public class ClansManager extends MiniClientPlugin<ClientClan>implements IRelati
|
||||
|
||||
TaskManager taskManager = new TaskManager(plugin, _clientManager, webServerAddress);
|
||||
|
||||
_tutorialManager = new TutorialManager(plugin, _goldManager, taskManager, donationManager, preferencesManager, this, packetHandler);
|
||||
|
||||
ClanTips = new ClanTips(plugin, this, preferencesManager);
|
||||
|
||||
new StuckManager(this);
|
||||
|
||||
_scoreboard = new ClansScoreboardManager(plugin, _tutorialManager, this, _warManager, _worldEvent, clientManager, donationManager);
|
||||
// new MurderManager(plugin, this);
|
||||
|
||||
_clanAdmin = new ClansAdmin(this);
|
||||
_clanBlocks = new ClansBlocks();
|
||||
_clanDataAccess = new ClansDataAccessLayer(this, _scoreboard);
|
||||
_clanDisplay = new ClansDisplay(plugin, this);
|
||||
_clanGame = new ClansGame(plugin, this);
|
||||
_clanUtility = new ClansUtility(this);
|
||||
@ -266,6 +262,7 @@ public class ClansManager extends MiniClientPlugin<ClientClan>implements IRelati
|
||||
new ObserverManager(plugin, _condition, this);
|
||||
|
||||
new ClanEnergyTracker(plugin, this);
|
||||
new StuckManager(this);
|
||||
|
||||
new ClansAlphaManager(this, taskManager);
|
||||
|
||||
@ -298,7 +295,15 @@ public class ClansManager extends MiniClientPlugin<ClientClan>implements IRelati
|
||||
ClassShopManager shopManager = new ClassShopManager(plugin, _classManager, skillManager, itemFactory, achievementManager, _clientManager);
|
||||
_classShop = new ClassCombatShop(shopManager, _clientManager, donationManager, true, "Class Shop");
|
||||
|
||||
ClanEnergyManager clanEnergyManager = new ClanEnergyManager(plugin, this, clientManager, donationManager);
|
||||
new ClanEnergyManager(plugin, this, clientManager, donationManager);
|
||||
|
||||
_playTracker = new Playtime(this, statsManager);
|
||||
new PvpTimer(this, _playTracker, statsManager);
|
||||
|
||||
_tutorialManager = new TutorialManager(plugin, _playTracker, _goldManager, taskManager, donationManager, preferencesManager, this, packetHandler);
|
||||
|
||||
_scoreboard = new ClansScoreboardManager(plugin, this, _warManager, _worldEvent, clientManager, donationManager);
|
||||
_clanDataAccess = new ClansDataAccessLayer(this, _scoreboard);
|
||||
|
||||
for (ClanToken token : _clanDataAccess.getRepository().retrieveClans())
|
||||
{
|
||||
@ -377,7 +382,7 @@ public class ClansManager extends MiniClientPlugin<ClientClan>implements IRelati
|
||||
@Override
|
||||
public void addCommands()
|
||||
{
|
||||
addCommand(new ClansCommand(this, _tutorialManager));
|
||||
addCommand(new ClansCommand(this));
|
||||
addCommand(new RegionsCommand(this));
|
||||
addCommand(new ClansChatCommand(this));
|
||||
addCommand(new ClansAllyChatCommand(this));
|
||||
@ -460,7 +465,7 @@ public class ClansManager extends MiniClientPlugin<ClientClan>implements IRelati
|
||||
int x = Math.abs(location.getBlockX());
|
||||
int z = Math.abs(location.getBlockZ());
|
||||
|
||||
return (x <= CLAIMABLE_RADIUS && z <= CLAIMABLE_RADIUS) && !Spawn.getInstance().isInSpawn(location);
|
||||
return (x <= CLAIMABLE_RADIUS && z <= CLAIMABLE_RADIUS) && !Spawn.getInstance().isSafe(location);
|
||||
}
|
||||
|
||||
public boolean isFields(Location location)
|
||||
@ -624,7 +629,7 @@ public class ClansManager extends MiniClientPlugin<ClientClan>implements IRelati
|
||||
|
||||
String rank = _clientManager.Get(event.getPlayer()).GetRank().getTag(true, true) + " ";
|
||||
|
||||
if (!_clientManager.Get(event.getPlayer()).GetRank().has(Rank.MEDIA))
|
||||
if (!_clientManager.Get(event.getPlayer()).GetRank().has(Rank.TWITCH))
|
||||
rank = "";
|
||||
|
||||
if (client.isClanChat() && clan != null)
|
||||
@ -957,6 +962,7 @@ public class ClansManager extends MiniClientPlugin<ClientClan>implements IRelati
|
||||
_blockRestore.onDisable();
|
||||
_worldEvent.onDisable();
|
||||
_goldManager.onDisable();
|
||||
_playTracker.onDisable();
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
|
@ -0,0 +1,18 @@
|
||||
package mineplex.game.clans.clans;
|
||||
|
||||
public enum ClansPlayerStats
|
||||
{
|
||||
PLAY_TIME("Clans.TimePlaying");
|
||||
|
||||
private String _id;
|
||||
|
||||
ClansPlayerStats(String id)
|
||||
{
|
||||
_id = id;
|
||||
}
|
||||
|
||||
public String id()
|
||||
{
|
||||
return _id;
|
||||
}
|
||||
}
|
@ -24,6 +24,7 @@ import mineplex.game.clans.clans.event.PlayerClaimTerritoryEvent;
|
||||
import mineplex.game.clans.clans.event.PlayerPreClaimTerritoryEvent;
|
||||
import mineplex.game.clans.clans.event.PlayerUnClaimTerritoryEvent;
|
||||
import mineplex.game.clans.core.repository.ClanTerritory;
|
||||
import mineplex.game.clans.spawn.Spawn;
|
||||
|
||||
public class ClansUtility
|
||||
{
|
||||
@ -238,7 +239,7 @@ public class ClansUtility
|
||||
|
||||
public boolean isSafe(Player player)
|
||||
{
|
||||
if (!UtilTime.elapsed(Clans.getCombatManager().Get(player).GetLastDamaged(), 15000)) return false;
|
||||
if (!UtilTime.elapsed(Clans.getCombatManager().Get(player).GetLastDamaged(), Spawn.COMBAT_TAG_DURATION)) return false;
|
||||
|
||||
return isSafe(player.getLocation());
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ public class ClansCommand extends CommandBase<ClansManager>
|
||||
{
|
||||
private ClansManager _manager;
|
||||
|
||||
public ClansCommand(ClansManager plugin, TutorialManager tutorialManager)
|
||||
public ClansCommand(ClansManager plugin)
|
||||
{
|
||||
super(plugin, Rank.ALL, "c", "clan", "clans", "factions");
|
||||
|
||||
|
@ -0,0 +1,13 @@
|
||||
package mineplex.game.clans.clans.playtime;
|
||||
|
||||
public class PlayingClient
|
||||
{
|
||||
public long StartTime;
|
||||
public boolean FirstSession;
|
||||
|
||||
public PlayingClient(boolean first)
|
||||
{
|
||||
StartTime = System.currentTimeMillis();
|
||||
FirstSession = first;
|
||||
}
|
||||
}
|
@ -0,0 +1,86 @@
|
||||
package mineplex.game.clans.clans.playtime;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerKickEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
|
||||
import mineplex.core.MiniClientPlugin;
|
||||
import mineplex.core.stats.StatsManager;
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
import mineplex.game.clans.clans.ClansPlayerStats;
|
||||
import mineplex.game.clans.clans.playtime.command.PlayTimeCommand;
|
||||
import mineplex.game.clans.clans.playtime.command.cemde;
|
||||
|
||||
public class Playtime extends MiniClientPlugin<PlayingClient>
|
||||
{
|
||||
private StatsManager _statsManager;
|
||||
|
||||
public Playtime(ClansManager clans, StatsManager statsManager)
|
||||
{
|
||||
super("Clans Play Time Tracker", clans.getPlugin());
|
||||
|
||||
_statsManager = statsManager;
|
||||
|
||||
addCommand(new PlayTimeCommand(_statsManager, this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable()
|
||||
{
|
||||
for (Player player : Bukkit.getOnlinePlayers())
|
||||
{
|
||||
save(player);
|
||||
}
|
||||
}
|
||||
|
||||
// Seconds
|
||||
public long getPlaytime(Player player)
|
||||
{
|
||||
return _statsManager.Get(player).getStat(ClansPlayerStats.PLAY_TIME.id());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent event)
|
||||
{
|
||||
Set(event.getPlayer(), AddPlayer(event.getPlayer().getName()));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerQuit(PlayerQuitEvent event)
|
||||
{
|
||||
save(event.getPlayer());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerKicked(PlayerKickEvent event)
|
||||
{
|
||||
save(event.getPlayer());
|
||||
}
|
||||
|
||||
private void save(Player player)
|
||||
{
|
||||
long timePlaying = getUnsavedPlaytime(player);
|
||||
|
||||
_statsManager.incrementStat(player, ClansPlayerStats.PLAY_TIME.id(), timePlaying);
|
||||
|
||||
// Increment main time in game as well
|
||||
_statsManager.incrementStat(player, "Global.TimeInGame", timePlaying);
|
||||
|
||||
Get(player).StartTime = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PlayingClient AddPlayer(String player)
|
||||
{
|
||||
return new PlayingClient(_statsManager.Get(player).getStat(ClansPlayerStats.PLAY_TIME.id()) == 0);
|
||||
}
|
||||
|
||||
// Seconds
|
||||
public long getUnsavedPlaytime(Player player)
|
||||
{
|
||||
return (System.currentTimeMillis() - Get(player).StartTime) / 1000;
|
||||
}
|
||||
}
|
@ -0,0 +1,81 @@
|
||||
package mineplex.game.clans.clans.playtime.command;
|
||||
|
||||
import java.sql.SQLException;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import mineplex.core.command.CommandBase;
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.stats.PlayerStats;
|
||||
import mineplex.core.stats.StatsManager;
|
||||
import mineplex.game.clans.clans.ClansPlayerStats;
|
||||
import mineplex.game.clans.clans.playtime.Playtime;
|
||||
|
||||
public class PlayTimeCommand extends CommandBase<StatsManager>
|
||||
{
|
||||
private Playtime _playTracker;
|
||||
|
||||
public PlayTimeCommand(StatsManager plugin, Playtime tracker)
|
||||
{
|
||||
super(plugin, Rank.MODERATOR, "clanstime");
|
||||
|
||||
_playTracker = tracker;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void Execute(final Player caller, final String[] args)
|
||||
{
|
||||
if (args == null || args.length == 0)
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Clans", "Usage: /clanstime <playerName>"));
|
||||
}
|
||||
else
|
||||
{
|
||||
final Player target = UtilPlayer.searchOnline(caller, args[0], false);
|
||||
|
||||
if (target == null)
|
||||
{
|
||||
Plugin.getPlugin().getServer().getScheduler().runTaskAsynchronously(Plugin.getPlugin(), new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
try
|
||||
{
|
||||
final PlayerStats stats = Plugin.getOfflinePlayerStats(args[0]);
|
||||
|
||||
Plugin.getPlugin().getServer().getScheduler().runTask(Plugin.getPlugin(), new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
if (stats == null)
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Clans", "Player " + F.elem(args[0]) + " not found!"));
|
||||
}
|
||||
else
|
||||
{
|
||||
long time = stats.getStat(ClansPlayerStats.PLAY_TIME.id());
|
||||
UtilPlayer.message(caller, F.main("Clans", F.name(args[0]) + " has spent " + F.elem(UtilTime.convertString(time * 1000L, 1, UtilTime.TimeUnit.FIT)) + " playing Clans."));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Clans", F.name(target.getName()) + " does not have any play time in Clans."));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
long time = Plugin.Get(target).getStat(ClansPlayerStats.PLAY_TIME.id());
|
||||
UtilPlayer.message(caller, F.main("Clans", F.name(target.getName()) + " has spent " + F.elem(UtilTime.convertString(time * 1000L, 1, UtilTime.TimeUnit.FIT) + " (+" + UtilTime.MakeStr(_playTracker.getUnsavedPlaytime(target) * 1000) + ")") + " playing Clans."));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package mineplex.game.clans.clans.playtime.command;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import mineplex.core.command.CommandBase;
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.stats.StatsManager;
|
||||
import mineplex.game.clans.clans.ClansPlayerStats;
|
||||
import mineplex.game.clans.clans.pvptimer.PvpTimer;
|
||||
|
||||
public class cemde extends CommandBase<StatsManager>
|
||||
{
|
||||
PvpTimer _timer;
|
||||
public cemde(StatsManager plugin, PvpTimer timer)
|
||||
{
|
||||
super(plugin, Rank.ALL, "rstime");
|
||||
_timer = timer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void Execute(final Player caller, final String[] args)
|
||||
{
|
||||
Plugin.Get(caller).setStat(ClansPlayerStats.PLAY_TIME.id(), 0);
|
||||
_timer.Get(caller).Skipped = false;
|
||||
_timer.Get(caller).InformedTimes.clear();
|
||||
|
||||
UtilPlayer.message(caller, "Reset time.");
|
||||
}
|
||||
}
|
@ -0,0 +1,217 @@
|
||||
package mineplex.game.clans.clans.pvptimer;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
|
||||
import mineplex.core.MiniClientPlugin;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.Callback;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilTextMiddle;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.stats.StatsManager;
|
||||
import mineplex.core.task.TaskManager;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
import mineplex.game.clans.clans.playtime.Playtime;
|
||||
import mineplex.game.clans.clans.playtime.command.cemde;
|
||||
import mineplex.game.clans.clans.pvptimer.command.PvPTimerCommand;
|
||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||
|
||||
public class PvpTimer extends MiniClientPlugin<PvpTimerClient>
|
||||
{
|
||||
private Playtime _tracker;
|
||||
|
||||
public static final String SKIPPED_TASK = "PvpTimer.Skipped";
|
||||
|
||||
private static long TIMER_LENGTH = 30 * 60;
|
||||
|
||||
public PvpTimer(ClansManager clans, Playtime playtime, StatsManager statsManager)
|
||||
{
|
||||
super("PvP Timer", clans.getPlugin());
|
||||
_tracker = playtime;
|
||||
|
||||
addCommand(new cemde(statsManager, this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCommands()
|
||||
{
|
||||
addCommand(new PvPTimerCommand(this));
|
||||
}
|
||||
|
||||
public void disableFor(final Player caller)
|
||||
{
|
||||
TaskManager.Instance.completedTask(new Callback<Boolean>() {
|
||||
@Override
|
||||
public void run(Boolean data)
|
||||
{
|
||||
Get(caller).Skipped = true;
|
||||
caller.playSound(caller.getLocation(), Sound.ENDERDRAGON_GROWL, 1f, 0.75f);
|
||||
}
|
||||
}, caller, "PvpTimer.Skipped");
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent event)
|
||||
{
|
||||
final Player player = event.getPlayer();
|
||||
|
||||
if (hasTimer(player))
|
||||
{
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(getPlugin(), new Runnable() {
|
||||
public void run()
|
||||
{
|
||||
UtilTextMiddle.display(C.cGold + "PvP Timer", "will end in " + UtilTime.MakeStr(getPvPTimerLeft(player) * 1000), 40, 70, 40, player);
|
||||
}
|
||||
}, 10);
|
||||
|
||||
UtilPlayer.message(player, F.main("Clans", "You are currently on your PvP timer. It will end in " + F.elem(UtilTime.MakeStr(getPvPTimerLeft(player) * 1000))));
|
||||
UtilPlayer.message(player, F.main("Clans", "Until it ends, you are immune to, and unable to deal PvP damage."));
|
||||
UtilPlayer.message(player, F.main("Clans", "If you would like to disable the PvP timer permanently, then type " + F.elem("/pvptimer") + ", and follow the instructions given."));
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void inform(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() == UpdateType.TWOSEC)
|
||||
{
|
||||
for (Player player : Bukkit.getOnlinePlayers())
|
||||
{
|
||||
if (hasTimer(player))
|
||||
{
|
||||
long time = getPvPTimerLeft(player);
|
||||
PvpTimerClient client = Get(player);
|
||||
|
||||
// end
|
||||
if (time <= 2)
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Clans", "Your " + F.elem("Pvp Timer") + " has ended!"));
|
||||
UtilPlayer.message(player, F.main("Clans", "You are now completely open to attacks, and you can also attack others."));
|
||||
player.playSound(player.getLocation(), Sound.ENDERDRAGON_GROWL, 1f, 0.75f);
|
||||
}
|
||||
// 5 secs
|
||||
else if (time <= 5 && !client.InformedTimes.contains(5))
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Clans", "Your " + F.elem("Pvp Timer") + " will end in " + F.time("5.0 Seconds")));
|
||||
UtilTextMiddle.display("Pvp Timer", "ending in 5 Seconds");
|
||||
client.InformedTimes.add(5);
|
||||
}
|
||||
// 10 secs
|
||||
else if (time <= 10 && !client.InformedTimes.contains(10))
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Clans", "Your " + F.elem("Pvp Timer") + " will end in " + F.time("10.0 Seconds")));
|
||||
UtilTextMiddle.display("Pvp Timer", "ending in 10 Seconds");
|
||||
client.InformedTimes.add(10);
|
||||
}
|
||||
// 30 secs
|
||||
else if (time <= 30 && !client.InformedTimes.contains(30))
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Clans", "Your " + F.elem("Pvp Timer") + " will end in " + F.time("30.0 Seconds")));
|
||||
UtilTextMiddle.display("Pvp Timer", "ending in 30 Seconds");
|
||||
client.InformedTimes.add(30);
|
||||
}
|
||||
// 1 minute
|
||||
else if (time <= 1 * 60 && !client.InformedTimes.contains(1 * 60))
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Clans", "Your " + F.elem("Pvp Timer") + " will end in " + F.time("1.0 Minute")));
|
||||
UtilTextMiddle.display("Pvp Timer", "ending in 1 Minute");
|
||||
client.InformedTimes.add(5);
|
||||
}
|
||||
// 5 minutes
|
||||
else if (time <= 5 * 60 && !client.InformedTimes.contains(5 * 60))
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Clans", "Your " + F.elem("Pvp Timer") + " will end in " + F.time("5.0 Minutes")));
|
||||
UtilTextMiddle.display("Pvp Timer", "ending in 5 Minutes");
|
||||
client.InformedTimes.add(5 * 60);
|
||||
}
|
||||
// 10 minutes
|
||||
else if (time <= 10 * 60 && !client.InformedTimes.contains(10 * 60))
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Clans", "Your " + F.elem("Pvp Timer") + " will end in " + F.time("10.0 Minutes")));
|
||||
UtilTextMiddle.display("Pvp Timer", "ending in 10 Minutes");
|
||||
client.InformedTimes.add(10 * 60);
|
||||
}
|
||||
// 20 minutes
|
||||
else if (time <= 20 * 60 && !client.InformedTimes.contains(20 * 60))
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Clans", "Your " + F.elem("Pvp Timer") + " will end in " + F.time("20.0 Minutes")));
|
||||
UtilTextMiddle.display("Pvp Timer", "ending in 20 Minutes");
|
||||
client.InformedTimes.add(20 * 60);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onPlayerAttack(CustomDamageEvent event)
|
||||
{
|
||||
if (event.GetDamageePlayer() == null || event.GetDamagerEntity(true) == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Player victim = event.GetDamageePlayer();
|
||||
Player damager = event.GetDamagerPlayer(true);
|
||||
|
||||
boolean victimTimer = victim != null && hasTimer(victim);
|
||||
boolean damagerTimer = damager != null && hasTimer(damager);
|
||||
boolean bothMsg = false;
|
||||
|
||||
if (victimTimer)
|
||||
{
|
||||
if (damagerTimer)
|
||||
{
|
||||
UtilPlayer.message(damager, F.main("Clans", "You and " + F.name(victim.getName()) + " are still on your PvP timer. Type " + F.elem("/pvptimer") + " to disable."));
|
||||
bothMsg = true;
|
||||
}
|
||||
else if (damager != null)
|
||||
{
|
||||
UtilPlayer.message(damager, F.main("Clans", F.name(victim.getName()) + " is still on their Pvp timer."));
|
||||
}
|
||||
|
||||
event.SetCancelled("Pvp Timer");
|
||||
}
|
||||
|
||||
if (damagerTimer)
|
||||
{
|
||||
if (victimTimer)
|
||||
{
|
||||
if (!bothMsg) UtilPlayer.message(damager, F.main("Clans", "You and " + F.name(victim.getName()) + " are still on your PvP timer. Type " + F.elem("/pvptimer") + " to disable."));
|
||||
}
|
||||
else if (damager != null)
|
||||
{
|
||||
UtilPlayer.message(damager, F.main("Clans", "You are still on your PvP timer."));
|
||||
}
|
||||
|
||||
event.SetCancelled("PvP Timer");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public long getPvPTimerLeft(Player player)
|
||||
{
|
||||
long time = (_tracker.getPlaytime(player) + _tracker.getUnsavedPlaytime(player));
|
||||
|
||||
return (TIMER_LENGTH <= time ? 0 : TIMER_LENGTH - time);
|
||||
}
|
||||
|
||||
private boolean hasTimer(Player victim)
|
||||
{
|
||||
return victim != null && getPvPTimerLeft(victim) > 0 && !Get(victim).Skipped;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PvpTimerClient AddPlayer(String player)
|
||||
{
|
||||
return new PvpTimerClient(Bukkit.getPlayer(player));
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package mineplex.game.clans.clans.pvptimer;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import mineplex.core.task.TaskManager;
|
||||
|
||||
public class PvpTimerClient
|
||||
{
|
||||
public boolean Skipped;
|
||||
public List<Integer> InformedTimes;
|
||||
|
||||
public PvpTimerClient(Player player)
|
||||
{
|
||||
Skipped = TaskManager.Instance.hasCompletedTask(player, PvpTimer.SKIPPED_TASK);
|
||||
InformedTimes = new ArrayList<>();
|
||||
}
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
package mineplex.game.clans.clans.pvptimer.command;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import mineplex.core.command.CommandBase;
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.common.jsonchat.ClickEvent;
|
||||
import mineplex.core.common.jsonchat.JsonMessage;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.game.clans.clans.pvptimer.PvpTimer;
|
||||
|
||||
public class PvPTimerCommand extends CommandBase<PvpTimer>
|
||||
{
|
||||
public PvPTimerCommand(PvpTimer plugin)
|
||||
{
|
||||
super(plugin, Rank.ALL, "pvptimer", "timer", "pvp");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
if (args.length == 0)
|
||||
{
|
||||
if (Plugin.Get(caller).Skipped)
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Clans", "You have skipped your PvP timer."));
|
||||
return;
|
||||
}
|
||||
|
||||
long pvpTimerLeft = Plugin.getPvPTimerLeft(caller);
|
||||
|
||||
if (pvpTimerLeft == 0)
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Clans", "Your PvP timer has ended."));
|
||||
}
|
||||
else
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Clans", "You have " + F.elem(UtilTime.MakeStr(pvpTimerLeft * 1000)) + " before your PvP timer runs out."));
|
||||
new JsonMessage(F.main("Clans", "If you would like to permanently disable Pvp timer, click "))
|
||||
.extra("here")
|
||||
.color("green")
|
||||
.click(ClickEvent.RUN_COMMAND, "/pvptimer yesiconfirmthatiwouldliketodisablemypvptimerforever")
|
||||
.extra(".")
|
||||
.color("gray")
|
||||
|
||||
.sendToPlayer(caller);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (args[0].equalsIgnoreCase("yesiconfirmthatiwouldliketodisablemypvptimerforever"))
|
||||
{
|
||||
Plugin.disableFor(caller);
|
||||
UtilPlayer.message(caller, F.main("Clans", "You have disabled your Pvp timer."));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,10 +1,13 @@
|
||||
package mineplex.game.clans.clans.scoreboard;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.player.PlayerGameModeChangeEvent;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
import mineplex.core.account.event.OnlineRankUpdateEvent;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.scoreboard.PlayerScoreboard;
|
||||
@ -29,7 +32,7 @@ public class ClansScoreboardManager extends ScoreboardManager
|
||||
private WarManager _warManager;
|
||||
private WorldEventManager _worldEvent;
|
||||
|
||||
public ClansScoreboardManager(JavaPlugin plugin, TutorialManager tutorialManager, ClansManager clansManager, WarManager warManager, WorldEventManager worldEvent, CoreClientManager clientManager, DonationManager donationManager)
|
||||
public ClansScoreboardManager(JavaPlugin plugin, ClansManager clansManager, WarManager warManager, WorldEventManager worldEvent, CoreClientManager clientManager, DonationManager donationManager)
|
||||
{
|
||||
super(plugin, clientManager, donationManager);
|
||||
|
||||
@ -37,10 +40,10 @@ public class ClansScoreboardManager extends ScoreboardManager
|
||||
_warManager = warManager;
|
||||
_worldEvent = worldEvent;
|
||||
|
||||
init(tutorialManager);
|
||||
init();
|
||||
}
|
||||
|
||||
private void init(TutorialManager tutorialManager)
|
||||
private void init()
|
||||
{
|
||||
setTitle("Clans Alpha " + Clans.VERSION);
|
||||
|
||||
@ -53,12 +56,40 @@ public class ClansScoreboardManager extends ScoreboardManager
|
||||
data.writeElement(_warManager);
|
||||
data.writeElement(_worldEvent);
|
||||
|
||||
for (Tutorial tutorial : tutorialManager.getTutorials().values())
|
||||
for (Tutorial tutorial : TutorialManager.Instance.getTutorials().values())
|
||||
{
|
||||
data.writeElement(tutorial);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onGamemodeChanged(PlayerGameModeChangeEvent event)
|
||||
{
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(_clansManager.getPlugin(), new Runnable() {
|
||||
public void run()
|
||||
{
|
||||
for (Player player : Bukkit.getOnlinePlayers())
|
||||
{
|
||||
refresh(player);
|
||||
}
|
||||
}
|
||||
}, 20);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onRankUpdate(OnlineRankUpdateEvent event)
|
||||
{
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(_clansManager.getPlugin(), new Runnable() {
|
||||
public void run()
|
||||
{
|
||||
for (Player player : Bukkit.getOnlinePlayers())
|
||||
{
|
||||
refresh(player);
|
||||
}
|
||||
}
|
||||
}, 20);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void drawUpdate(UpdateEvent event)
|
||||
{
|
||||
|
@ -34,7 +34,7 @@ public class FieldRepository extends RepositoryBase
|
||||
|
||||
public FieldRepository(JavaPlugin plugin)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
}
|
||||
|
||||
public List<FieldBlockToken> getFieldBlocks(String server)
|
||||
|
@ -39,7 +39,6 @@ import org.bukkit.event.player.PlayerFishEvent;
|
||||
import org.bukkit.event.player.PlayerFishEvent.State;
|
||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.weather.WeatherChangeEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
@ -47,7 +46,6 @@ import org.bukkit.plugin.java.JavaPlugin;
|
||||
import mineplex.core.MiniPlugin;
|
||||
import mineplex.core.blockrestore.BlockRestore;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilBlock;
|
||||
import mineplex.core.common.util.UtilEvent;
|
||||
import mineplex.core.common.util.UtilEvent.ActionType;
|
||||
import mineplex.core.common.util.UtilGear;
|
||||
@ -94,14 +92,14 @@ public class Gameplay extends MiniPlugin
|
||||
Bukkit.getPluginManager().registerEvents(new CustomCreatures(), plugin);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void spawnDamage(CustomDamageEvent event)
|
||||
{
|
||||
if (_clansManager.getClanUtility().getClaim(event.GetDamageeEntity().getLocation()) != null && _clansManager.getClanUtility().getClaim(event.GetDamageeEntity().getLocation()).isSafe(event.GetDamageeEntity().getLocation()))
|
||||
{
|
||||
event.SetCancelled("Safe Zone");
|
||||
}
|
||||
}
|
||||
// @EventHandler(priority = EventPriority.LOWEST)
|
||||
// public void spawnDamage(CustomDamageEvent event)
|
||||
// {
|
||||
// if (_clansManager.getClanUtility().getClaim(event.GetDamageeEntity().getLocation()) != null && _clansManager.getClanUtility().getClaim(event.GetDamageeEntity().getLocation()).isSafe(event.GetDamageeEntity().getLocation()))
|
||||
// {
|
||||
// event.SetCancelled("Safe Zone");
|
||||
// }
|
||||
// }
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerFishing(PlayerFishEvent event)
|
||||
@ -436,6 +434,11 @@ public class Gameplay extends MiniPlugin
|
||||
{
|
||||
final Block block = event.getBlock();
|
||||
|
||||
if (_clansManager.getClanUtility().isSafe(block.getLocation()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!UtilItem.isLog(block.getType()))
|
||||
{
|
||||
return;
|
||||
|
@ -16,23 +16,24 @@ import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Monster;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockBurnEvent;
|
||||
import org.bukkit.event.block.BlockFromToEvent;
|
||||
import org.bukkit.event.block.BlockIgniteEvent;
|
||||
import org.bukkit.event.block.BlockIgniteEvent.IgniteCause;
|
||||
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.EntityDeathEvent;
|
||||
import org.bukkit.event.entity.EntitySpawnEvent;
|
||||
import org.bukkit.event.entity.EntityTargetEvent;
|
||||
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||
import org.bukkit.event.player.PlayerVelocityEvent;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import mineplex.core.MiniPlugin;
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilParticle;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
@ -45,7 +46,6 @@ import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
import mineplex.game.clans.items.generation.WeightSet;
|
||||
import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent;
|
||||
import mineplex.minecraft.game.classcombat.item.event.ItemTriggerEvent;
|
||||
import mineplex.minecraft.game.classcombat.item.event.WebTossEvent;
|
||||
import mineplex.minecraft.game.core.condition.Condition.ConditionType;
|
||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||
@ -102,7 +102,7 @@ public class Spawn extends MiniPlugin
|
||||
{
|
||||
Block block = event.getToBlock();
|
||||
|
||||
if (block.isLiquid() && isInSpawn(block.getLocation()))
|
||||
if (block.isLiquid() && isSafe(block.getLocation()))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
@ -115,7 +115,7 @@ public class Spawn extends MiniPlugin
|
||||
@EventHandler
|
||||
public void onWebToss(WebTossEvent event)
|
||||
{
|
||||
if (isInSpawn(event.getLocation()))
|
||||
if (isSafe(event.getLocation()))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
@ -138,7 +138,7 @@ public class Spawn extends MiniPlugin
|
||||
@EventHandler
|
||||
public void onBlockBurn(BlockBurnEvent event)
|
||||
{
|
||||
if (isInSpawn(event.getBlock().getLocation()))
|
||||
if (isSafe(event.getBlock().getLocation()))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
@ -153,7 +153,7 @@ public class Spawn extends MiniPlugin
|
||||
{
|
||||
if (event.getEntity() instanceof ItemFrame)
|
||||
{
|
||||
if (isInSpawn(event.getEntity().getLocation()))
|
||||
if (isSafe(event.getEntity().getLocation()))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
@ -165,7 +165,7 @@ public class Spawn extends MiniPlugin
|
||||
{
|
||||
if (event.GetDamageeEntity() instanceof ItemFrame)
|
||||
{
|
||||
if (isInSpawn(event.GetDamageeEntity().getLocation()))
|
||||
if (isSafe(event.GetDamageeEntity().getLocation()))
|
||||
{
|
||||
event.SetCancelled("Item Frame Cancel");
|
||||
}
|
||||
@ -177,7 +177,7 @@ public class Spawn extends MiniPlugin
|
||||
{
|
||||
if (event.getEntity() instanceof ItemFrame)
|
||||
{
|
||||
if (isInSpawn(event.getEntity().getLocation()))
|
||||
if (isSafe(event.getEntity().getLocation()))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
@ -192,9 +192,9 @@ public class Spawn extends MiniPlugin
|
||||
|
||||
for (Player cur : UtilServer.getPlayers())
|
||||
{
|
||||
if (isInSpawn(cur.getLocation()))
|
||||
if (isSafe(cur.getLocation()))
|
||||
{
|
||||
long lastDamager = _clansManager.getCombatManager().Get(cur).GetLastCombat();
|
||||
long lastDamager = _clansManager.getCombatManager().Get(cur).GetLastCombatEngaged();
|
||||
long duration = System.currentTimeMillis() - lastDamager;
|
||||
|
||||
if (!UtilTime.elapsed(lastDamager, COMBAT_TAG_DURATION))
|
||||
@ -203,7 +203,7 @@ public class Spawn extends MiniPlugin
|
||||
+ ChatColor.YELLOW + F.time(UtilTime.convertString(COMBAT_TAG_DURATION - duration, 1, TimeUnit.FIT));
|
||||
|
||||
UtilTextMiddle.display(null, message, 0, 20, 0, cur);
|
||||
_clansManager.getCondition().Factory().Custom(COMBAT_TAG_NAME, cur, cur, ConditionType.CUSTOM, 1, 0, false, Material.FIRE, (byte)0, true);
|
||||
_clansManager.getCondition().Factory().Custom(COMBAT_TAG_NAME, cur, cur, ConditionType.CUSTOM, 1.d, 0, false, Material.FIRE, (byte)0, true);
|
||||
playUnsafeParticles(cur);
|
||||
}
|
||||
else if (!UtilTime.elapsed(lastDamager, COMBAT_TAG_DURATION + 600))
|
||||
@ -214,6 +214,25 @@ public class Spawn extends MiniPlugin
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void ignoreVelocity(PlayerVelocityEvent event)
|
||||
{
|
||||
if (_clansManager.getClanUtility().isSafe(event.getPlayer()))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
System.out.println("cancelled");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onSkill(SkillTriggerEvent event)
|
||||
{
|
||||
if (!isSafe(event.GetPlayer().getLocation()))
|
||||
{
|
||||
_clansManager.getCombatManager().Get(event.GetPlayer()).SetLastCombatEngaged(System.currentTimeMillis());
|
||||
}
|
||||
}
|
||||
|
||||
private void playUnsafeParticles(Player player)
|
||||
{
|
||||
UtilParticle.PlayParticle(UtilParticle.ParticleType.CRIT, player.getEyeLocation().add(0, 0.75d, 0), 0, 0, 0, 0.2f, 35, UtilParticle.ViewDist.NORMAL);
|
||||
@ -283,7 +302,7 @@ public class Spawn extends MiniPlugin
|
||||
@EventHandler
|
||||
public void onEntitySpawn(CreatureSpawnEvent event)
|
||||
{
|
||||
if (event.getSpawnReason() != CreatureSpawnEvent.SpawnReason.CUSTOM && isInSpawn(event.getLocation()))
|
||||
if (event.getSpawnReason() != CreatureSpawnEvent.SpawnReason.CUSTOM && isSafe(event.getLocation()))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
@ -325,7 +344,7 @@ public class Spawn extends MiniPlugin
|
||||
|
||||
if (isInSpawn(monster))
|
||||
{
|
||||
int size = event.getDrops().size();
|
||||
// int size = event.getDrops().size();
|
||||
event.getDrops().clear();
|
||||
}
|
||||
}
|
||||
@ -338,7 +357,7 @@ public class Spawn extends MiniPlugin
|
||||
@EventHandler
|
||||
public void onEntityTarget(EntityTargetEvent event)
|
||||
{
|
||||
if (event.getTarget() != null && isInSpawn(event.getTarget().getLocation()))
|
||||
if (event.getTarget() != null && isSafe(event.getTarget().getLocation()))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
@ -353,7 +372,7 @@ public class Spawn extends MiniPlugin
|
||||
{
|
||||
if (event.getPlayer().getGameMode() == GameMode.CREATIVE) return;
|
||||
|
||||
if (isInSpawn(event.getBlock().getLocation()) || isInSpawn(event.getPlayer()))
|
||||
if (isSafe(event.getBlock().getLocation()) || isInSpawn(event.getPlayer()))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
@ -366,22 +385,37 @@ public class Spawn extends MiniPlugin
|
||||
@EventHandler
|
||||
public void onPlayerAttack(CustomDamageEvent event)
|
||||
{
|
||||
Player defender = event.GetDamageePlayer();
|
||||
Player victim = event.GetDamageePlayer();
|
||||
Player attacker = event.GetDamagerPlayer(true); // Get (potentially ranged) attacker
|
||||
|
||||
if (defender != null && !isCombatTagged(defender))
|
||||
// wat
|
||||
if (victim == null)
|
||||
{
|
||||
if (isInSpawn(defender))
|
||||
return;
|
||||
}
|
||||
|
||||
if (attacker == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isCombatTagged(victim))
|
||||
{
|
||||
if (isInSpawn(victim))
|
||||
{
|
||||
event.SetCancelled("Safe Zone");
|
||||
attemptNotify(attacker, "You cannot attack players who are in spawn!");
|
||||
return;
|
||||
}
|
||||
else if (isInSpawn(attacker))
|
||||
else if (isInSpawn(attacker) && !isCombatTagged(attacker))
|
||||
{
|
||||
event.SetCancelled("Safe Zone");
|
||||
attemptNotify(attacker, "You cannot attack untagged players while in spawn!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println(event.GetCancellers());
|
||||
}
|
||||
|
||||
public Location getSpawnLocation()
|
||||
@ -401,7 +435,7 @@ public class Spawn extends MiniPlugin
|
||||
return _shops.elements();
|
||||
}
|
||||
|
||||
public boolean isInSpawn(Location location)
|
||||
public boolean isSafe(Location location)
|
||||
{
|
||||
return _clansManager.getClanUtility().isSafe(location); // Check to see if location is in a SafeZone chunk
|
||||
}
|
||||
@ -414,9 +448,10 @@ public class Spawn extends MiniPlugin
|
||||
return xOffset <= radius && zOffset <= radius;
|
||||
}
|
||||
|
||||
// this is basically just isSafe();
|
||||
public boolean isInSpawn(Entity entity)
|
||||
{
|
||||
return entity != null && isInSpawn(entity.getLocation());
|
||||
return entity != null && isSafe(entity.getLocation());
|
||||
}
|
||||
|
||||
public static World getSpawnWorld()
|
||||
|
@ -46,6 +46,7 @@ import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
import mineplex.game.clans.clans.event.ClanJoinEvent;
|
||||
import mineplex.game.clans.clans.event.ClanTipEvent;
|
||||
import mineplex.game.clans.clans.playtime.Playtime;
|
||||
import mineplex.game.clans.economy.GoldManager;
|
||||
import net.minecraft.server.v1_8_R3.PacketPlayOutChat;
|
||||
|
||||
@ -89,7 +90,9 @@ public abstract class Tutorial implements ScoreboardElement, Listener
|
||||
protected int _gemReward = -1;
|
||||
protected int _coinReward = -1;
|
||||
|
||||
public Tutorial(final GoldManager goldManager, final TaskManager taskManager, final ClansManager clansManager, final DonationManager donationManager, final TutorialManager manager, final PacketHandler packetHandler)
|
||||
protected Playtime _playtime;
|
||||
|
||||
public Tutorial(final GoldManager goldManager, final Playtime playtime, final TaskManager taskManager, final ClansManager clansManager, final DonationManager donationManager, final TutorialManager manager, final PacketHandler packetHandler)
|
||||
{
|
||||
_clansManager = clansManager;
|
||||
_goldManager = goldManager;
|
||||
@ -99,6 +102,7 @@ public abstract class Tutorial implements ScoreboardElement, Listener
|
||||
_tasks = new ArrayList<TutorialTask<?>>();
|
||||
_inTutorial = new LinkedHashMap<>();
|
||||
_nameToTask = new LinkedHashMap<>();
|
||||
_playtime = playtime;
|
||||
|
||||
_manager.getPluginManager().registerEvents(this, _manager.getPlugin());
|
||||
}
|
||||
@ -499,6 +503,12 @@ public abstract class Tutorial implements ScoreboardElement, Listener
|
||||
{
|
||||
public void run(Boolean data)
|
||||
{
|
||||
if (_playtime.Get(player).FirstSession)
|
||||
{
|
||||
_playtime.Get(player).StartTime = System.currentTimeMillis();
|
||||
_playtime.Get(player).FirstSession = false;
|
||||
}
|
||||
|
||||
cancelFor(player);
|
||||
}
|
||||
}, player, String.format(SKIPPED_TASK, _technicalName));
|
||||
|
@ -11,7 +11,6 @@ import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import mineplex.core.MiniPlugin;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.packethandler.IPacketHandler;
|
||||
import mineplex.core.packethandler.PacketHandler;
|
||||
@ -20,12 +19,12 @@ import mineplex.core.preferences.PreferencesManager;
|
||||
import mineplex.core.task.TaskManager;
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
import mineplex.game.clans.clans.commands.RestartTutCommand;
|
||||
import mineplex.game.clans.clans.playtime.Playtime;
|
||||
import mineplex.game.clans.economy.GoldManager;
|
||||
import mineplex.game.clans.tutorials.commands.DoSkipTutorialCommand;
|
||||
import mineplex.game.clans.tutorials.commands.SkipTutorialCommand;
|
||||
import mineplex.game.clans.tutorials.gettingstarted.TutorialGettingStarted;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import net.minecraft.server.v1_8_R3.IChatBaseComponent;
|
||||
import net.minecraft.server.v1_8_R3.PacketPlayOutChat;
|
||||
|
||||
public class TutorialManager extends MiniPlugin
|
||||
@ -37,7 +36,7 @@ public class TutorialManager extends MiniPlugin
|
||||
|
||||
private final TaskManager _taskManager;
|
||||
|
||||
public TutorialManager(final JavaPlugin plugin, final GoldManager goldManager, final TaskManager taskManager, final DonationManager donationManager, final PreferencesManager preferencesManager, final ClansManager clansManager, final PacketHandler packetHandler)
|
||||
public TutorialManager(final JavaPlugin plugin, final Playtime playtime, final GoldManager goldManager, final TaskManager taskManager, final DonationManager donationManager, final PreferencesManager preferencesManager, final ClansManager clansManager, final PacketHandler packetHandler)
|
||||
{
|
||||
super("Tutorials", plugin);
|
||||
|
||||
@ -45,7 +44,7 @@ public class TutorialManager extends MiniPlugin
|
||||
|
||||
_taskManager = taskManager;
|
||||
|
||||
_tutorials.put(TutorialGettingStarted.class, new TutorialGettingStarted(this, clansManager, donationManager, goldManager, taskManager, packetHandler));
|
||||
// _tutorials.put(TutorialGettingStarted.class, new TutorialGettingStarted(this, playtime, clansManager, donationManager, goldManager, taskManager, packetHandler));
|
||||
|
||||
packetHandler.addPacketHandler(new IPacketHandler() {
|
||||
public void handle(PacketInfo packet)
|
||||
|
@ -12,6 +12,7 @@ import mineplex.core.task.TaskManager;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
import mineplex.game.clans.clans.playtime.Playtime;
|
||||
import mineplex.game.clans.economy.GoldManager;
|
||||
import mineplex.game.clans.spawn.Spawn;
|
||||
import mineplex.game.clans.tutorials.Tutorial;
|
||||
@ -19,9 +20,9 @@ import mineplex.game.clans.tutorials.TutorialManager;
|
||||
|
||||
public class TutorialGettingStarted extends Tutorial
|
||||
{
|
||||
public TutorialGettingStarted(final TutorialManager manager, final ClansManager clansManager, final DonationManager donationManager, final GoldManager goldManager, final TaskManager taskManager, final PacketHandler packetHandler)
|
||||
public TutorialGettingStarted(final TutorialManager manager, final Playtime playtime, final ClansManager clansManager, final DonationManager donationManager, final GoldManager goldManager, final TaskManager taskManager, final PacketHandler packetHandler)
|
||||
{
|
||||
super(goldManager, taskManager, clansManager, donationManager, manager, packetHandler);
|
||||
super(goldManager, playtime, taskManager, clansManager, donationManager, manager, packetHandler);
|
||||
|
||||
// addTask(new TaskWelcome(this, 1));
|
||||
|
||||
@ -52,6 +53,12 @@ public class TutorialGettingStarted extends Tutorial
|
||||
{
|
||||
player.resetPlayerTime();
|
||||
player.teleport(Spawn.getEastSpawn());
|
||||
|
||||
if (_playtime.Get(player).FirstSession)
|
||||
{
|
||||
_playtime.Get(player).StartTime = System.currentTimeMillis();
|
||||
_playtime.Get(player).FirstSession = false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -14,6 +14,7 @@ import mineplex.core.blockrestore.BlockRestore;
|
||||
import mineplex.core.chat.Chat;
|
||||
import mineplex.core.command.CommandCenter;
|
||||
import mineplex.core.creature.Creature;
|
||||
import mineplex.core.customdata.CustomDataManager;
|
||||
import mineplex.core.disguise.DisguiseManager;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.elo.EloManager;
|
||||
@ -42,8 +43,7 @@ import mineplex.core.profileCache.ProfileCacheManager;
|
||||
import mineplex.core.projectile.ProjectileManager;
|
||||
import mineplex.core.punish.Punish;
|
||||
import mineplex.core.recharge.Recharge;
|
||||
import mineplex.core.resourcepack.ResUnloadCheck;
|
||||
import mineplex.core.resourcepack.ResPackManager;
|
||||
import mineplex.core.resourcepack.ResourcePackManager;
|
||||
import mineplex.core.serverConfig.ServerConfiguration;
|
||||
import mineplex.core.stats.StatsManager;
|
||||
import mineplex.core.status.ServerStatusManager;
|
||||
@ -134,8 +134,10 @@ public class Hub extends JavaPlugin implements IRelation
|
||||
|
||||
SkillConditionManager conditionManager = new SkillConditionManager(this);
|
||||
|
||||
CustomDataManager customDataManager = new CustomDataManager(this, clientManager);
|
||||
|
||||
PersonalServerManager personalServerManager = new PersonalServerManager(this, clientManager);
|
||||
HubManager hubManager = new HubManager(this, blockRestore, clientManager, donationManager, inventoryManager, conditionManager, disguiseManager, new TaskManager(this, clientManager, webServerAddress), portal, partyManager, preferenceManager, petManager, pollManager, statsManager, achievementManager, new HologramManager(this, packetHandler), npcManager, personalServerManager, packetHandler, punish, serverStatusManager, giveawayManager);
|
||||
HubManager hubManager = new HubManager(this, blockRestore, clientManager, donationManager, inventoryManager, conditionManager, disguiseManager, new TaskManager(this, clientManager, webServerAddress), portal, partyManager, preferenceManager, petManager, pollManager, statsManager, achievementManager, new HologramManager(this, packetHandler), npcManager, personalServerManager, packetHandler, punish, serverStatusManager, giveawayManager, customDataManager);
|
||||
|
||||
QueueManager queueManager = new QueueManager(this, clientManager, donationManager, new EloManager(this, clientManager), partyManager);
|
||||
|
||||
@ -146,13 +148,7 @@ public class Hub extends JavaPlugin implements IRelation
|
||||
new FileUpdater(this, portal, serverStatusManager.getCurrentServerName(), serverStatusManager.getRegion());
|
||||
new CustomTagFix(this, packetHandler);
|
||||
new PacketsInteractionFix(this, packetHandler);
|
||||
new ResPackManager(new ResUnloadCheck()
|
||||
{
|
||||
public boolean canSendUnload(Player player)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
});
|
||||
new ResourcePackManager(this, portal);
|
||||
new GlobalPacketManager(this, clientManager, serverStatusManager, inventoryManager, donationManager, petManager, statsManager, giveawayManager);
|
||||
//new Replay(this, packetHandler);
|
||||
|
||||
|
@ -31,6 +31,7 @@ import mineplex.core.common.util.UtilTextBottom;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.common.util.UtilWorld;
|
||||
import mineplex.core.cosmetic.CosmeticManager;
|
||||
import mineplex.core.customdata.CustomDataManager;
|
||||
import mineplex.core.disguise.DisguiseManager;
|
||||
import mineplex.core.disguise.disguises.DisguiseSlime;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
@ -159,6 +160,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||
private PacketHandler _packetHandler;
|
||||
private PersonalServerManager _personalServerManager;
|
||||
private PlayerCountManager _playerCountManager;
|
||||
private CustomDataManager _customDataManager;
|
||||
// private HalloweenSpookinessManager _halloweenManager;
|
||||
// private TrickOrTreatManager _trickOrTreatManager;
|
||||
|
||||
@ -181,7 +183,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||
// private final String[] _songNames = {"JingleBells.nbs", "TheFirstNoel.nbs", "Hark.nbs", "DeckTheHalls.nbs", "Joy.nbs", "MerryChristmas.nbs"};
|
||||
private final ArrayList<NoteSong> _songs;
|
||||
|
||||
public HubManager(JavaPlugin plugin, BlockRestore blockRestore, CoreClientManager clientManager, DonationManager donationManager, InventoryManager inventoryManager, ConditionManager conditionManager, DisguiseManager disguiseManager, TaskManager taskManager, Portal portal, PartyManager partyManager, PreferencesManager preferences, PetManager petManager, PollManager pollManager, StatsManager statsManager, AchievementManager achievementManager, HologramManager hologramManager, NpcManager npcManager, PersonalServerManager personalServerManager, PacketHandler packetHandler, Punish punish, ServerStatusManager serverStatusManager, GiveawayManager giveawayManager)
|
||||
public HubManager(JavaPlugin plugin, BlockRestore blockRestore, CoreClientManager clientManager, DonationManager donationManager, InventoryManager inventoryManager, ConditionManager conditionManager, DisguiseManager disguiseManager, TaskManager taskManager, Portal portal, PartyManager partyManager, PreferencesManager preferences, PetManager petManager, PollManager pollManager, StatsManager statsManager, AchievementManager achievementManager, HologramManager hologramManager, NpcManager npcManager, PersonalServerManager personalServerManager, PacketHandler packetHandler, Punish punish, ServerStatusManager serverStatusManager, GiveawayManager giveawayManager, CustomDataManager customDataManager)
|
||||
{
|
||||
super("Hub Manager", plugin);
|
||||
|
||||
@ -250,6 +252,8 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||
|
||||
_playerCountManager = new PlayerCountManager(plugin);
|
||||
|
||||
_customDataManager = new CustomDataManager(plugin, clientManager);
|
||||
|
||||
_songs = new ArrayList<NoteSong>();
|
||||
|
||||
try
|
||||
@ -856,6 +860,11 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||
return _visibilityManager;
|
||||
}
|
||||
|
||||
public CustomDataManager getCustomDataManager()
|
||||
{
|
||||
return _customDataManager;
|
||||
}
|
||||
|
||||
// public HalloweenSpookinessManager getHalloweenManager()
|
||||
// {
|
||||
// return _halloweenManager;
|
||||
|
@ -41,7 +41,7 @@ public class HubRepository
|
||||
PreparedStatement preparedStatement = null;
|
||||
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);
|
||||
|
||||
@ -91,7 +91,7 @@ public class HubRepository
|
||||
int result = 0;
|
||||
PreparedStatement preparedStatement = null;
|
||||
|
||||
try (Connection connection = DBPool.MINEPLEX.getConnection())
|
||||
try (Connection connection = DBPool.getMineplex().getConnection())
|
||||
{
|
||||
preparedStatement = connection.prepareStatement(SET_NEWS_ENTRY);
|
||||
preparedStatement.setString(1, newsEntry);
|
||||
@ -127,7 +127,7 @@ public class HubRepository
|
||||
ResultSet resultSet = null;
|
||||
PreparedStatement preparedStatement = null;
|
||||
|
||||
try (Connection connection = DBPool.MINEPLEX.getConnection())
|
||||
try (Connection connection = DBPool.getMineplex().getConnection())
|
||||
{
|
||||
preparedStatement = connection.prepareStatement(RETRIEVE_MAX_NEWS_POSITION);
|
||||
resultSet = preparedStatement.executeQuery();
|
||||
@ -165,7 +165,7 @@ public class HubRepository
|
||||
int maxPos = retrieveMaxNewsPosition();
|
||||
PreparedStatement preparedStatement = null;
|
||||
|
||||
try (Connection connection = DBPool.MINEPLEX.getConnection())
|
||||
try (Connection connection = DBPool.getMineplex().getConnection())
|
||||
{
|
||||
preparedStatement = connection.prepareStatement(ADD_NEWS_ENTRY);
|
||||
preparedStatement.setString(1, newsEntry);
|
||||
@ -201,7 +201,7 @@ public class HubRepository
|
||||
int maxPos = retrieveMaxNewsPosition();
|
||||
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_NEWS_ENTRY);
|
||||
|
@ -21,7 +21,7 @@ public class MailRepository extends RepositoryBase
|
||||
|
||||
public MailRepository(JavaPlugin plugin, MailManager manager)
|
||||
{
|
||||
super(plugin, DBPool.ACCOUNT);
|
||||
super(plugin, DBPool.getAccount());
|
||||
|
||||
_manager = manager;
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ public class QueueRepository
|
||||
{
|
||||
PreparedStatement preparedStatement = null;
|
||||
|
||||
try (Connection connection = DBPool.QUEUE.getConnection())
|
||||
try (Connection connection = DBPool.getQueue().getConnection())
|
||||
{
|
||||
preparedStatement = connection.prepareStatement(DELETE_QUEUE_RECORD);
|
||||
|
||||
@ -71,7 +71,7 @@ public class QueueRepository
|
||||
{
|
||||
PreparedStatement preparedStatement = null;
|
||||
|
||||
try (Connection connection = DBPool.QUEUE.getConnection())
|
||||
try (Connection connection = DBPool.getQueue().getConnection())
|
||||
{
|
||||
preparedStatement = connection.prepareStatement(SAVE_STATE_VALUE);
|
||||
preparedStatement.setString(1, matchStatus.State);
|
||||
@ -108,7 +108,7 @@ public class QueueRepository
|
||||
PreparedStatement preparedStatement = null;
|
||||
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.setString(1, playerList);
|
||||
@ -165,7 +165,7 @@ public class QueueRepository
|
||||
PreparedStatement preparedStatement = null;
|
||||
PlayerMatchStatus matchStatus = null;
|
||||
|
||||
try (Connection connection = DBPool.QUEUE.getConnection())
|
||||
try (Connection connection = DBPool.getQueue().getConnection())
|
||||
{
|
||||
preparedStatement = connection.prepareStatement(RETRIEVE_MATCH_STATUS);
|
||||
preparedStatement.setInt(1, id);
|
||||
@ -220,7 +220,7 @@ public class QueueRepository
|
||||
ResultSet resultSet = null;
|
||||
PreparedStatement preparedStatement = null;
|
||||
|
||||
try (Connection connection = DBPool.QUEUE.getConnection())
|
||||
try (Connection connection = DBPool.getQueue().getConnection())
|
||||
{
|
||||
preparedStatement = connection.prepareStatement(RETRIEVE_OTHER_MATCH_STATUS);
|
||||
preparedStatement.setInt(1, matchStatus.AssignedMatch);
|
||||
|
@ -28,6 +28,7 @@ public class CombatLog
|
||||
protected CombatComponent LastDamager;
|
||||
protected long _lastDamaged;
|
||||
protected long _lastCombat;
|
||||
protected long _lastCombatEngaged;
|
||||
|
||||
public CombatLog(Player player, long expireTime)
|
||||
{
|
||||
@ -185,6 +186,16 @@ public class CombatLog
|
||||
return _lastCombat;
|
||||
}
|
||||
|
||||
public long GetLastCombatEngaged()
|
||||
{
|
||||
return _lastCombatEngaged;
|
||||
}
|
||||
|
||||
public void SetLastCombatEngaged(long time)
|
||||
{
|
||||
_lastCombatEngaged = time;
|
||||
}
|
||||
|
||||
public void SetLastCombat(long time)
|
||||
{
|
||||
_lastCombat = time;
|
||||
|
@ -3,8 +3,6 @@ package mineplex.minecraft.game.core.combat;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
|
||||
import net.minecraft.server.v1_8_R3.ItemStack;
|
||||
|
||||
import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.Fireball;
|
||||
@ -18,8 +16,6 @@ import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import mineplex.core.MiniPlugin;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.account.event.ClientUnloadEvent;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.F;
|
||||
@ -30,9 +26,12 @@ import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.minecraft.game.core.combat.event.ClearCombatEvent;
|
||||
import mineplex.minecraft.game.core.combat.event.CombatDeathEvent;
|
||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||
import net.minecraft.server.v1_8_R3.ItemStack;
|
||||
|
||||
public class CombatManager extends MiniPlugin
|
||||
{
|
||||
@ -256,7 +255,11 @@ public class CombatManager extends MiniPlugin
|
||||
}
|
||||
|
||||
if (event.GetDamagerEntity(true) instanceof Player)
|
||||
{
|
||||
Get((Player)event.GetDamagerEntity(true)).SetLastCombat(System.currentTimeMillis());
|
||||
Get((Player)event.GetDamagerEntity(true)).SetLastCombatEngaged(System.currentTimeMillis());
|
||||
Get(event.GetDamageePlayer()).SetLastCombatEngaged(System.currentTimeMillis());
|
||||
}
|
||||
|
||||
Get(event.GetDamageePlayer()).Attacked(
|
||||
UtilEnt.getName(event.GetDamagerEntity(true)),
|
||||
|
@ -3,8 +3,6 @@ package mineplex.minecraft.game.core.damage;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
@ -15,6 +13,8 @@ import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
|
||||
public class CustomDamageEvent extends Event implements Cancellable
|
||||
{
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
@ -43,6 +43,7 @@ public class CustomDamageEvent extends Event implements Cancellable
|
||||
private boolean _knockback = true;
|
||||
private boolean _damageeBrute = false;
|
||||
private boolean _damageToLevel = true;
|
||||
private boolean _arrowShow = true;
|
||||
|
||||
public CustomDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile projectile, Location knockbackOrigin,
|
||||
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;
|
||||
}
|
||||
|
||||
public void setShowArrows(boolean show)
|
||||
{
|
||||
_arrowShow = show;
|
||||
}
|
||||
|
||||
public boolean getShowArrows()
|
||||
{
|
||||
return _arrowShow;
|
||||
}
|
||||
|
||||
public DamageCause GetCause()
|
||||
{
|
||||
return _eventCause;
|
||||
|
@ -378,7 +378,7 @@ public class DamageManager extends MiniPlugin
|
||||
event.GetDamageeEntity().playEffect(EntityEffect.HURT);
|
||||
|
||||
//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);
|
||||
|
||||
//Knockback
|
||||
|
@ -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>
|
@ -406,9 +406,13 @@ public class ServerMonitor
|
||||
if (deadServer.getUptime() <= 10 || ignoreServer(deadServer.getGroup()))
|
||||
continue;
|
||||
|
||||
try
|
||||
{
|
||||
if (_count == 0 || deadServers.contains(deadServer.getName()))
|
||||
{
|
||||
if (_count != 0)
|
||||
copyServerLog(deadServer);
|
||||
|
||||
killServer(deadServer.getName(), deadServer.getPublicAddress(), deadServer.getPlayerCount(), "[KILLED] [DEAD] " + deadServer.getName() + ":" + deadServer.getPublicAddress(), true);
|
||||
|
||||
handleUserServerGroup(_serverGroupMap.get(deadServer.getGroup()));
|
||||
@ -432,6 +436,12 @@ public class ServerMonitor
|
||||
_delayedKill.add(deadServer.getName());
|
||||
}
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
log("[ERROR] : Trying to delete " + deadServer.getName() + ":" + deadServer.getPublicAddress());
|
||||
exception.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void handleUserServerGroup(ServerGroup serverGroup)
|
||||
|
@ -105,6 +105,7 @@ public class CustomerSupport extends MiniPlugin
|
||||
int oldChestsReceived = 0;
|
||||
int ancientChestsReceived = 0;
|
||||
int mythicalChestsReceived = 0;
|
||||
int winterChestsReceived = 0;
|
||||
|
||||
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 + "Old Chests Received : " + C.cYellow + oldChestsReceived);
|
||||
caller.sendMessage(C.cBlue + "Ancient Chests Received : " + C.cYellow + ancientChestsReceived);
|
||||
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 + "=============================================");
|
||||
_salesPackageManager.displaySalesPackages(caller, playerName);
|
||||
|
@ -179,7 +179,7 @@ public class VotifierManager extends MiniPlugin
|
||||
|
||||
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();
|
||||
if (idRecord != null)
|
||||
|
@ -9,6 +9,7 @@ import org.bukkit.plugin.java.JavaPlugin;
|
||||
import mineplex.core.FoodDupeFix;
|
||||
import mineplex.core.PacketsInteractionFix;
|
||||
import mineplex.core.account.CoreClient;
|
||||
import mineplex.core.customdata.CustomDataManager;
|
||||
import mineplex.core.giveaway.GiveawayManager;
|
||||
import mineplex.core.globalpacket.GlobalPacketManager;
|
||||
import net.minecraft.server.v1_8_R3.BiomeBase;
|
||||
@ -150,12 +151,13 @@ public class Arcade extends JavaPlugin
|
||||
cosmeticManager.disableTeamArmor();
|
||||
|
||||
GiveawayManager giveawayManager = new GiveawayManager(this, _clientManager, serverStatusManager);
|
||||
CustomDataManager customDataManager = new CustomDataManager(this, _clientManager);
|
||||
|
||||
new GlobalPacketManager(this, _clientManager, serverStatusManager, inventoryManager, _donationManager, petManager, statsManager, giveawayManager);
|
||||
|
||||
//Arcade Manager
|
||||
PollManager pollManager = new PollManager(this, _clientManager, _donationManager);
|
||||
_gameManager = new ArcadeManager(this, serverStatusManager, ReadServerConfig(), _clientManager, _donationManager, _damageManager, statsManager, achievementManager, disguiseManager, creature, teleport, new Blood(this), chat, portal, preferenceManager, inventoryManager, packetHandler, cosmeticManager, projectileManager, petManager, hologramManager, webServerAddress, pollManager, npcmanager, giveawayManager);
|
||||
_gameManager = new ArcadeManager(this, serverStatusManager, ReadServerConfig(), _clientManager, _donationManager, _damageManager, statsManager, achievementManager, disguiseManager, creature, teleport, new Blood(this), chat, portal, preferenceManager, inventoryManager, packetHandler, cosmeticManager, projectileManager, petManager, hologramManager, webServerAddress, pollManager, npcmanager, giveawayManager, customDataManager);
|
||||
|
||||
new BroadcastManager(this, _gameManager);
|
||||
|
||||
|
@ -6,6 +6,39 @@ import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
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.account.CoreClientManager;
|
||||
import mineplex.core.achievement.AchievementManager;
|
||||
@ -28,6 +61,7 @@ import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.cosmetic.CosmeticManager;
|
||||
import mineplex.core.creature.Creature;
|
||||
import mineplex.core.customdata.CustomDataManager;
|
||||
import mineplex.core.disguise.DisguiseManager;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.elo.EloManager;
|
||||
@ -39,7 +73,6 @@ import mineplex.core.hologram.HologramManager;
|
||||
import mineplex.core.inventory.InventoryManager;
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
import mineplex.core.movement.Movement;
|
||||
import mineplex.core.notifier.NotificationManager;
|
||||
import mineplex.core.npc.NpcManager;
|
||||
import mineplex.core.packethandler.PacketHandler;
|
||||
import mineplex.core.party.PartyManager;
|
||||
@ -48,9 +81,7 @@ import mineplex.core.poll.PollManager;
|
||||
import mineplex.core.portal.Portal;
|
||||
import mineplex.core.preferences.PreferencesManager;
|
||||
import mineplex.core.projectile.ProjectileManager;
|
||||
import mineplex.core.resourcepack.ResPackManager;
|
||||
import mineplex.core.resourcepack.ResUnloadCheck;
|
||||
import mineplex.core.resourcepack.redis.RedisUnloadResPack;
|
||||
import mineplex.core.resourcepack.ResourcePackManager;
|
||||
import mineplex.core.reward.RewardData;
|
||||
import mineplex.core.reward.RewardRarity;
|
||||
import mineplex.core.reward.rewards.PetReward;
|
||||
@ -100,46 +131,15 @@ import nautilus.game.arcade.managers.GameManager;
|
||||
import nautilus.game.arcade.managers.GamePlayerManager;
|
||||
import nautilus.game.arcade.managers.GameSpectatorManager;
|
||||
import nautilus.game.arcade.managers.GameStatManager;
|
||||
import nautilus.game.arcade.managers.GameTestingManager;
|
||||
import nautilus.game.arcade.managers.GameTournamentManager;
|
||||
import nautilus.game.arcade.managers.GameWorldManager;
|
||||
import nautilus.game.arcade.managers.HolidayManager;
|
||||
import nautilus.game.arcade.managers.IdleManager;
|
||||
import nautilus.game.arcade.managers.MiscManager;
|
||||
import nautilus.game.arcade.player.ArcadePlayer;
|
||||
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
|
||||
{
|
||||
// Modules
|
||||
@ -191,15 +191,12 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
||||
private PartyManager _partyManager;
|
||||
private PreferencesManager _preferencesManager;
|
||||
private GiveawayManager _giveawayManager;
|
||||
private ResourcePackManager _resourcePackManager;
|
||||
private CustomDataManager _customDataManager;
|
||||
|
||||
private TaskManager _taskManager;
|
||||
private PacketHandler _packetHandler;
|
||||
|
||||
private String _resourcePackUrl;
|
||||
private boolean _resourcePackRequired;
|
||||
private NautHashMap<String, Boolean> _resourcePackUsers = new NautHashMap<String, Boolean>();
|
||||
private NautHashMap<String, Long> _resourcePackNoResponse = new NautHashMap<String, Long>();
|
||||
|
||||
// Observers
|
||||
private HashSet<Player> _specList = new HashSet<Player>();
|
||||
private HashSet<Player> _fakeObserve = new HashSet<Player>();
|
||||
@ -220,7 +217,8 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
||||
CoreClientManager clientManager, DonationManager donationManager, DamageManager damageManager,
|
||||
StatsManager statsManager, AchievementManager achievementManager, DisguiseManager disguiseManager, Creature creature, Teleport teleport, Blood blood, Chat chat,
|
||||
Portal portal, PreferencesManager preferences, InventoryManager inventoryManager, PacketHandler packetHandler,
|
||||
CosmeticManager cosmeticManager, ProjectileManager projectileManager, PetManager petManager, HologramManager hologramManager, String webAddress, PollManager pollManager, NpcManager npcManager, GiveawayManager giveawayManager)
|
||||
CosmeticManager cosmeticManager, ProjectileManager projectileManager, PetManager petManager, HologramManager hologramManager, String webAddress, PollManager pollManager,
|
||||
NpcManager npcManager, GiveawayManager giveawayManager, CustomDataManager customDataManager)
|
||||
{
|
||||
super("Game Manager", plugin);
|
||||
|
||||
@ -279,6 +277,9 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
||||
_petManager = petManager;
|
||||
_eventManager = new EventModule(this, getPlugin());
|
||||
_giveawayManager = giveawayManager;
|
||||
_resourcePackManager = new ResourcePackManager(plugin, portal);
|
||||
|
||||
_customDataManager = customDataManager;
|
||||
|
||||
// Shop
|
||||
_arcadeShop = new ArcadeShop(this, clientManager, donationManager);
|
||||
@ -303,6 +304,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
||||
_idleManager = new IdleManager(this);
|
||||
TitanGiveawayManager titanGiveaway = new TitanGiveawayManager(getPlugin(), clientManager, serverStatusManager);
|
||||
new HolidayManager(this, titanGiveaway);
|
||||
new GameTestingManager(this);
|
||||
|
||||
// Game Addons
|
||||
new CompassAddon(plugin, this);
|
||||
@ -341,19 +343,6 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
||||
}, 80L);
|
||||
}
|
||||
|
||||
new ResPackManager(new ResUnloadCheck()
|
||||
{
|
||||
public boolean canSendUnload(Player player)
|
||||
{
|
||||
if (_resourcePackUsers.containsKey(player.getName()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
loadRequiredRank();
|
||||
}
|
||||
|
||||
@ -367,68 +356,16 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
||||
addCommand(new RequiredRankCommand(this));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onResourcePackStatus(PlayerResourcePackStatusEvent event)
|
||||
{
|
||||
if (_resourcePackUrl == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if (_resourcePackRequired)
|
||||
{
|
||||
if (event.getStatus() == Status.ACCEPTED)
|
||||
{
|
||||
_resourcePackNoResponse.remove(player.getName());
|
||||
}
|
||||
else if (event.getStatus() == Status.DECLINED)
|
||||
{
|
||||
_resourcePackNoResponse.remove(player.getName());
|
||||
|
||||
UtilPlayer.message(player, " ");
|
||||
JsonMessage message = new JsonMessage("")
|
||||
.color("gold")
|
||||
.bold()
|
||||
.extra("You need to accept the resource pack!\n"
|
||||
+ "Click me for instructions on how to fix this!")
|
||||
|
||||
.click(ClickEvent.OPEN_URL,
|
||||
|
||||
"http://mineplex.com/forums/m/11929946/viewthread/21554536-wizards-resource-pack-help");
|
||||
|
||||
message.sendToPlayer(player);
|
||||
UtilPlayer.message(player, " ");
|
||||
|
||||
returnHubNoResPack(player);
|
||||
}
|
||||
else if (event.getStatus() == Status.FAILED_DOWNLOAD)
|
||||
{
|
||||
_resourcePackNoResponse.remove(player.getName());
|
||||
|
||||
returnHubNoResPack(player, "Failed to download resource pack!");
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (event.getStatus() == Status.ACCEPTED
|
||||
|| event.getStatus() == Status.SUCCESSFULLY_LOADED)
|
||||
{
|
||||
_resourcePackUsers.put(player.getName(), true);
|
||||
}
|
||||
else
|
||||
{
|
||||
_resourcePackUsers.remove(player.getName());
|
||||
}
|
||||
}
|
||||
|
||||
public GameServerConfig GetServerConfig()
|
||||
{
|
||||
return _serverConfig;
|
||||
}
|
||||
|
||||
public ResourcePackManager getResourcePackManager()
|
||||
{
|
||||
return _resourcePackManager;
|
||||
}
|
||||
|
||||
public ArrayList<GameType> GetGameList()
|
||||
{
|
||||
return GetServerConfig().GameList;
|
||||
@ -599,6 +536,8 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
||||
return _serverStatusManager;
|
||||
}
|
||||
|
||||
public CustomDataManager getCustomDataManager() { return _customDataManager; }
|
||||
|
||||
public ChatColor GetColor(Player player)
|
||||
{
|
||||
if (_game == null)
|
||||
@ -1445,112 +1384,6 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
||||
return false;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onSecond(UpdateEvent event)
|
||||
{
|
||||
Iterator<Entry<String, Long>> itel = _resourcePackNoResponse.entrySet().iterator();
|
||||
|
||||
while (itel.hasNext())
|
||||
{
|
||||
Entry<String, Long> entry = itel.next();
|
||||
|
||||
if (UtilTime.elapsed(entry.getValue(), 20000))
|
||||
{
|
||||
Player player = Bukkit.getPlayerExact(entry.getKey());
|
||||
|
||||
if (player != null)
|
||||
{
|
||||
// Send it again, enforce it!
|
||||
_resourcePackNoResponse.put(player.getName(), System.currentTimeMillis());
|
||||
player.setResourcePack(_resourcePackUrl);
|
||||
}
|
||||
else
|
||||
{
|
||||
itel.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void ResourcePackQuit(PlayerQuitEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if (_resourcePackUsers.containsKey(player.getName()) && _resourcePackUsers.get(player.getName()))
|
||||
{
|
||||
new RedisUnloadResPack(player.getName()).publish();
|
||||
|
||||
_resourcePackUsers.remove(player.getName());
|
||||
}
|
||||
}
|
||||
|
||||
private void returnHubNoResPack(Player player)
|
||||
{
|
||||
player.playSound(player.getLocation(), Sound.ENDERDRAGON_GROWL, 10f, 1f);
|
||||
GetPortal().sendPlayerToServer(player, "Lobby");
|
||||
}
|
||||
|
||||
private void returnHubNoResPack(Player player, String message)
|
||||
{
|
||||
UtilPlayer.message(player, " ");
|
||||
UtilPlayer.message(player, C.cGold + C.Bold + message);
|
||||
UtilPlayer.message(player, " ");
|
||||
|
||||
returnHubNoResPack(player);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void ResourcePackJoin(PlayerJoinEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if (_resourcePackUrl != null)
|
||||
{
|
||||
if (_resourcePackRequired)
|
||||
{
|
||||
_resourcePackNoResponse.put(player.getName(), System.currentTimeMillis());
|
||||
}
|
||||
|
||||
_resourcePackUsers.put(player.getName(), false);
|
||||
player.setResourcePack(_resourcePackUrl);
|
||||
}
|
||||
}
|
||||
|
||||
public void setResourcePack(String resourcePack, boolean forceResourcePack)
|
||||
{
|
||||
if (!Objects.equal(resourcePack, _resourcePackUrl) || forceResourcePack != _resourcePackRequired)
|
||||
{
|
||||
_resourcePackNoResponse.clear();
|
||||
_resourcePackUsers.clear();
|
||||
_resourcePackUrl = resourcePack == null || resourcePack.isEmpty() ? null : resourcePack;
|
||||
_resourcePackRequired = forceResourcePack;
|
||||
|
||||
if (_resourcePackUrl == null || _resourcePackUrl.isEmpty())
|
||||
{
|
||||
_resourcePackRequired = false;
|
||||
|
||||
for (Player player : Bukkit.getOnlinePlayers())
|
||||
{
|
||||
player.setResourcePack("http://file.mineplex.com/ResReset.zip");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (Player player : Bukkit.getOnlinePlayers())
|
||||
{
|
||||
if (_resourcePackRequired)
|
||||
{
|
||||
_resourcePackNoResponse.put(player.getName(), System.currentTimeMillis());
|
||||
}
|
||||
|
||||
_resourcePackUsers.put(player.getName(), false);
|
||||
player.setResourcePack(_resourcePackUrl);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void loadRequiredRank()
|
||||
{
|
||||
_requiredRank = null;
|
||||
@ -1623,4 +1456,9 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
public ArcadePlayer getArcadePlayer(Player player)
|
||||
{
|
||||
return new ArcadePlayer(player, getCustomDataManager(), this);
|
||||
}
|
||||
}
|
||||
|
@ -383,7 +383,7 @@ public abstract class Game implements Listener
|
||||
new ExperienceStatTracker(this), new WinStatTracker(this), new LoseStatTracker(this), new DamageDealtStatTracker(
|
||||
this), new DamageTakenStatTracker(this), new GamesPlayedStatTracker(this));
|
||||
|
||||
Manager.setResourcePack(gameType.getResourcePackUrl(), gameType.isEnforceResourcePack());
|
||||
Manager.getResourcePackManager().setResourcePack(gameType.getResourcePackUrl(), gameType.isEnforceResourcePack());
|
||||
|
||||
_useEntityPacketHandler = new IPacketHandler()
|
||||
{
|
||||
|
@ -5,14 +5,15 @@ import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.GameType;
|
||||
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;
|
||||
|
||||
public class BaconBrawl extends SoloGame
|
||||
@ -34,9 +35,9 @@ public class BaconBrawl extends SoloGame
|
||||
"Last pig in the arena wins!"
|
||||
});
|
||||
|
||||
this.DamageTeamSelf = true;
|
||||
this.HungerSet = 20;
|
||||
this.PrepareFreeze = false;
|
||||
DamageTeamSelf = true;
|
||||
HungerSet = 20;
|
||||
PrepareFreeze = false;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
@ -11,7 +11,6 @@ import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.UtilEnt;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.disguise.disguises.DisguisePig;
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
|
@ -13,7 +13,6 @@ import nautilus.game.arcade.kit.Kit;
|
||||
import nautilus.game.arcade.kit.KitAvailability;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import nautilus.game.arcade.kit.perks.PerkBodySlam;
|
||||
import nautilus.game.arcade.kit.perks.PerkJump;
|
||||
|
||||
public class KitPig extends Kit
|
||||
{
|
||||
|
@ -1,6 +1,5 @@
|
||||
package nautilus.game.arcade.game.games.baconbrawl.kits;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
|
@ -0,0 +1,6 @@
|
||||
package nautilus.game.arcade.game.games.bridge;
|
||||
|
||||
public class BattleCryManager
|
||||
{
|
||||
|
||||
}
|
@ -26,6 +26,7 @@ public class BridgePart
|
||||
Velocity = velocity;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public boolean Update()
|
||||
{
|
||||
if (!Entity.isValid())
|
||||
|
@ -469,6 +469,9 @@ public class Christmas extends SoloGame
|
||||
{
|
||||
if (Manager.IsRewardItems())
|
||||
{
|
||||
if (!player.isOnline())
|
||||
continue;
|
||||
|
||||
if (Manager.GetTaskManager().hasCompletedTask(player, "CC Reward 2015"))
|
||||
{
|
||||
SetCustomWinMessage(player, "You already earned your reward");
|
||||
|
@ -22,6 +22,7 @@ import org.bukkit.entity.Zombie;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.EntityShootBowEvent;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
|
||||
|
@ -4,12 +4,55 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
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.UtilAction;
|
||||
import mineplex.core.common.util.UtilBlock;
|
||||
import mineplex.core.common.util.UtilEvent;
|
||||
import mineplex.core.common.util.UtilEvent.ActionType;
|
||||
import mineplex.core.common.util.UtilGear;
|
||||
import mineplex.core.common.util.UtilInv;
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.hologram.Hologram.HologramTarget;
|
||||
import mineplex.core.recharge.Recharge;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
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.PlayerState;
|
||||
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.KitRifle;
|
||||
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.stats.KillFastStatTracker;
|
||||
import nautilus.game.arcade.stats.LastStandStatTracker;
|
||||
import nautilus.game.arcade.stats.MedicStatTracker;
|
||||
import nautilus.game.arcade.stats.WinFastStatTracker;
|
||||
import nautilus.game.arcade.stats.WinWithoutLosingTeammateStatTracker;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.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;
|
||||
import net.minecraft.server.v1_8_R3.PacketPlayOutEntityDestroy;
|
||||
|
||||
public class Paintball extends TeamGame
|
||||
{
|
||||
public static class ReviveEvent extends PlayerEvent
|
||||
{
|
||||
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>();
|
||||
private HashMap<Player, PlayerCopyPaintball> _doubles = new HashMap<Player, PlayerCopyPaintball>();
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public Paintball(ArcadeManager manager)
|
||||
{
|
||||
super(manager, GameType.Paintball,
|
||||
|
||||
new Kit[]
|
||||
super(manager, GameType.Paintball, new Kit[]
|
||||
{
|
||||
new KitRifle(manager),
|
||||
new KitShotgun(manager),
|
||||
new KitMachineGun(manager),
|
||||
},
|
||||
new KitSniper(manager),
|
||||
|
||||
new String[]
|
||||
}, new String[]
|
||||
{
|
||||
"Shoot enemies to paint them",
|
||||
"Revive/heal with Water Bombs",
|
||||
"Last team alive wins!"
|
||||
});
|
||||
|
||||
this.StrictAntiHack = true;
|
||||
StrictAntiHack = true;
|
||||
|
||||
this.HungerSet = 20;
|
||||
HungerSet = 20;
|
||||
|
||||
InventoryClick = false;
|
||||
|
||||
TeamArmorHotbar = true;
|
||||
|
||||
registerStatTrackers(
|
||||
new KillFastStatTracker(this, 4, 5, "KillingSpree"),
|
||||
new KillingSpreeTracker(this),
|
||||
new WinWithoutLosingTeammateStatTracker(this, "FlawlessVictory"),
|
||||
new MedicStatTracker(this),
|
||||
new WinFastStatTracker(this, 30, "Speedrunner"),
|
||||
@ -141,6 +129,14 @@ public class Paintball extends TeamGame
|
||||
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)
|
||||
public void ColorArmor(PlayerPrepareTeleportEvent event)
|
||||
{
|
||||
@ -161,46 +157,62 @@ public class Paintball extends TeamGame
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@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 (event.getEntity() instanceof ThrownPotion)
|
||||
return;
|
||||
|
||||
byte color = 3;
|
||||
if (event.getEntity() instanceof EnderPearl)
|
||||
color = 14;
|
||||
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);
|
||||
|
||||
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())
|
||||
{
|
||||
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;
|
||||
|
||||
if (block.getType() == Material.HARD_CLAY)
|
||||
block.setType(Material.STAINED_CLAY);
|
||||
|
||||
block.setData(color);
|
||||
}
|
||||
|
||||
if (color == 3) loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 8);
|
||||
else loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 10);
|
||||
|
||||
event.getEntity().remove();
|
||||
}
|
||||
}, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void PlayerQuit(PlayerQuitEvent event)
|
||||
public void onQuit(PlayerQuitEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if (_doubles.containsKey(player))
|
||||
{
|
||||
PlayerCopy copy = _doubles.get(player);
|
||||
PlayerCopyPaintball copy = _doubles.remove(player);
|
||||
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");
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@EventHandler(priority = EventPriority.LOW)
|
||||
public void PaintballDamage(CustomDamageEvent event)
|
||||
{
|
||||
if (!IsLive())
|
||||
@ -225,7 +237,7 @@ public class Paintball extends TeamGame
|
||||
if (event.GetProjectile() == null)
|
||||
return;
|
||||
|
||||
if (!(event.GetProjectile() instanceof Snowball) && !(event.GetProjectile() instanceof EnderPearl))
|
||||
if (!(event.GetProjectile() instanceof Snowball) && !(event.GetProjectile() instanceof EnderPearl) && !(event.GetProjectile() instanceof Arrow))
|
||||
return;
|
||||
|
||||
//Negate
|
||||
@ -235,6 +247,8 @@ public class Paintball extends TeamGame
|
||||
event.AddMod("Paintball", "Paintball", 2, true);
|
||||
event.AddKnockback("Paintball", 2);
|
||||
|
||||
event.setShowArrows(false);
|
||||
|
||||
Player damagee = event.GetDamageePlayer();
|
||||
if (damagee == null)
|
||||
return;
|
||||
@ -262,6 +276,13 @@ public class Paintball extends TeamGame
|
||||
{
|
||||
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
|
||||
@ -271,12 +292,14 @@ public class Paintball extends TeamGame
|
||||
UtilPlayer.message(player, damageeTeam.GetColor() + damagee.getName() + ChatColor.RESET + " was painted by " +
|
||||
damagerTeam.GetColor() + damager.getName() + ChatColor.RESET + "!");
|
||||
|
||||
PlayerOut(damagee);
|
||||
PlayerOut(damagee, damager);
|
||||
|
||||
AddGems(damager, 2, "Kills", true, true);
|
||||
|
||||
AddStat(damager, "Kills", 1, false, false);
|
||||
AddStat(damagee, "Deaths", 1, false, false);
|
||||
|
||||
Bukkit.getPluginManager().callEvent(new PaintballEvent(damagee, damager));
|
||||
}
|
||||
|
||||
//Hit Sound
|
||||
@ -288,15 +311,9 @@ public class Paintball extends TeamGame
|
||||
@EventHandler
|
||||
public void ArmorRemoveCancel(InventoryClickEvent event)
|
||||
{
|
||||
HumanEntity player = event.getWhoClicked();
|
||||
|
||||
// Fixed armor being taken off while spectating after being painted.
|
||||
|
||||
if (!IsAlive(player))
|
||||
{
|
||||
if (!IsAlive(event.getWhoClicked()))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean Color(Player player, int amount)
|
||||
{
|
||||
@ -331,7 +348,7 @@ public class Paintball extends TeamGame
|
||||
return nonColored.isEmpty();
|
||||
}
|
||||
|
||||
public void PlayerOut(Player player)
|
||||
public void PlayerOut(Player player, Player killer)
|
||||
{
|
||||
//State
|
||||
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().Cloak("Hit", player, player, 9999, false, false);
|
||||
|
||||
_doubles.put(player, new PlayerCopyPaintball(this, player, killer, GetTeam(player).GetColor()));
|
||||
|
||||
//Settings
|
||||
player.setAllowFlight(true);
|
||||
player.setFlying(true);
|
||||
@ -348,8 +367,6 @@ public class Paintball extends TeamGame
|
||||
((CraftPlayer)player).getHandle().k = false;
|
||||
|
||||
UtilAction.velocity(player, new Vector(0,1.2,0));
|
||||
|
||||
_doubles.put(player, new PlayerCopy(this, player, GetTeam(player).GetColor()));
|
||||
}
|
||||
|
||||
// @EventHandler
|
||||
@ -402,10 +419,10 @@ public class Paintball extends TeamGame
|
||||
if (throwerTeam == null) return;
|
||||
|
||||
//Revive
|
||||
Iterator<PlayerCopy> copyIterator = _doubles.values().iterator();
|
||||
Iterator<PlayerCopyPaintball> copyIterator = _doubles.values().iterator();
|
||||
while (copyIterator.hasNext())
|
||||
{
|
||||
PlayerCopy copy = copyIterator.next();
|
||||
PlayerCopyPaintball copy = copyIterator.next();
|
||||
|
||||
GameTeam otherTeam = GetTeam(copy.GetPlayer());
|
||||
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)
|
||||
continue;
|
||||
|
||||
PlayerIn(copy.GetPlayer(), copy.GetEntity());
|
||||
PlayerIn(copy.GetPlayer(), copy);
|
||||
|
||||
copyIterator.remove();
|
||||
|
||||
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
|
||||
SetPlayerState(player, PlayerState.IN);
|
||||
@ -446,9 +464,9 @@ public class Paintball extends TeamGame
|
||||
if (copy != null)
|
||||
{
|
||||
Location loc = player.getLocation();
|
||||
loc.setX(copy.getLocation().getX());
|
||||
loc.setY(copy.getLocation().getY());
|
||||
loc.setZ(copy.getLocation().getZ());
|
||||
loc.setX(copy.GetEntity().getLocation().getX());
|
||||
loc.setY(copy.GetEntity().getLocation().getY());
|
||||
loc.setZ(copy.GetEntity().getLocation().getZ());
|
||||
player.teleport(loc);
|
||||
}
|
||||
|
||||
@ -480,7 +498,9 @@ public class Paintball extends TeamGame
|
||||
Manager.GetCondition().EndCondition(player, ConditionType.CLOAK, null);
|
||||
|
||||
//Remove Copy
|
||||
copy.remove();
|
||||
copy.GetEntity().remove();
|
||||
copy.GetHolo().stop();
|
||||
copy.GetSaveMe().stop();
|
||||
}
|
||||
}, 4);
|
||||
}
|
||||
@ -512,4 +532,128 @@ public class Paintball extends TeamGame
|
||||
for (Player player : GetPlayers(true))
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -1,21 +1,23 @@
|
||||
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.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.LeatherArmorMeta;
|
||||
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 KitMachineGun(ArcadeManager manager)
|
||||
@ -39,36 +41,17 @@ public class KitMachineGun extends Kit
|
||||
@Override
|
||||
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
|
||||
PotionMeta potionMeta = (PotionMeta)potion.getItemMeta();
|
||||
potionMeta.setDisplayName("Water Bomb");
|
||||
potionMeta.setDisplayName(F.item("Water Bomb"));
|
||||
potion.setItemMeta(potionMeta);
|
||||
player.getInventory().addItem(potion);
|
||||
UtilInv.insert(player, potion);
|
||||
|
||||
ItemStack helm = new ItemStack(Material.LEATHER_HELMET);
|
||||
LeatherArmorMeta metaHelm = (LeatherArmorMeta)helm.getItemMeta();
|
||||
metaHelm.setColor(Color.WHITE);
|
||||
helm.setItemMeta(metaHelm);
|
||||
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);
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
@ -1,21 +1,23 @@
|
||||
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.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.LeatherArmorMeta;
|
||||
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
|
||||
{
|
||||
@ -41,37 +43,17 @@ public class KitRifle extends Kit
|
||||
@Override
|
||||
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
|
||||
PotionMeta potionMeta = (PotionMeta)potion.getItemMeta();
|
||||
potionMeta.setDisplayName("Water Bomb");
|
||||
potionMeta.setDisplayName(F.item("Water Bomb"));
|
||||
potion.setItemMeta(potionMeta);
|
||||
player.getInventory().addItem(potion);
|
||||
UtilInv.insert(player, potion);
|
||||
|
||||
ItemStack helm = new ItemStack(Material.LEATHER_HELMET);
|
||||
LeatherArmorMeta metaHelm = (LeatherArmorMeta)helm.getItemMeta();
|
||||
metaHelm.setColor(Color.WHITE);
|
||||
helm.setItemMeta(metaHelm);
|
||||
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);
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user