Merge remote-tracking branch 'origin/master' into foo
This commit is contained in:
commit
a72eee9cf3
|
@ -10,6 +10,7 @@ import mineplex.serverdata.data.BungeeServer;
|
||||||
import mineplex.serverdata.data.DataRepository;
|
import mineplex.serverdata.data.DataRepository;
|
||||||
import mineplex.serverdata.redis.RedisDataRepository;
|
import mineplex.serverdata.redis.RedisDataRepository;
|
||||||
import mineplex.serverdata.servers.ConnectionData;
|
import mineplex.serverdata.servers.ConnectionData;
|
||||||
|
import mineplex.serverdata.servers.ConnectionData.ConnectionType;
|
||||||
import mineplex.serverdata.servers.ServerManager;
|
import mineplex.serverdata.servers.ServerManager;
|
||||||
import mineplex.serverdata.servers.ServerRepository;
|
import mineplex.serverdata.servers.ServerRepository;
|
||||||
import net.md_5.bungee.api.ServerPing.Players;
|
import net.md_5.bungee.api.ServerPing.Players;
|
||||||
|
@ -46,10 +47,10 @@ public class PlayerCount implements Listener, Runnable
|
||||||
Region.ALL, BungeeServer.class, "bungeeServers");
|
Region.ALL, BungeeServer.class, "bungeeServers");
|
||||||
|
|
||||||
if (_region == Region.US)
|
if (_region == Region.US)
|
||||||
_secondRepository = new RedisDataRepository<BungeeServer>(new ConnectionData("10.81.1.156", 6379), new ConnectionData("10.81.1.156", 6377),
|
_secondRepository = new RedisDataRepository<BungeeServer>(new ConnectionData("10.81.1.156", 6379, ConnectionType.MASTER, "ServerStatus"), new ConnectionData("10.81.1.156", 6377, ConnectionType.SLAVE, "ServerStatus"),
|
||||||
Region.ALL, BungeeServer.class, "bungeeServers");
|
Region.ALL, BungeeServer.class, "bungeeServers");
|
||||||
else
|
else
|
||||||
_secondRepository = new RedisDataRepository<BungeeServer>(new ConnectionData("10.3.203.80", 6379), new ConnectionData("10.3.203.80", 6377),
|
_secondRepository = new RedisDataRepository<BungeeServer>(new ConnectionData("10.3.203.80", 6379, ConnectionType.MASTER, "ServerStatus"), new ConnectionData("10.3.203.80", 6377, ConnectionType.SLAVE, "ServerStatus"),
|
||||||
Region.ALL, BungeeServer.class, "bungeeServers");
|
Region.ALL, BungeeServer.class, "bungeeServers");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ import com.neustar.ultra.api.webservice.v01.UltraWSException;
|
||||||
/*
|
/*
|
||||||
* User: jbodner
|
* User: jbodner
|
||||||
* Date: 1/28/13
|
* Date: 1/28/13
|
||||||
* Time: 1:11 PM4
|
* Time: 1:11 PM
|
||||||
*
|
*
|
||||||
* Copyright 2000-2013 NeuStar, Inc. All rights reserved.
|
* Copyright 2000-2013 NeuStar, Inc. All rights reserved.
|
||||||
* NeuStar, the Neustar logo and related names and logos are registered
|
* NeuStar, the Neustar logo and related names and logos are registered
|
||||||
|
|
|
@ -26,6 +26,7 @@ import mineplex.serverdata.data.DataRepository;
|
||||||
import mineplex.serverdata.redis.RedisDataRepository;
|
import mineplex.serverdata.redis.RedisDataRepository;
|
||||||
import mineplex.serverdata.servers.ConnectionData;
|
import mineplex.serverdata.servers.ConnectionData;
|
||||||
import mineplex.serverdata.servers.ServerManager;
|
import mineplex.serverdata.servers.ServerManager;
|
||||||
|
import mineplex.serverdata.servers.ConnectionData.ConnectionType;
|
||||||
|
|
||||||
public class BungeeRotator
|
public class BungeeRotator
|
||||||
{
|
{
|
||||||
|
@ -105,7 +106,7 @@ public class BungeeRotator
|
||||||
_repository = new RedisDataRepository<BungeeServer>(ServerManager.getMasterConnection(), ServerManager.getSlaveConnection(),
|
_repository = new RedisDataRepository<BungeeServer>(ServerManager.getMasterConnection(), ServerManager.getSlaveConnection(),
|
||||||
Region.ALL, BungeeServer.class, "bungeeServers");
|
Region.ALL, BungeeServer.class, "bungeeServers");
|
||||||
|
|
||||||
_secondRepository = new RedisDataRepository<BungeeServer>(new ConnectionData("10.81.1.156", 6379), new ConnectionData("10.81.1.156", 6377),
|
_secondRepository = new RedisDataRepository<BungeeServer>(new ConnectionData("10.33.53.16", 6379, ConnectionType.MASTER, "ServerStatus"), new ConnectionData("10.33.53.16", 6377, ConnectionType.SLAVE, "ServerStatus"),
|
||||||
Region.ALL, BungeeServer.class, "bungeeServers");
|
Region.ALL, BungeeServer.class, "bungeeServers");
|
||||||
|
|
||||||
//_ipRepository = new PlayerStatsRepository();
|
//_ipRepository = new PlayerStatsRepository();
|
||||||
|
|
|
@ -31,7 +31,7 @@ public class BenefitManager extends MiniDbClientPlugin<BenefitData>
|
||||||
|
|
||||||
//_benefits.add(new Christmas2014(plugin, _repository, inventoryManager));
|
//_benefits.add(new Christmas2014(plugin, _repository, inventoryManager));
|
||||||
//_benefits.add(new Thanksgiving2014(plugin, _repository, inventoryManager));
|
//_benefits.add(new Thanksgiving2014(plugin, _repository, inventoryManager));
|
||||||
_benefits.add(new Players40k(plugin, _repository, inventoryManager));
|
_benefits.add(new Players40k(this, _repository, inventoryManager));
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST)
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
|
|
|
@ -5,15 +5,16 @@ import java.sql.SQLException;
|
||||||
|
|
||||||
import mineplex.core.database.DBPool;
|
import mineplex.core.database.DBPool;
|
||||||
import mineplex.core.database.RepositoryBase;
|
import mineplex.core.database.RepositoryBase;
|
||||||
|
import mineplex.core.database.column.ColumnInt;
|
||||||
import mineplex.core.database.column.ColumnVarChar;
|
import mineplex.core.database.column.ColumnVarChar;
|
||||||
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
public class BenefitManagerRepository extends RepositoryBase
|
public class BenefitManagerRepository extends RepositoryBase
|
||||||
{
|
{
|
||||||
private static String CREATE_BENEFIT_TABLE = "CREATE TABLE IF NOT EXISTS rankBenefits (id INT NOT NULL AUTO_INCREMENT, accountId INT, benefit VARCHAR(100), PRIMARY KEY (id), INDEX rankUuid (uuid));";
|
private static String CREATE_BENEFIT_TABLE = "CREATE TABLE IF NOT EXISTS rankBenefits (id INT NOT NULL AUTO_INCREMENT, accountId INT, benefit VARCHAR(100), PRIMARY KEY (id), FOREIGN KEY (accountId) REFERENCES accounts(id));";
|
||||||
|
|
||||||
private static String INSERT_BENEFIT = "INSERT INTO rankBenefits (uuid, benefit) VALUES (?, ?);";
|
private static String INSERT_BENEFIT = "INSERT INTO rankBenefits (accountId, benefit) VALUES (?, ?);";
|
||||||
|
|
||||||
public BenefitManagerRepository(JavaPlugin plugin)
|
public BenefitManagerRepository(JavaPlugin plugin)
|
||||||
{
|
{
|
||||||
|
@ -23,7 +24,7 @@ public class BenefitManagerRepository extends RepositoryBase
|
||||||
@Override
|
@Override
|
||||||
protected void initialize()
|
protected void initialize()
|
||||||
{
|
{
|
||||||
// executeUpdate(CREATE_BENEFIT_TABLE);
|
executeUpdate(CREATE_BENEFIT_TABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -31,9 +32,9 @@ public class BenefitManagerRepository extends RepositoryBase
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean addBenefit(String uuid, String benefit)
|
public boolean addBenefit(int accountId, String benefit)
|
||||||
{
|
{
|
||||||
return executeUpdate(INSERT_BENEFIT, new ColumnVarChar("uuid", 100, uuid), new ColumnVarChar("benefit", 100, benefit)) > 0;
|
return executeUpdate(INSERT_BENEFIT, new ColumnInt("accountId", accountId), new ColumnVarChar("benefit", 100, benefit)) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BenefitData retrievePlayerBenefitData(ResultSet resultSet) throws SQLException
|
public BenefitData retrievePlayerBenefitData(ResultSet resultSet) throws SQLException
|
||||||
|
@ -42,9 +43,11 @@ public class BenefitManagerRepository extends RepositoryBase
|
||||||
|
|
||||||
while (resultSet.next())
|
while (resultSet.next())
|
||||||
{
|
{
|
||||||
playerBenefit.Benefits.add(resultSet.getString(1));
|
playerBenefit.Benefits.add(resultSet.getString(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
playerBenefit.Loaded = true;
|
||||||
|
|
||||||
return playerBenefit;
|
return playerBenefit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package mineplex.core.benefit.benefits;
|
package mineplex.core.benefit.benefits;
|
||||||
|
|
||||||
|
import mineplex.core.benefit.BenefitManager;
|
||||||
import mineplex.core.benefit.BenefitManagerRepository;
|
import mineplex.core.benefit.BenefitManagerRepository;
|
||||||
import mineplex.core.common.util.Callback;
|
import mineplex.core.common.util.Callback;
|
||||||
|
|
||||||
|
@ -9,11 +10,11 @@ import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
public abstract class BenefitBase
|
public abstract class BenefitBase
|
||||||
{
|
{
|
||||||
private JavaPlugin _plugin;
|
private BenefitManager _plugin;
|
||||||
private String _name;
|
private String _name;
|
||||||
private BenefitManagerRepository _repository;
|
private BenefitManagerRepository _repository;
|
||||||
|
|
||||||
protected BenefitBase(JavaPlugin plugin, String name, BenefitManagerRepository repository)
|
protected BenefitBase(BenefitManager plugin, String name, BenefitManagerRepository repository)
|
||||||
{
|
{
|
||||||
_plugin = plugin;
|
_plugin = plugin;
|
||||||
_name = name;
|
_name = name;
|
||||||
|
@ -22,7 +23,7 @@ public abstract class BenefitBase
|
||||||
|
|
||||||
public JavaPlugin getPlugin()
|
public JavaPlugin getPlugin()
|
||||||
{
|
{
|
||||||
return _plugin;
|
return _plugin.getPlugin();
|
||||||
}
|
}
|
||||||
|
|
||||||
public BenefitManagerRepository getRepository()
|
public BenefitManagerRepository getRepository()
|
||||||
|
@ -34,11 +35,11 @@ public abstract class BenefitBase
|
||||||
|
|
||||||
public void recordBenefit(final Player player, final Callback<Boolean> callback)
|
public void recordBenefit(final Player player, final Callback<Boolean> callback)
|
||||||
{
|
{
|
||||||
Bukkit.getServer().getScheduler().runTaskAsynchronously(_plugin, new Runnable()
|
Bukkit.getServer().getScheduler().runTaskAsynchronously(_plugin.getPlugin(), new Runnable()
|
||||||
{
|
{
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
boolean success = _repository.addBenefit(player.getUniqueId().toString(), _name);
|
boolean success = _repository.addBenefit(_plugin.getClientManager().Get(player).getAccountId(), _name);
|
||||||
|
|
||||||
callback.run(success);
|
callback.run(success);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package mineplex.core.benefit.benefits;
|
package mineplex.core.benefit.benefits;
|
||||||
|
|
||||||
|
import mineplex.core.benefit.BenefitManager;
|
||||||
import mineplex.core.benefit.BenefitManagerRepository;
|
import mineplex.core.benefit.BenefitManagerRepository;
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.common.util.Callback;
|
import mineplex.core.common.util.Callback;
|
||||||
|
@ -13,7 +14,7 @@ public class Christmas2014 extends BenefitBase
|
||||||
{
|
{
|
||||||
private InventoryManager _inventoryManager;
|
private InventoryManager _inventoryManager;
|
||||||
|
|
||||||
public Christmas2014(JavaPlugin plugin, BenefitManagerRepository repository, InventoryManager inventoryManager)
|
public Christmas2014(BenefitManager plugin, BenefitManagerRepository repository, InventoryManager inventoryManager)
|
||||||
{
|
{
|
||||||
super(plugin, "Christmas2014", repository);
|
super(plugin, "Christmas2014", repository);
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package mineplex.core.benefit.benefits;
|
package mineplex.core.benefit.benefits;
|
||||||
|
|
||||||
|
import mineplex.core.benefit.BenefitManager;
|
||||||
import mineplex.core.benefit.BenefitManagerRepository;
|
import mineplex.core.benefit.BenefitManagerRepository;
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.common.util.Callback;
|
import mineplex.core.common.util.Callback;
|
||||||
|
@ -13,7 +14,7 @@ public class Players40k extends BenefitBase
|
||||||
{
|
{
|
||||||
private InventoryManager _inventoryManager;
|
private InventoryManager _inventoryManager;
|
||||||
|
|
||||||
public Players40k(JavaPlugin plugin, BenefitManagerRepository repository, InventoryManager inventoryManager)
|
public Players40k(BenefitManager plugin, BenefitManagerRepository repository, InventoryManager inventoryManager)
|
||||||
{
|
{
|
||||||
super(plugin, "Players40k", repository);
|
super(plugin, "Players40k", repository);
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package mineplex.core.benefit.benefits;
|
package mineplex.core.benefit.benefits;
|
||||||
|
|
||||||
|
import mineplex.core.benefit.BenefitManager;
|
||||||
import mineplex.core.benefit.BenefitManagerRepository;
|
import mineplex.core.benefit.BenefitManagerRepository;
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.common.util.Callback;
|
import mineplex.core.common.util.Callback;
|
||||||
|
@ -13,7 +14,7 @@ public class Thanksgiving2014 extends BenefitBase
|
||||||
{
|
{
|
||||||
private InventoryManager _inventoryManager;
|
private InventoryManager _inventoryManager;
|
||||||
|
|
||||||
public Thanksgiving2014(JavaPlugin plugin, BenefitManagerRepository repository, InventoryManager inventoryManager)
|
public Thanksgiving2014(BenefitManager plugin, BenefitManagerRepository repository, InventoryManager inventoryManager)
|
||||||
{
|
{
|
||||||
super(plugin, "Thanksgiving2014", repository);
|
super(plugin, "Thanksgiving2014", repository);
|
||||||
|
|
||||||
|
|
|
@ -10,8 +10,6 @@ public enum Category
|
||||||
PermMute,
|
PermMute,
|
||||||
Other; // Represents perm ban - (or old perm mutes)
|
Other; // Represents perm ban - (or old perm mutes)
|
||||||
|
|
||||||
//test
|
|
||||||
|
|
||||||
public static boolean contains(String s)
|
public static boolean contains(String s)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>Mineplex.Queue.Core</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>
|
|
@ -5,6 +5,7 @@ import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import mineplex.serverdata.servers.ConnectionData;
|
import mineplex.serverdata.servers.ConnectionData;
|
||||||
|
import mineplex.serverdata.servers.ConnectionData.ConnectionType;
|
||||||
|
|
||||||
public class RedisConfig
|
public class RedisConfig
|
||||||
{
|
{
|
||||||
|
@ -14,18 +15,15 @@ public class RedisConfig
|
||||||
private static Random random = new Random(); // Utility random
|
private static Random random = new Random(); // Utility random
|
||||||
|
|
||||||
// The connections managed by this configuration
|
// The connections managed by this configuration
|
||||||
private ConnectionData _masterConnection;
|
private List<ConnectionData> _connections;
|
||||||
private List<ConnectionData> _slaveConnections;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class constructor
|
* Class constructor
|
||||||
* @param master
|
* @param connections
|
||||||
* @param slaves
|
|
||||||
*/
|
*/
|
||||||
public RedisConfig(ConnectionData master, List<ConnectionData> slaves)
|
public RedisConfig(List<ConnectionData> connections)
|
||||||
{
|
{
|
||||||
_masterConnection = master;
|
_connections = connections;
|
||||||
_slaveConnections = slaves;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -34,7 +32,8 @@ public class RedisConfig
|
||||||
*/
|
*/
|
||||||
public RedisConfig()
|
public RedisConfig()
|
||||||
{
|
{
|
||||||
this(new ConnectionData(DEFAULT_IP, DEFAULT_PORT), new ArrayList<ConnectionData>());
|
_connections = new ArrayList<ConnectionData>();
|
||||||
|
_connections.add(new ConnectionData(DEFAULT_IP, DEFAULT_PORT, ConnectionType.MASTER, "DefaultConnection"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -43,23 +42,39 @@ public class RedisConfig
|
||||||
*/
|
*/
|
||||||
public ConnectionData getConnection()
|
public ConnectionData getConnection()
|
||||||
{
|
{
|
||||||
return getConnection(true);
|
return getConnection(true, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param writeable - whether the returned connection reference can receive write-requests.
|
* @param writeable - whether the returned connection reference can receive write-requests.
|
||||||
* @return a {@link ConnectionData} referencing a valid redis-connection from this configuration.
|
* @return a {@link ConnectionData} referencing a valid redis-connection from this configuration.
|
||||||
*/
|
*/
|
||||||
public ConnectionData getConnection(boolean writeable)
|
public ConnectionData getConnection(boolean writeable, String name)
|
||||||
{
|
{
|
||||||
if (writeable || _slaveConnections.size() == 0)
|
List<ConnectionData> connections = getConnections(writeable, name);
|
||||||
|
|
||||||
|
if (connections.size() > 0)
|
||||||
{
|
{
|
||||||
return _masterConnection;
|
int index = random.nextInt(connections.size());
|
||||||
|
return connections.get(index);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ConnectionData> getConnections(boolean writeable, String name)
|
||||||
|
{
|
||||||
|
List<ConnectionData> connections = new ArrayList<ConnectionData>();
|
||||||
|
ConnectionType type = (writeable) ? ConnectionType.MASTER : ConnectionType.SLAVE;
|
||||||
|
|
||||||
|
for (ConnectionData connection : _connections)
|
||||||
{
|
{
|
||||||
int index = random.nextInt(_slaveConnections.size());
|
if (connection.getType() == type && connection.nameMatches(name))
|
||||||
return _slaveConnections.get(index);
|
{
|
||||||
|
connections.add(connection);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return connections;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,22 +7,48 @@ package mineplex.serverdata.servers;
|
||||||
*/
|
*/
|
||||||
public class ConnectionData
|
public class ConnectionData
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public enum ConnectionType
|
||||||
|
{
|
||||||
|
MASTER,
|
||||||
|
SLAVE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ConnectionType _type; // The type of connection available
|
||||||
|
public ConnectionType getType() { return _type; }
|
||||||
|
|
||||||
|
private String _name; // The name associated with this connection
|
||||||
|
public String getName() { return _name; }
|
||||||
|
|
||||||
private String _host; // The host URL to connect to repository
|
private String _host; // The host URL to connect to repository
|
||||||
public String getHost() { return _host; }
|
public String getHost() { return _host; }
|
||||||
|
|
||||||
private int _port; // The port to connect to repository
|
private int _port; // The port to connect to repository
|
||||||
public int getPort() { return _port; }
|
public int getPort() { return _port; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
* @param host - the host URL defining the repository
|
* @param host - the host URL defining the repository
|
||||||
* @param port - the port used for connection to repository
|
* @param port - the port used for connection to repository
|
||||||
|
* @param type - the type of connection referenced by this ConnectionData
|
||||||
|
* @param name - the name associated with ConnectionData
|
||||||
*/
|
*/
|
||||||
public ConnectionData(String host, int port)
|
public ConnectionData(String host, int port, ConnectionType type, String name)
|
||||||
{
|
{
|
||||||
_host = host;
|
_host = host;
|
||||||
_port = port;
|
_port = port;
|
||||||
|
_type = type;
|
||||||
|
_name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param name
|
||||||
|
* @return true, if {@code name} is null or it matches (case-insensitive) the {@code _name} associated
|
||||||
|
* with this ConnectionData, false otherwise.
|
||||||
|
*/
|
||||||
|
public boolean nameMatches(String name)
|
||||||
|
{
|
||||||
|
return (name == null || name.equalsIgnoreCase(_name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ import java.util.Random;
|
||||||
import mineplex.serverdata.Region;
|
import mineplex.serverdata.Region;
|
||||||
import mineplex.serverdata.redis.RedisConfig;
|
import mineplex.serverdata.redis.RedisConfig;
|
||||||
import mineplex.serverdata.redis.RedisServerRepository;
|
import mineplex.serverdata.redis.RedisServerRepository;
|
||||||
|
import mineplex.serverdata.servers.ConnectionData.ConnectionType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ServerManager handles the creation/management of {@link ServerRepository}s for use.
|
* ServerManager handles the creation/management of {@link ServerRepository}s for use.
|
||||||
|
@ -20,6 +21,8 @@ import mineplex.serverdata.redis.RedisServerRepository;
|
||||||
*/
|
*/
|
||||||
public class ServerManager
|
public class ServerManager
|
||||||
{
|
{
|
||||||
|
public static final String SERVER_STATUS_LABEL = "ServerStatus"; // Label differentiating ServerStatus related servers
|
||||||
|
|
||||||
// Configuration determining connection information
|
// Configuration determining connection information
|
||||||
private static RedisConfig _config;
|
private static RedisConfig _config;
|
||||||
|
|
||||||
|
@ -32,7 +35,7 @@ public class ServerManager
|
||||||
* @param region - the geographical region of the {@link ServerRepository}.
|
* @param region - the geographical region of the {@link ServerRepository}.
|
||||||
* @return a newly instanced (or cached) {@link ServerRepository} for the specified {@code region}.
|
* @return a newly instanced (or cached) {@link ServerRepository} for the specified {@code region}.
|
||||||
*/
|
*/
|
||||||
public static ServerRepository getServerRepository(ConnectionData writeConn, ConnectionData readConn, Region region)
|
private static ServerRepository getServerRepository(ConnectionData writeConn, ConnectionData readConn, Region region)
|
||||||
{
|
{
|
||||||
if (repositories.containsKey(region)) return repositories.get(region);
|
if (repositories.containsKey(region)) return repositories.get(region);
|
||||||
|
|
||||||
|
@ -49,7 +52,7 @@ public class ServerManager
|
||||||
*/
|
*/
|
||||||
public static ServerRepository getServerRepository(Region region)
|
public static ServerRepository getServerRepository(Region region)
|
||||||
{
|
{
|
||||||
return getServerRepository(getMasterConnection(), getSlaveConnection(), region);
|
return getServerRepository(getConnection(true, SERVER_STATUS_LABEL), getConnection(false, SERVER_STATUS_LABEL), region);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -69,13 +72,18 @@ public class ServerManager
|
||||||
return getConnection(false);
|
return getConnection(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ConnectionData getConnection(boolean writeable, String name)
|
||||||
|
{
|
||||||
|
return getConfig().getConnection(writeable, name);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param writeable - whether the connection referenced in return can receive write-requests
|
* @param writeable - whether the connection referenced in return can receive write-requests
|
||||||
* @return a newly generated {@code ConnectionData} pointing to a valid connection.
|
* @return a newly generated {@code ConnectionData} pointing to a valid connection.
|
||||||
*/
|
*/
|
||||||
public static ConnectionData getConnection(boolean writeable)
|
public static ConnectionData getConnection(boolean writeable)
|
||||||
{
|
{
|
||||||
return getConfig().getConnection(writeable);
|
return getConnection(writeable, "DefaultConnection");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -91,32 +99,28 @@ public class ServerManager
|
||||||
|
|
||||||
if (configFile.exists())
|
if (configFile.exists())
|
||||||
{
|
{
|
||||||
|
List<ConnectionData> connections = new ArrayList<ConnectionData>();
|
||||||
List<String> lines = Files.readAllLines(configFile.toPath(), Charset.defaultCharset());
|
List<String> lines = Files.readAllLines(configFile.toPath(), Charset.defaultCharset());
|
||||||
|
|
||||||
ConnectionData master = deserializeConnection(lines.get(0));
|
for (String line : lines)
|
||||||
List<ConnectionData> slaves = new ArrayList<ConnectionData>();
|
|
||||||
|
|
||||||
for (int i = 1; i < lines.size(); i++)
|
|
||||||
{
|
{
|
||||||
ConnectionData slave = deserializeConnection(lines.get(i));
|
ConnectionData connection = deserializeConnection(line);
|
||||||
slaves.add(slave);
|
connections.add(connection);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
System.out.println("LOADED " + (master != null) + " " + slaves.size());
|
_config = new RedisConfig(connections);
|
||||||
|
|
||||||
_config = new RedisConfig(master, slaves);
|
|
||||||
System.out.println("Master connection " + master.getHost() + " port " + master.getPort());
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
System.out.println("redis-config.dat not found at " + configFile.toPath().toString());
|
log("redis-config.dat not found at " + configFile.toPath().toString());
|
||||||
_config = new RedisConfig();
|
_config = new RedisConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
exception.printStackTrace();
|
exception.printStackTrace();
|
||||||
System.out.println("---Unable To Parse Redis Configuration File---");
|
log("---Unable To Parse Redis Configuration File---");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -132,14 +136,22 @@ public class ServerManager
|
||||||
{
|
{
|
||||||
String[] args = line.split(" ");
|
String[] args = line.split(" ");
|
||||||
|
|
||||||
if (args.length == 2)
|
if (args.length >= 2)
|
||||||
{
|
{
|
||||||
String ip = args[0];
|
String ip = args[0];
|
||||||
int port = Integer.parseInt(args[1]);
|
int port = Integer.parseInt(args[1]);
|
||||||
|
String typeName = (args.length >= 3) ? args[2].toUpperCase() : "MASTER"; // Defaults to MASTER if omitted.
|
||||||
|
ConnectionType type = ConnectionType.valueOf(typeName);
|
||||||
|
String name = (args.length >= 4) ? args[3] : "DefaultConnection"; // Defaults to DefaultConnection if omitted.
|
||||||
|
|
||||||
return new ConnectionData(ip, port);
|
return new ConnectionData(ip, port, type, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void log(String message)
|
||||||
|
{
|
||||||
|
System.out.println(String.format("[ServerManager] %s", message));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>Mineplex.ServerProcesses</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>
|
|
@ -96,7 +96,10 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
|
|
||||||
//Lilly Pad Bridge
|
//Lilly Pad Bridge
|
||||||
private ArrayList<Location> _lillyPads = new ArrayList<Location>();
|
private ArrayList<Location> _lillyPads = new ArrayList<Location>();
|
||||||
|
|
||||||
|
//Ice
|
||||||
|
private ArrayList<Location> _iceBridge = new ArrayList<Location>();
|
||||||
|
|
||||||
private HashSet<BridgePart> _bridgeParts = new HashSet<BridgePart>();
|
private HashSet<BridgePart> _bridgeParts = new HashSet<BridgePart>();
|
||||||
|
|
||||||
//Animals
|
//Animals
|
||||||
|
@ -108,14 +111,13 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
|
|
||||||
//Chest Loot
|
//Chest Loot
|
||||||
private ArrayList<ItemStack> _chestLoot = new ArrayList<ItemStack>();
|
private ArrayList<ItemStack> _chestLoot = new ArrayList<ItemStack>();
|
||||||
|
|
||||||
//Ore
|
//Ore
|
||||||
private OreHider _ore;
|
private OreHider _ore;
|
||||||
private double _oreDensity = 2.2;
|
private double _oreDensity = 2.2;
|
||||||
|
|
||||||
//Map Flags
|
//Map Flags
|
||||||
private int _buildHeight = -1;
|
private int _buildHeight = -1;
|
||||||
private int _iceForm = -1;
|
|
||||||
|
|
||||||
//Player Respawn
|
//Player Respawn
|
||||||
private HashSet<String> _usedLife = new HashSet<String>();
|
private HashSet<String> _usedLife = new HashSet<String>();
|
||||||
|
@ -150,16 +152,16 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
"Special loot is located in the center.",
|
"Special loot is located in the center.",
|
||||||
"The last team alive wins!"
|
"The last team alive wins!"
|
||||||
});
|
});
|
||||||
|
|
||||||
_ore = new OreHider();
|
_ore = new OreHider();
|
||||||
|
|
||||||
// Flags
|
// Flags
|
||||||
GameTimeout = Manager.IsTournamentServer() ? 5400000 : 3600000;
|
GameTimeout = Manager.IsTournamentServer() ? 5400000 : 3600000;
|
||||||
|
|
||||||
Manager.GetExplosion().SetLiquidDamage(false);
|
Manager.GetExplosion().SetLiquidDamage(false);
|
||||||
|
|
||||||
this.StrictAntiHack = true;
|
this.StrictAntiHack = true;
|
||||||
|
|
||||||
DamageSelf = true;
|
DamageSelf = true;
|
||||||
|
|
||||||
ItemDrop = true;
|
ItemDrop = true;
|
||||||
|
@ -211,7 +213,7 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
new TntMinerStatTracker(this),
|
new TntMinerStatTracker(this),
|
||||||
new KillFastStatTracker(this, 4, 10, "Rampage"),
|
new KillFastStatTracker(this, 4, 10, "Rampage"),
|
||||||
new DeathBomberStatTracker(this, 5)
|
new DeathBomberStatTracker(this, 5)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
@ -253,9 +255,6 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
@Override
|
@Override
|
||||||
public void ParseData()
|
public void ParseData()
|
||||||
{
|
{
|
||||||
if (!WorldData.GetDataLocs("WHITE").isEmpty())
|
|
||||||
WorldWaterDamage = 4;
|
|
||||||
|
|
||||||
ParseLavaBridge();
|
ParseLavaBridge();
|
||||||
ParseWoodBridge();
|
ParseWoodBridge();
|
||||||
ParseIceBridge();
|
ParseIceBridge();
|
||||||
|
@ -379,7 +378,7 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void ParseOre(ArrayList<Location> teamOre)
|
private void ParseOre(ArrayList<Location> teamOre)
|
||||||
{
|
{
|
||||||
|
@ -648,15 +647,12 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
|
|
||||||
_lavaSource = WorldData.GetDataLocs("BLACK");
|
_lavaSource = WorldData.GetDataLocs("BLACK");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ParseIceBridge()
|
private void ParseIceBridge()
|
||||||
{
|
{
|
||||||
if (WorldData.GetCustomLocs("WATER_HEIGHT").isEmpty())
|
_iceBridge = WorldData.GetCustomLocs("LIGHT_BLUE");
|
||||||
return;
|
|
||||||
|
|
||||||
_iceForm = WorldData.GetCustomLocs("WATER_HEIGHT").get(0).getBlockY();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ParseLillyPad()
|
private void ParseLillyPad()
|
||||||
{
|
{
|
||||||
_lillyPads = WorldData.GetDataLocs("LIME");
|
_lillyPads = WorldData.GetDataLocs("LIME");
|
||||||
|
@ -673,15 +669,15 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
|
|
||||||
if (!UtilTime.elapsed(this.GetStateTime(), _bridgeTime))
|
if (!UtilTime.elapsed(this.GetStateTime(), _bridgeTime))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!_bridgesDown)
|
if (!_bridgesDown)
|
||||||
{
|
{
|
||||||
Manager.GetExplosion().SetLiquidDamage(true);
|
Manager.GetExplosion().SetLiquidDamage(true);
|
||||||
this.Announce(C.cRed + C.Bold + "ALERT: " + ChatColor.RESET + C.Bold + "THE BRIDGES ARE SPAWNING!");
|
this.Announce(C.cRed + C.Bold + "ALERT: " + ChatColor.RESET + C.Bold + "THE BRIDGES ARE SPAWNING!");
|
||||||
}
|
}
|
||||||
|
|
||||||
_bridgesDown = true;
|
_bridgesDown = true;
|
||||||
|
|
||||||
for (Kit kit : this.GetKits())
|
for (Kit kit : this.GetKits())
|
||||||
{
|
{
|
||||||
if (kit instanceof KitDestructor)
|
if (kit instanceof KitDestructor)
|
||||||
|
@ -696,63 +692,6 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
BuildLillyPad();
|
BuildLillyPad();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void BuildIce()
|
|
||||||
{
|
|
||||||
if (_iceForm <= 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (UtilTime.elapsed(this.GetStateTime(), _bridgeTime + 120000))
|
|
||||||
{
|
|
||||||
WorldData.World.setStorm(false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
WorldData.World.setStorm(true);
|
|
||||||
|
|
||||||
//Short Delay (so snow properly starts)
|
|
||||||
if (!UtilTime.elapsed(this.GetStateTime(), _bridgeTime + 6000))
|
|
||||||
return;
|
|
||||||
|
|
||||||
int xVar = WorldData.MaxX - WorldData.MinX;
|
|
||||||
int zVar = WorldData.MaxZ - WorldData.MinZ;
|
|
||||||
|
|
||||||
//do area
|
|
||||||
BuildIceArea(WorldData.MinX, WorldData.MinX + xVar/2, WorldData.MinZ, WorldData.MinZ + zVar/2, Material.REDSTONE_BLOCK);
|
|
||||||
BuildIceArea(WorldData.MinX + xVar/2, WorldData.MaxX, WorldData.MinZ, WorldData.MinZ + zVar/2, Material.GOLD_BLOCK);
|
|
||||||
BuildIceArea(WorldData.MinX, WorldData.MinX + xVar/2, WorldData.MinZ + zVar/2, WorldData.MaxZ, Material.EMERALD_BLOCK);
|
|
||||||
BuildIceArea(WorldData.MinX + xVar/2, WorldData.MaxX, WorldData.MinZ + zVar/2, WorldData.MaxZ, Material.DIAMOND_BLOCK);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void BuildIceArea(int xLow, int xHigh, int zLow, int zHigh, Material mat)
|
|
||||||
{
|
|
||||||
int attempts = 1000;
|
|
||||||
int complete = 10;
|
|
||||||
|
|
||||||
//Team A
|
|
||||||
while (attempts > 0 && complete > 0)
|
|
||||||
{
|
|
||||||
attempts--;
|
|
||||||
|
|
||||||
int x = xLow + UtilMath.r(xHigh - xLow);
|
|
||||||
int z = zLow + UtilMath.r(zHigh - zLow);
|
|
||||||
|
|
||||||
Block block = WorldData.World.getBlockAt(x, _iceForm, z);
|
|
||||||
|
|
||||||
if (!block.isLiquid())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (block.getRelative(BlockFace.NORTH).isLiquid() &&
|
|
||||||
block.getRelative(BlockFace.EAST).isLiquid() &&
|
|
||||||
block.getRelative(BlockFace.SOUTH).isLiquid() &&
|
|
||||||
block.getRelative(BlockFace.WEST).isLiquid())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
block.setType(Material.ICE);
|
|
||||||
|
|
||||||
complete--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void BuildLava()
|
private void BuildLava()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < 3; i++)
|
for (int i = 0; i < 3; i++)
|
||||||
|
@ -783,27 +722,71 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
0.5f + (float) Math.random());
|
0.5f + (float) Math.random());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void BuildLillyPad()
|
private void BuildLillyPad()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < 2; i++)
|
for (int i = 0; i < 2; i++)
|
||||||
if (_lillyPads != null && !_lillyPads.isEmpty())
|
if (_lillyPads != null && !_lillyPads.isEmpty())
|
||||||
{
|
{
|
||||||
// Random Block
|
// Random Block
|
||||||
Location bestLoc = _lillyPads.get(UtilMath.r(_lillyPads.size()));
|
Location loc = _lillyPads.get(UtilMath.r(_lillyPads.size()));
|
||||||
|
|
||||||
if (bestLoc.getBlock().getRelative(BlockFace.DOWN).isLiquid())
|
if (!loc.getBlock().getRelative(BlockFace.DOWN).isLiquid())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
_lillyPads.remove(bestLoc);
|
_lillyPads.remove(loc);
|
||||||
|
|
||||||
|
MapUtil.QuickChangeBlockAt(loc, Material.WATER_LILY);
|
||||||
|
|
||||||
MapUtil.QuickChangeBlockAt(bestLoc, Material.WATER_LILY);
|
|
||||||
|
|
||||||
// Sound
|
// Sound
|
||||||
bestLoc.getWorld().playEffect(bestLoc, Effect.STEP_SOUND, 111);
|
loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 111);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void BuildIce()
|
||||||
|
{
|
||||||
|
if (UtilTime.elapsed(this.GetStateTime(), _bridgeTime + 120000))
|
||||||
|
{
|
||||||
|
WorldData.World.setStorm(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
WorldData.World.setStorm(true);
|
||||||
|
|
||||||
|
int attempts = 0;
|
||||||
|
int done = 0;
|
||||||
|
while (done < 2 && attempts < 500 && _iceBridge != null && !_iceBridge.isEmpty())
|
||||||
|
{
|
||||||
|
attempts++;
|
||||||
|
|
||||||
|
// Random Block
|
||||||
|
Location loc = _iceBridge.get(UtilMath.r(_iceBridge.size()));
|
||||||
|
|
||||||
|
Block block = loc.getBlock().getRelative(BlockFace.DOWN);
|
||||||
|
|
||||||
|
if (!block.isLiquid())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (block.getRelative(BlockFace.NORTH).isLiquid() &&
|
||||||
|
block.getRelative(BlockFace.EAST).isLiquid() &&
|
||||||
|
block.getRelative(BlockFace.SOUTH).isLiquid() &&
|
||||||
|
block.getRelative(BlockFace.WEST).isLiquid())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
_iceBridge.remove(loc);
|
||||||
|
|
||||||
|
if (Math.random() > 0.25)
|
||||||
|
MapUtil.QuickChangeBlockAt(loc, Material.PACKED_ICE);
|
||||||
|
else
|
||||||
|
MapUtil.QuickChangeBlockAt(loc, Material.ICE);
|
||||||
|
|
||||||
|
// Sound
|
||||||
|
loc.getWorld().playEffect(loc, Effect.STEP_SOUND, Material.ICE);
|
||||||
|
|
||||||
|
done++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void BuildWood()
|
private void BuildWood()
|
||||||
{
|
{
|
||||||
if (_woodBridgeBlocks != null && !_woodBridgeBlocks.isEmpty())
|
if (_woodBridgeBlocks != null && !_woodBridgeBlocks.isEmpty())
|
||||||
|
@ -1051,7 +1034,7 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
|
|
||||||
if (_bridgesDown)
|
if (_bridgesDown)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//In Liquid
|
//In Liquid
|
||||||
if (event.getBlock().getRelative(BlockFace.UP).isLiquid() ||
|
if (event.getBlock().getRelative(BlockFace.UP).isLiquid() ||
|
||||||
event.getBlockReplacedState().getTypeId() == 8 ||
|
event.getBlockReplacedState().getTypeId() == 8 ||
|
||||||
|
@ -1061,9 +1044,9 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
{
|
{
|
||||||
UtilPlayer.message(event.getPlayer(), F.main("Game",
|
UtilPlayer.message(event.getPlayer(), F.main("Game",
|
||||||
"Cannot place blocks in liquids until Bridge is down."));
|
"Cannot place blocks in liquids until Bridge is down."));
|
||||||
|
|
||||||
event.getPlayer().setVelocity(new Vector(0,-0.5,0));
|
event.getPlayer().setVelocity(new Vector(0,-0.5,0));
|
||||||
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1178,7 +1161,7 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
{
|
{
|
||||||
if (event.getBucket() != Material.WATER_BUCKET)
|
if (event.getBucket() != Material.WATER_BUCKET)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (WorldWaterDamage > 0)
|
if (WorldWaterDamage > 0)
|
||||||
{
|
{
|
||||||
UtilPlayer.message(
|
UtilPlayer.message(
|
||||||
|
@ -1186,7 +1169,7 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
F.main("Game", "Cannot use " + F.elem("Water Bucket") + " on this map."));
|
F.main("Game", "Cannot use " + F.elem("Water Bucket") + " on this map."));
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (!_bridgesDown)
|
else if (!_bridgesDown)
|
||||||
{
|
{
|
||||||
UtilPlayer.message(
|
UtilPlayer.message(
|
||||||
|
@ -1263,7 +1246,7 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
{
|
{
|
||||||
if (!team.IsTeamAlive())
|
if (!team.IsTeamAlive())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Scoreboard.WriteBlank();
|
Scoreboard.WriteBlank();
|
||||||
|
|
||||||
for (Player player : team.GetPlayers(true))
|
for (Player player : team.GetPlayers(true))
|
||||||
|
@ -1446,7 +1429,7 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
SetState(GameState.End);
|
SetState(GameState.End);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ArrayList<GameTeam> bestTeams = new ArrayList<GameTeam>();
|
ArrayList<GameTeam> bestTeams = new ArrayList<GameTeam>();
|
||||||
int bestKills = 0;
|
int bestKills = 0;
|
||||||
|
|
||||||
|
@ -1508,7 +1491,7 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
{
|
{
|
||||||
return _bridgesDown;
|
return _bridgesDown;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void CheatChestBreak(BlockBreakEvent event)
|
public void CheatChestBreak(BlockBreakEvent event)
|
||||||
{
|
{
|
||||||
|
@ -1517,7 +1500,7 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
|
|
||||||
if (event.getBlock().getType() != Material.CHEST)
|
if (event.getBlock().getType() != Material.CHEST)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!IsAlive(event.getPlayer()))
|
if (!IsAlive(event.getPlayer()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1531,7 +1514,7 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void CheatChestBreak(BlockPlaceEvent event)
|
public void CheatChestBreak(BlockPlaceEvent event)
|
||||||
{
|
{
|
||||||
|
@ -1540,7 +1523,7 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
|
|
||||||
if (event.getBlock().getType() != Material.CHEST)
|
if (event.getBlock().getType() != Material.CHEST)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!IsAlive(event.getPlayer()))
|
if (!IsAlive(event.getPlayer()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1554,19 +1537,19 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void CheatChestInteract(PlayerInteractEvent event)
|
public void CheatChestInteract(PlayerInteractEvent event)
|
||||||
{
|
{
|
||||||
if (_bridgesDown)
|
if (_bridgesDown)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (event.getClickedBlock() == null)
|
if (event.getClickedBlock() == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (event.getClickedBlock().getType() != Material.CHEST)
|
if (event.getClickedBlock().getType() != Material.CHEST)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!IsAlive(event.getPlayer()))
|
if (!IsAlive(event.getPlayer()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1580,50 +1563,50 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR)
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void PreBridgeDamage(CustomDamageEvent event)
|
public void PreBridgeDamage(CustomDamageEvent event)
|
||||||
{
|
{
|
||||||
if (event.IsCancelled())
|
if (event.IsCancelled())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_bridgesDown || event.GetProjectile() != null)
|
if (_bridgesDown || event.GetProjectile() != null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
GameTeam damageeTeam = GetTeam(event.GetDamageePlayer());
|
GameTeam damageeTeam = GetTeam(event.GetDamageePlayer());
|
||||||
GameTeam damagerTeam = GetTeam(event.GetDamagerPlayer(false));
|
GameTeam damagerTeam = GetTeam(event.GetDamagerPlayer(false));
|
||||||
|
|
||||||
if (damageeTeam == null || damagerTeam == null)
|
if (damageeTeam == null || damagerTeam == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (damageeTeam.equals(damagerTeam))
|
if (damageeTeam.equals(damagerTeam))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Player damagee = event.GetDamageePlayer();
|
Player damagee = event.GetDamageePlayer();
|
||||||
Player damager = event.GetDamagerPlayer(false);
|
Player damager = event.GetDamagerPlayer(false);
|
||||||
|
|
||||||
//Damagee is closer to Damagers Island
|
//Damagee is closer to Damagers Island
|
||||||
if (UtilMath.offset(damagee.getLocation(), UtilWorld.averageLocation(damageeTeam.GetSpawns())) >
|
if (UtilMath.offset(damagee.getLocation(), UtilWorld.averageLocation(damageeTeam.GetSpawns())) >
|
||||||
UtilMath.offset(damagee.getLocation(), UtilWorld.averageLocation(damagerTeam.GetSpawns())))
|
UtilMath.offset(damagee.getLocation(), UtilWorld.averageLocation(damagerTeam.GetSpawns())))
|
||||||
{
|
{
|
||||||
cheaterKill(damagee);
|
cheaterKill(damagee);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Damagee is closer to Damagees Island
|
//Damagee is closer to Damagees Island
|
||||||
if (UtilMath.offset(damager.getLocation(), UtilWorld.averageLocation(damagerTeam.GetSpawns())) >
|
if (UtilMath.offset(damager.getLocation(), UtilWorld.averageLocation(damagerTeam.GetSpawns())) >
|
||||||
UtilMath.offset(damager.getLocation(), UtilWorld.averageLocation(damageeTeam.GetSpawns())))
|
UtilMath.offset(damager.getLocation(), UtilWorld.averageLocation(damageeTeam.GetSpawns())))
|
||||||
{
|
{
|
||||||
cheaterKill(damager);
|
cheaterKill(damager);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void cheaterKill(Player player)
|
public void cheaterKill(Player player)
|
||||||
{
|
{
|
||||||
Announce(C.Bold + player.getName() + " was killed for cheating!");
|
Announce(C.Bold + player.getName() + " was killed for cheating!");
|
||||||
_usedLife.add(player.getName());
|
_usedLife.add(player.getName());
|
||||||
player.damage(9999);
|
player.damage(9999);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void liquidFlow(BlockFromToEvent event)
|
public void liquidFlow(BlockFromToEvent event)
|
||||||
{
|
{
|
||||||
|
@ -1635,40 +1618,40 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// @EventHandler
|
// @EventHandler
|
||||||
// public void liquidBlockDeny(BlockBreakEvent event)
|
// public void liquidBlockDeny(BlockBreakEvent event)
|
||||||
// {
|
// {
|
||||||
// if (_bridgesDown)
|
// if (_bridgesDown)
|
||||||
// return;
|
// return;
|
||||||
//
|
//
|
||||||
// if (!IsAlive(event.getPlayer()))
|
// if (!IsAlive(event.getPlayer()))
|
||||||
// return;
|
// return;
|
||||||
//
|
//
|
||||||
// if (event.getBlock().getRelative(BlockFace.UP).isLiquid() || event.getBlock().getRelative(BlockFace.UP).getRelative(BlockFace.UP).isLiquid())
|
// if (event.getBlock().getRelative(BlockFace.UP).isLiquid() || event.getBlock().getRelative(BlockFace.UP).getRelative(BlockFace.UP).isLiquid())
|
||||||
// {
|
// {
|
||||||
// UtilPlayer.message(event.getPlayer(), F.main("Game",
|
// UtilPlayer.message(event.getPlayer(), F.main("Game",
|
||||||
// "Cannot tunnel under liquids."));
|
// "Cannot tunnel under liquids."));
|
||||||
//
|
//
|
||||||
// event.setCancelled(true);
|
// event.setCancelled(true);
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void vehicleDeny(PlayerInteractEvent event)
|
public void vehicleDeny(PlayerInteractEvent event)
|
||||||
{
|
{
|
||||||
if (!UtilEvent.isAction(event, ActionType.R))
|
if (!UtilEvent.isAction(event, ActionType.R))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (UtilGear.isMat(event.getPlayer().getItemInHand(), Material.BOAT))
|
if (UtilGear.isMat(event.getPlayer().getItemInHand(), Material.BOAT))
|
||||||
{
|
{
|
||||||
UtilPlayer.message(event.getPlayer(), F.main("Game",
|
UtilPlayer.message(event.getPlayer(), F.main("Game",
|
||||||
"You cannot place boats."));
|
"You cannot place boats."));
|
||||||
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double GetKillsGems(Player killer, Player killed, boolean assist)
|
public double GetKillsGems(Player killer, Player killed, boolean assist)
|
||||||
{
|
{
|
||||||
|
@ -1677,7 +1660,7 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
else
|
else
|
||||||
return 12;
|
return 12;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void toggleOre(PlayerCommandPreprocessEvent event)
|
public void toggleOre(PlayerCommandPreprocessEvent event)
|
||||||
{
|
{
|
||||||
|
|
|
@ -993,17 +993,26 @@ public class GameFlagManager implements Listener
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void WorldWaterDamage(UpdateEvent event)
|
public void WorldWaterDamage(UpdateEvent event)
|
||||||
{
|
{
|
||||||
|
if (event.getType() != UpdateType.FAST)
|
||||||
|
return;
|
||||||
|
|
||||||
Game game = Manager.GetGame();
|
Game game = Manager.GetGame();
|
||||||
if (game == null) return;
|
if (game == null) return;
|
||||||
|
|
||||||
if (game.WorldWaterDamage <= 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!game.IsLive())
|
if (!game.IsLive())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (event.getType() != UpdateType.FAST)
|
if (game.WorldWaterDamage <= 0)
|
||||||
return;
|
{
|
||||||
|
if (!game.WorldData.GetCustomLocs("WATER_DAMAGE").isEmpty())
|
||||||
|
{
|
||||||
|
game.WorldWaterDamage = 4;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (GameTeam team : game.GetTeamList())
|
for (GameTeam team : game.GetTeamList())
|
||||||
for (Player player : team.GetPlayers(true))
|
for (Player player : team.GetPlayers(true))
|
||||||
|
@ -1012,7 +1021,7 @@ public class GameFlagManager implements Listener
|
||||||
{
|
{
|
||||||
//Damage Event
|
//Damage Event
|
||||||
Manager.GetDamage().NewDamageEvent(player, null, null,
|
Manager.GetDamage().NewDamageEvent(player, null, null,
|
||||||
DamageCause.DROWNING, 4, true, false, false,
|
DamageCause.DROWNING, game.WorldWaterDamage, true, false, false,
|
||||||
"Water", "Water Damage");
|
"Water", "Water Damage");
|
||||||
|
|
||||||
player.getWorld().playSound(player.getLocation(),
|
player.getWorld().playSound(player.getLocation(),
|
||||||
|
|
|
@ -30,7 +30,7 @@ public class GameGemManager implements Listener
|
||||||
{
|
{
|
||||||
ArcadeManager Manager;
|
ArcadeManager Manager;
|
||||||
|
|
||||||
boolean DoubleGem = true;
|
boolean DoubleGem = false;
|
||||||
|
|
||||||
public GameGemManager(ArcadeManager manager)
|
public GameGemManager(ArcadeManager manager)
|
||||||
{
|
{
|
||||||
|
|
165
Pocket/LICENSE
165
Pocket/LICENSE
|
@ -1,165 +0,0 @@
|
||||||
GNU LESSER GENERAL PUBLIC LICENSE
|
|
||||||
Version 3, 29 June 2007
|
|
||||||
|
|
||||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
|
||||||
of this license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
|
|
||||||
This version of the GNU Lesser General Public License incorporates
|
|
||||||
the terms and conditions of version 3 of the GNU General Public
|
|
||||||
License, supplemented by the additional permissions listed below.
|
|
||||||
|
|
||||||
0. Additional Definitions.
|
|
||||||
|
|
||||||
As used herein, "this License" refers to version 3 of the GNU Lesser
|
|
||||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
|
||||||
General Public License.
|
|
||||||
|
|
||||||
"The Library" refers to a covered work governed by this License,
|
|
||||||
other than an Application or a Combined Work as defined below.
|
|
||||||
|
|
||||||
An "Application" is any work that makes use of an interface provided
|
|
||||||
by the Library, but which is not otherwise based on the Library.
|
|
||||||
Defining a subclass of a class defined by the Library is deemed a mode
|
|
||||||
of using an interface provided by the Library.
|
|
||||||
|
|
||||||
A "Combined Work" is a work produced by combining or linking an
|
|
||||||
Application with the Library. The particular version of the Library
|
|
||||||
with which the Combined Work was made is also called the "Linked
|
|
||||||
Version".
|
|
||||||
|
|
||||||
The "Minimal Corresponding Source" for a Combined Work means the
|
|
||||||
Corresponding Source for the Combined Work, excluding any source code
|
|
||||||
for portions of the Combined Work that, considered in isolation, are
|
|
||||||
based on the Application, and not on the Linked Version.
|
|
||||||
|
|
||||||
The "Corresponding Application Code" for a Combined Work means the
|
|
||||||
object code and/or source code for the Application, including any data
|
|
||||||
and utility programs needed for reproducing the Combined Work from the
|
|
||||||
Application, but excluding the System Libraries of the Combined Work.
|
|
||||||
|
|
||||||
1. Exception to Section 3 of the GNU GPL.
|
|
||||||
|
|
||||||
You may convey a covered work under sections 3 and 4 of this License
|
|
||||||
without being bound by section 3 of the GNU GPL.
|
|
||||||
|
|
||||||
2. Conveying Modified Versions.
|
|
||||||
|
|
||||||
If you modify a copy of the Library, and, in your modifications, a
|
|
||||||
facility refers to a function or data to be supplied by an Application
|
|
||||||
that uses the facility (other than as an argument passed when the
|
|
||||||
facility is invoked), then you may convey a copy of the modified
|
|
||||||
version:
|
|
||||||
|
|
||||||
a) under this License, provided that you make a good faith effort to
|
|
||||||
ensure that, in the event an Application does not supply the
|
|
||||||
function or data, the facility still operates, and performs
|
|
||||||
whatever part of its purpose remains meaningful, or
|
|
||||||
|
|
||||||
b) under the GNU GPL, with none of the additional permissions of
|
|
||||||
this License applicable to that copy.
|
|
||||||
|
|
||||||
3. Object Code Incorporating Material from Library Header Files.
|
|
||||||
|
|
||||||
The object code form of an Application may incorporate material from
|
|
||||||
a header file that is part of the Library. You may convey such object
|
|
||||||
code under terms of your choice, provided that, if the incorporated
|
|
||||||
material is not limited to numerical parameters, data structure
|
|
||||||
layouts and accessors, or small macros, inline functions and templates
|
|
||||||
(ten or fewer lines in length), you do both of the following:
|
|
||||||
|
|
||||||
a) Give prominent notice with each copy of the object code that the
|
|
||||||
Library is used in it and that the Library and its use are
|
|
||||||
covered by this License.
|
|
||||||
|
|
||||||
b) Accompany the object code with a copy of the GNU GPL and this license
|
|
||||||
document.
|
|
||||||
|
|
||||||
4. Combined Works.
|
|
||||||
|
|
||||||
You may convey a Combined Work under terms of your choice that,
|
|
||||||
taken together, effectively do not restrict modification of the
|
|
||||||
portions of the Library contained in the Combined Work and reverse
|
|
||||||
engineering for debugging such modifications, if you also do each of
|
|
||||||
the following:
|
|
||||||
|
|
||||||
a) Give prominent notice with each copy of the Combined Work that
|
|
||||||
the Library is used in it and that the Library and its use are
|
|
||||||
covered by this License.
|
|
||||||
|
|
||||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
|
||||||
document.
|
|
||||||
|
|
||||||
c) For a Combined Work that displays copyright notices during
|
|
||||||
execution, include the copyright notice for the Library among
|
|
||||||
these notices, as well as a reference directing the user to the
|
|
||||||
copies of the GNU GPL and this license document.
|
|
||||||
|
|
||||||
d) Do one of the following:
|
|
||||||
|
|
||||||
0) Convey the Minimal Corresponding Source under the terms of this
|
|
||||||
License, and the Corresponding Application Code in a form
|
|
||||||
suitable for, and under terms that permit, the user to
|
|
||||||
recombine or relink the Application with a modified version of
|
|
||||||
the Linked Version to produce a modified Combined Work, in the
|
|
||||||
manner specified by section 6 of the GNU GPL for conveying
|
|
||||||
Corresponding Source.
|
|
||||||
|
|
||||||
1) Use a suitable shared library mechanism for linking with the
|
|
||||||
Library. A suitable mechanism is one that (a) uses at run time
|
|
||||||
a copy of the Library already present on the user's computer
|
|
||||||
system, and (b) will operate properly with a modified version
|
|
||||||
of the Library that is interface-compatible with the Linked
|
|
||||||
Version.
|
|
||||||
|
|
||||||
e) Provide Installation Information, but only if you would otherwise
|
|
||||||
be required to provide such information under section 6 of the
|
|
||||||
GNU GPL, and only to the extent that such information is
|
|
||||||
necessary to install and execute a modified version of the
|
|
||||||
Combined Work produced by recombining or relinking the
|
|
||||||
Application with a modified version of the Linked Version. (If
|
|
||||||
you use option 4d0, the Installation Information must accompany
|
|
||||||
the Minimal Corresponding Source and Corresponding Application
|
|
||||||
Code. If you use option 4d1, you must provide the Installation
|
|
||||||
Information in the manner specified by section 6 of the GNU GPL
|
|
||||||
for conveying Corresponding Source.)
|
|
||||||
|
|
||||||
5. Combined Libraries.
|
|
||||||
|
|
||||||
You may place library facilities that are a work based on the
|
|
||||||
Library side by side in a single library together with other library
|
|
||||||
facilities that are not Applications and are not covered by this
|
|
||||||
License, and convey such a combined library under terms of your
|
|
||||||
choice, if you do both of the following:
|
|
||||||
|
|
||||||
a) Accompany the combined library with a copy of the same work based
|
|
||||||
on the Library, uncombined with any other library facilities,
|
|
||||||
conveyed under the terms of this License.
|
|
||||||
|
|
||||||
b) Give prominent notice with the combined library that part of it
|
|
||||||
is a work based on the Library, and explaining where to find the
|
|
||||||
accompanying uncombined form of the same work.
|
|
||||||
|
|
||||||
6. Revised Versions of the GNU Lesser General Public License.
|
|
||||||
|
|
||||||
The Free Software Foundation may publish revised and/or new versions
|
|
||||||
of the GNU Lesser General Public License from time to time. Such new
|
|
||||||
versions will be similar in spirit to the present version, but may
|
|
||||||
differ in detail to address new problems or concerns.
|
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the
|
|
||||||
Library as you received it specifies that a certain numbered version
|
|
||||||
of the GNU Lesser General Public License "or any later version"
|
|
||||||
applies to it, you have the option of following the terms and
|
|
||||||
conditions either of that published version or of any later version
|
|
||||||
published by the Free Software Foundation. If the Library as you
|
|
||||||
received it does not specify a version number of the GNU Lesser
|
|
||||||
General Public License, you may choose any version of the GNU Lesser
|
|
||||||
General Public License ever published by the Free Software Foundation.
|
|
||||||
|
|
||||||
If the Library as you received it specifies that a proxy can decide
|
|
||||||
whether future versions of the GNU Lesser General Public License shall
|
|
||||||
apply, that proxy's public statement of acceptance of any version is
|
|
||||||
permanent authorization for you to choose that version for the
|
|
||||||
Library.
|
|
Binary file not shown.
|
@ -1,53 +0,0 @@
|
||||||
# ![PocketMine-MP](http://cdn.pocketmine.net/img/PocketMine-MP-h.png)
|
|
||||||
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU Lesser General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
|
|
||||||
__PocketMine-MP is a free, open-source software that creates Minecraft: Pocket Edition servers and allows extending its functionalities__
|
|
||||||
|
|
||||||
### [Homepage](http://www.pocketmine.net/)
|
|
||||||
|
|
||||||
### [Forums](http://forums.pocketmine.net/)
|
|
||||||
|
|
||||||
### [Plugin Repository](http://plugins.pocketmine.net/)
|
|
||||||
|
|
||||||
<!--## [FAQ: Frequently Asked Questions](https://github.com/PocketMine/PocketMine-MP/wiki/Frequently-Asked-Questions)-->
|
|
||||||
|
|
||||||
### [Official Jenkins server](http://jenkins.pocketmine.net/)
|
|
||||||
|
|
||||||
### API Documentation
|
|
||||||
* [Official Doxygen-generated documentation](http://docs.pocketmine.net/)
|
|
||||||
* [Latest Doxygen generated from development](http://jenkins.pocketmine.net/job/PocketMine-MP-doc/doxygen/)
|
|
||||||
|
|
||||||
### [Twitter @PocketMine](https://twitter.com/PocketMine)
|
|
||||||
|
|
||||||
### IRC Chat #pocketmine (or #mcpedevs) @ irc.freenode.net
|
|
||||||
[#pocketmine + #mcpedevs channel WebIRC](http://webchat.freenode.net/?channels=pocketmine,mcpedevs)
|
|
||||||
|
|
||||||
### Want to contribute?
|
|
||||||
* Check the [Contributing Guidelines](CONTRIBUTING.md)
|
|
||||||
|
|
||||||
|
|
||||||
## Third-party Libraries/Protocols Used
|
|
||||||
* __[PHP Sockets](http://php.net/manual/en/book.sockets.php)__
|
|
||||||
* __[PHP SQLite3](http://php.net/manual/en/book.sqlite3.php)__
|
|
||||||
* __[PHP BCMath](http://php.net/manual/en/book.bc.php)__
|
|
||||||
* __[PHP pthreads](http://pthreads.org/)__ by _[krakjoe](https://github.com/krakjoe)_: Threading for PHP - Share Nothing, Do Everything.
|
|
||||||
* __[PHP YAML](https://code.google.com/p/php-yaml/)__ by _Bryan Davis_: The Yaml PHP Extension provides a wrapper to the LibYAML library.
|
|
||||||
* __[LibYAML](http://pyyaml.org/wiki/LibYAML)__ by _Kirill Simonov_: A YAML 1.1 parser and emitter written in C.
|
|
||||||
* __[cURL](http://curl.haxx.se/)__: cURL is a command line tool for transferring data with URL syntax
|
|
||||||
* __[Zlib](http://www.zlib.net/)__: A Massively Spiffy Yet Delicately Unobtrusive Compression Library
|
|
||||||
* __[Source RCON Protocol](https://developer.valvesoftware.com/wiki/Source_RCON_Protocol)__
|
|
||||||
* __[UT3 Query Protocol](http://wiki.unrealadmin.org/UT3_query_protocol)__
|
|
|
@ -1,6 +0,0 @@
|
||||||
# Updated 06/29/15 12:14 by PocketMine-MP 1.5dev-1254
|
|
||||||
# victim name | ban date | banned by | banned until | reason
|
|
||||||
|
|
||||||
fanta|2015-06-29 12:12:30 +1000|CONSOLE|Forever|Banned by an operator.
|
|
||||||
xflare_|2015-06-29 12:14:49 +1000|CONSOLE|Forever|Banned by an operator.
|
|
||||||
fantasticps3|2015-06-29 12:14:53 +1000|CONSOLE|Forever|Banned by an operator.
|
|
|
@ -1 +0,0 @@
|
||||||
chiss
|
|
|
@ -1 +0,0 @@
|
||||||
Test
|
|
|
@ -1,18 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module type="WEB_MODULE" version="4">
|
|
||||||
<component name="NewModuleRootManager">
|
|
||||||
<content url="file://$MODULE_DIR$" />
|
|
||||||
<orderEntry type="inheritedJdk" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
<orderEntry type="module-library">
|
|
||||||
<library name="PHP">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="file://D:/Mineplex/PocketMine-MP-master" />
|
|
||||||
</CLASSES>
|
|
||||||
<SOURCES>
|
|
||||||
<root url="file://D:/Mineplex/PocketMine-MP-master" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</orderEntry>
|
|
||||||
</component>
|
|
||||||
</module>
|
|
|
@ -1,4 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
|
|
||||||
</project>
|
|
|
@ -1,8 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectModuleManager">
|
|
||||||
<modules>
|
|
||||||
<module fileurl="file://$PROJECT_DIR$/.idea/Test.iml" filepath="$PROJECT_DIR$/.idea/Test.iml" />
|
|
||||||
</modules>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -1,5 +0,0 @@
|
||||||
<component name="DependencyValidationManager">
|
|
||||||
<state>
|
|
||||||
<option name="SKIP_IMPORT_STATEMENTS" value="false" />
|
|
||||||
</state>
|
|
||||||
</component>
|
|
|
@ -1,6 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="VcsDirectoryMappings">
|
|
||||||
<mapping directory="" vcs="" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -1,655 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ChangeListManager">
|
|
||||||
<list default="true" id="55bf2e6d-8fc4-4bc6-a94f-e308c0957d36" name="Default" comment="" />
|
|
||||||
<ignored path="Test.iws" />
|
|
||||||
<ignored path=".idea/workspace.xml" />
|
|
||||||
<ignored path=".idea/dataSources.local.xml" />
|
|
||||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
|
||||||
<option name="TRACKING_ENABLED" value="true" />
|
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
||||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
|
||||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
|
||||||
</component>
|
|
||||||
<component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
|
|
||||||
<component name="CreatePatchCommitExecutor">
|
|
||||||
<option name="PATCH_PATH" value="" />
|
|
||||||
</component>
|
|
||||||
<component name="DaemonCodeAnalyzer">
|
|
||||||
<disable_hints />
|
|
||||||
</component>
|
|
||||||
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
|
|
||||||
<component name="FavoritesManager">
|
|
||||||
<favorites_list name="Test" />
|
|
||||||
</component>
|
|
||||||
<component name="FileEditorManager">
|
|
||||||
<leaf>
|
|
||||||
<file leaf-file-name="Main.php" pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/Main.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="-17.0" vertical-offset="425" max-vertical-offset="1360">
|
|
||||||
<caret line="51" column="0" selection-start-line="51" selection-start-column="0" selection-end-line="51" selection-end-column="0" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#35#70#0#PHP" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="UtilString.php" pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/util/UtilString.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="-1.3076923" vertical-offset="0" max-vertical-offset="357">
|
|
||||||
<caret line="2" column="18" selection-start-line="2" selection-start-column="10" selection-end-line="2" selection-end-column="18" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="plugin.yml" pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/plugin.yml">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="51" max-vertical-offset="153">
|
|
||||||
<caret line="3" column="10" selection-start-line="3" selection-start-column="10" selection-end-line="3" selection-end-column="10" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="GameManager.php" pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/games/GameManager.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="204">
|
|
||||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="Game.php" pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/games/Game.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="102" max-vertical-offset="204">
|
|
||||||
<caret line="6" column="3" selection-start-line="6" selection-start-column="3" selection-end-line="6" selection-end-column="3" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="TickTask.php" pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/tasks/TickTask.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="102" max-vertical-offset="476">
|
|
||||||
<caret line="6" column="23" selection-start-line="6" selection-start-column="23" selection-end-line="6" selection-end-column="23" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="StrangePacket.php" pinned="false" current-in-tab="true">
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/packets/StrangePacket.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.5862069" vertical-offset="0" max-vertical-offset="870">
|
|
||||||
<caret line="30" column="9" selection-start-line="30" selection-start-column="9" selection-end-line="30" selection-end-column="9" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="Task.php" pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/../../../../PocketMine-MP-master/src/pocketmine/scheduler/Task.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="102" max-vertical-offset="1037">
|
|
||||||
<caret line="23" column="15" selection-start-line="23" selection-start-column="15" selection-end-line="23" selection-end-column="15" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="PluginTask.php" pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/../../../../PocketMine-MP-master/src/pocketmine/scheduler/PluginTask.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="357" max-vertical-offset="629">
|
|
||||||
<caret line="38" column="5" selection-start-line="36" selection-start-column="4" selection-end-line="38" selection-end-column="5" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="TickEvent.php" pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/events/TickEvent.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="102" max-vertical-offset="459">
|
|
||||||
<caret line="6" column="26" selection-start-line="6" selection-start-column="26" selection-end-line="6" selection-end-column="26" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
</leaf>
|
|
||||||
</component>
|
|
||||||
<component name="IdeDocumentHistory">
|
|
||||||
<option name="CHANGED_PATHS">
|
|
||||||
<list>
|
|
||||||
<option value="$PROJECT_DIR$/Source Files/src/chiss/test/Test.php" />
|
|
||||||
<option value="$PROJECT_DIR$/src/chiss/test/util/UtilString.php" />
|
|
||||||
<option value="$PROJECT_DIR$/src/chiss/test/packets/StrangePacket.php" />
|
|
||||||
<option value="$PROJECT_DIR$/src/chiss/test/events/TickEvent.php" />
|
|
||||||
<option value="$PROJECT_DIR$/src/chiss/test/tasks/TickTask.php" />
|
|
||||||
<option value="$PROJECT_DIR$/src/chiss/test/Test.php" />
|
|
||||||
<option value="$PROJECT_DIR$/plugin.yml" />
|
|
||||||
<option value="$PROJECT_DIR$/src/chiss/plugin/util/UtilString.php" />
|
|
||||||
<option value="$PROJECT_DIR$/src/chiss/plugin/packets/StrangePacket.php" />
|
|
||||||
<option value="$PROJECT_DIR$/src/chiss/plugin/events/TickEvent.php" />
|
|
||||||
<option value="$PROJECT_DIR$/src/chiss/plugin/tasks/TickTask.php" />
|
|
||||||
<option value="$PROJECT_DIR$/src/chiss/plugin/Main.php" />
|
|
||||||
<option value="$PROJECT_DIR$/src/mineplex/plugin/util/UtilString.php" />
|
|
||||||
<option value="$PROJECT_DIR$/src/mineplex/plugin/tasks/TickTask.php" />
|
|
||||||
<option value="$PROJECT_DIR$/src/mineplex/plugin/packets/StrangePacket.php" />
|
|
||||||
<option value="$PROJECT_DIR$/src/mineplex/plugin/events/TickEvent.php" />
|
|
||||||
<option value="$PROJECT_DIR$/src/mineplex/plugin/Main.php" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="JsGulpfileManager">
|
|
||||||
<detection-done>true</detection-done>
|
|
||||||
</component>
|
|
||||||
<component name="PhpWorkspaceProjectConfiguration" backward_compatibility_performed="true">
|
|
||||||
<include_path>
|
|
||||||
<path value="D:\Mineplex\PocketMine-MP-master" />
|
|
||||||
</include_path>
|
|
||||||
</component>
|
|
||||||
<component name="ProjectFrameBounds">
|
|
||||||
<option name="x" value="-8" />
|
|
||||||
<option name="y" value="-8" />
|
|
||||||
<option name="width" value="1936" />
|
|
||||||
<option name="height" value="1056" />
|
|
||||||
</component>
|
|
||||||
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
|
|
||||||
<OptionsSetting value="true" id="Add" />
|
|
||||||
<OptionsSetting value="true" id="Remove" />
|
|
||||||
<OptionsSetting value="true" id="Checkout" />
|
|
||||||
<OptionsSetting value="true" id="Update" />
|
|
||||||
<OptionsSetting value="true" id="Status" />
|
|
||||||
<OptionsSetting value="true" id="Edit" />
|
|
||||||
<ConfirmationsSetting value="0" id="Add" />
|
|
||||||
<ConfirmationsSetting value="0" id="Remove" />
|
|
||||||
</component>
|
|
||||||
<component name="ProjectView">
|
|
||||||
<navigator currentView="ProjectPane" proportions="" version="1">
|
|
||||||
<flattenPackages />
|
|
||||||
<showMembers />
|
|
||||||
<showModules />
|
|
||||||
<showLibraryContents />
|
|
||||||
<hideEmptyPackages />
|
|
||||||
<abbreviatePackageNames />
|
|
||||||
<autoscrollToSource />
|
|
||||||
<autoscrollFromSource />
|
|
||||||
<sortByType />
|
|
||||||
</navigator>
|
|
||||||
<panes>
|
|
||||||
<pane id="ProjectPane">
|
|
||||||
<subPane>
|
|
||||||
<PATH>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="Test" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
</PATH>
|
|
||||||
<PATH>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="Test" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="Mineplex" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
</PATH>
|
|
||||||
<PATH>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="Test" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="Mineplex" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="src" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="mineplex" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="plugin" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
</PATH>
|
|
||||||
<PATH>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="Test" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="Mineplex" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="src" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="mineplex" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="plugin" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="util" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
</PATH>
|
|
||||||
<PATH>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="Test" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="Mineplex" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="src" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="mineplex" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="plugin" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="tasks" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
</PATH>
|
|
||||||
<PATH>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="Test" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="Mineplex" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="src" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="mineplex" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="plugin" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="packets" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
</PATH>
|
|
||||||
<PATH>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="Test" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="Mineplex" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="src" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="mineplex" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="plugin" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="games" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
</PATH>
|
|
||||||
<PATH>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="Test" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="Mineplex" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="src" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="mineplex" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="plugin" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="events" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
</PATH>
|
|
||||||
</subPane>
|
|
||||||
</pane>
|
|
||||||
<pane id="Scope" />
|
|
||||||
</panes>
|
|
||||||
</component>
|
|
||||||
<component name="PropertiesComponent">
|
|
||||||
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
|
||||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
|
||||||
</component>
|
|
||||||
<component name="RecentsManager">
|
|
||||||
<key name="MoveFile.RECENT_KEYS">
|
|
||||||
<recent name="D:\Games\PocketMine-MP\plugins\Test" />
|
|
||||||
</key>
|
|
||||||
</component>
|
|
||||||
<component name="RunManager">
|
|
||||||
<configuration default="true" type="PHPUnitRunConfigurationType" factoryName="PHPUnit">
|
|
||||||
<TestRunner />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="PhpLocalRunConfigurationType" factoryName="PHP Console">
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="PhpBehatConfigurationType" factoryName="Behat">
|
|
||||||
<BehatRunner />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
|
|
||||||
<node-options />
|
|
||||||
<gulpfile />
|
|
||||||
<tasks />
|
|
||||||
<arguments />
|
|
||||||
<pass-parent-envs>true</pass-parent-envs>
|
|
||||||
<envs />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="PhpUnitRemoteRunConfigurationType" factoryName="PHPUnit on Server">
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<list size="0" />
|
|
||||||
</component>
|
|
||||||
<component name="ShelveChangesManager" show_recycled="false" />
|
|
||||||
<component name="TaskManager">
|
|
||||||
<task active="true" id="Default" summary="Default task">
|
|
||||||
<changelist id="55bf2e6d-8fc4-4bc6-a94f-e308c0957d36" name="Default" comment="" />
|
|
||||||
<created>1435563636561</created>
|
|
||||||
<option name="number" value="Default" />
|
|
||||||
<updated>1435563636561</updated>
|
|
||||||
</task>
|
|
||||||
<servers />
|
|
||||||
</component>
|
|
||||||
<component name="ToolWindowManager">
|
|
||||||
<frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
|
|
||||||
<editor active="true" />
|
|
||||||
<layout>
|
|
||||||
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.15991472" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
|
||||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
|
|
||||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
|
|
||||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32900432" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
|
||||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
|
||||||
</layout>
|
|
||||||
</component>
|
|
||||||
<component name="Vcs.Log.UiProperties">
|
|
||||||
<option name="RECENTLY_FILTERED_USER_GROUPS">
|
|
||||||
<collection />
|
|
||||||
</option>
|
|
||||||
<option name="RECENTLY_FILTERED_BRANCH_GROUPS">
|
|
||||||
<collection />
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="VcsContentAnnotationSettings">
|
|
||||||
<option name="myLimit" value="2678400000" />
|
|
||||||
</component>
|
|
||||||
<component name="VcsManagerConfiguration">
|
|
||||||
<option name="myTodoPanelSettings">
|
|
||||||
<TodoPanelSettings />
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="XDebuggerManager">
|
|
||||||
<breakpoint-manager />
|
|
||||||
<watches-manager />
|
|
||||||
</component>
|
|
||||||
<component name="editorHistoryManager">
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/Main.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1360">
|
|
||||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#35#70#0#PHP" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/util/UtilString.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="34" max-vertical-offset="357">
|
|
||||||
<caret line="2" column="18" selection-start-line="2" selection-start-column="10" selection-end-line="2" selection-end-column="18" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/plugin.yml">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="51" max-vertical-offset="153">
|
|
||||||
<caret line="3" column="10" selection-start-line="3" selection-start-column="10" selection-end-line="3" selection-end-column="10" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/games/GameManager.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="204">
|
|
||||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/games/Game.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="102" max-vertical-offset="204">
|
|
||||||
<caret line="6" column="3" selection-start-line="6" selection-start-column="3" selection-end-line="6" selection-end-column="3" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/tasks/TickTask.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="102" max-vertical-offset="476">
|
|
||||||
<caret line="6" column="23" selection-start-line="6" selection-start-column="23" selection-end-line="6" selection-end-column="23" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/packets/StrangePacket.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="34" max-vertical-offset="850">
|
|
||||||
<caret line="2" column="18" selection-start-line="2" selection-start-column="18" selection-end-line="2" selection-end-column="18" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/../../../../PocketMine-MP-master/src/pocketmine/scheduler/Task.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="102" max-vertical-offset="1037">
|
|
||||||
<caret line="23" column="15" selection-start-line="23" selection-start-column="15" selection-end-line="23" selection-end-column="15" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/../../../../PocketMine-MP-master/src/pocketmine/scheduler/PluginTask.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="357" max-vertical-offset="629">
|
|
||||||
<caret line="38" column="5" selection-start-line="36" selection-start-column="4" selection-end-line="38" selection-end-column="5" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/events/TickEvent.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="102" max-vertical-offset="459">
|
|
||||||
<caret line="6" column="26" selection-start-line="6" selection-start-column="26" selection-end-line="6" selection-end-column="26" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/../../../../PocketMine-MP-master/src/pocketmine/plugin/PluginBase.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.39977604" vertical-offset="476" max-vertical-offset="4811">
|
|
||||||
<caret line="70" column="0" selection-start-line="70" selection-start-column="0" selection-end-line="70" selection-end-column="0" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/../../../../PocketMine-MP-master/tests/TravisTest.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.28555432" vertical-offset="0" max-vertical-offset="893">
|
|
||||||
<caret line="32" column="0" selection-start-line="32" selection-start-column="0" selection-end-line="32" selection-end-column="0" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/../../../../PocketMine-MP-master/src/pocketmine/network/protocol/SetTimePacket.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.3807391" vertical-offset="0" max-vertical-offset="893">
|
|
||||||
<caret line="37" column="0" selection-start-line="37" selection-start-column="0" selection-end-line="37" selection-end-column="0" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/../../../../PocketMine-MP-master/src/pocketmine/event/player/PlayerMoveEvent.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="-7.8461537" vertical-offset="0" max-vertical-offset="697">
|
|
||||||
<caret line="31" column="16" selection-start-line="31" selection-start-column="16" selection-end-line="31" selection-end-column="16" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/../../../../PocketMine-MP-master/src/pocketmine/scheduler/PluginTask.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="357" max-vertical-offset="629">
|
|
||||||
<caret line="38" column="5" selection-start-line="36" selection-start-column="4" selection-end-line="38" selection-end-column="5" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/../../../../PocketMine-MP-master/src/pocketmine/scheduler/Task.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="102" max-vertical-offset="1037">
|
|
||||||
<caret line="23" column="15" selection-start-line="23" selection-start-column="15" selection-end-line="23" selection-end-column="15" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/plugin.yml">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="153">
|
|
||||||
<caret line="3" column="10" selection-start-line="3" selection-start-column="10" selection-end-line="3" selection-end-column="10" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/games/Game.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="102" max-vertical-offset="204">
|
|
||||||
<caret line="6" column="3" selection-start-line="6" selection-start-column="3" selection-end-line="6" selection-end-column="3" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/tasks/TickTask.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="102" max-vertical-offset="476">
|
|
||||||
<caret line="6" column="23" selection-start-line="6" selection-start-column="23" selection-end-line="6" selection-end-column="23" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/games/GameManager.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="896">
|
|
||||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/events/TickEvent.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="102" max-vertical-offset="459">
|
|
||||||
<caret line="6" column="26" selection-start-line="6" selection-start-column="26" selection-end-line="6" selection-end-column="26" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/Main.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="-17.0" vertical-offset="425" max-vertical-offset="1360">
|
|
||||||
<caret line="51" column="0" selection-start-line="51" selection-start-column="0" selection-end-line="51" selection-end-column="0" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#35#70#0#PHP" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/util/UtilString.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="-1.3076923" vertical-offset="0" max-vertical-offset="357">
|
|
||||||
<caret line="2" column="18" selection-start-line="2" selection-start-column="10" selection-end-line="2" selection-end-column="18" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/mineplex/plugin/packets/StrangePacket.php">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.5862069" vertical-offset="0" max-vertical-offset="870">
|
|
||||||
<caret line="30" column="9" selection-start-line="30" selection-start-column="9" selection-end-line="30" selection-end-column="9" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -2,8 +2,12 @@
|
||||||
|
|
||||||
namespace mineplex\plugin;
|
namespace mineplex\plugin;
|
||||||
|
|
||||||
|
use mineplex\plugin\core\updater\UpdateType;
|
||||||
use mineplex\plugin\tasks\TickTask;
|
use mineplex\plugin\tasks\TickTask;
|
||||||
use mineplex\plugin\events\TickEvent;
|
use mineplex\plugin\events\TickEvent;
|
||||||
|
use mineplex\plugin\core\updater\Updater;
|
||||||
|
use mineplex\plugin\core\updater\UpdateEvent;
|
||||||
|
use mineplex\plugin\core\updater\UpdateType as UpdaterType;
|
||||||
use mineplex\plugin\util\UtilString;
|
use mineplex\plugin\util\UtilString;
|
||||||
use mineplex\plugin\packets\StrangePacket;
|
use mineplex\plugin\packets\StrangePacket;
|
||||||
|
|
||||||
|
@ -19,6 +23,7 @@ class Main extends PluginBase implements Listener
|
||||||
$this->getServer()->getScheduler()->scheduleRepeatingTask(new TickTask($this), 1);
|
$this->getServer()->getScheduler()->scheduleRepeatingTask(new TickTask($this), 1);
|
||||||
|
|
||||||
$this->getServer()->getPluginManager()->registerEvents($this, $this);
|
$this->getServer()->getPluginManager()->registerEvents($this, $this);
|
||||||
|
new Updater($this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onDisable()
|
public function onDisable()
|
||||||
|
@ -68,7 +73,7 @@ class Main extends PluginBase implements Listener
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onTick(TickEvent $event)
|
public function onTick(UpdateEvent $event)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by PhpStorm.
|
||||||
|
* User: jwilliams
|
||||||
|
* Date: 6/29/2015
|
||||||
|
* Time: 7:12 PM
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace mineplex\plugin\core\updater;
|
||||||
|
|
||||||
|
use pocketmine\event\Event;
|
||||||
|
|
||||||
|
class UpdateEvent extends Event
|
||||||
|
{
|
||||||
|
public static $handlerList = null;
|
||||||
|
|
||||||
|
public $time;
|
||||||
|
|
||||||
|
public function __construct($time)
|
||||||
|
{
|
||||||
|
$this->time = $time;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTime()
|
||||||
|
{
|
||||||
|
return $this->time;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by PhpStorm.
|
||||||
|
* User: jwilliams
|
||||||
|
* Date: 6/29/2015
|
||||||
|
* Time: 6:52 PM
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace mineplex\plugin\core\updater;
|
||||||
|
|
||||||
|
|
||||||
|
class UpdateType
|
||||||
|
{
|
||||||
|
const MIN_64 = 3840000;
|
||||||
|
const MIN_32 = 1920000;
|
||||||
|
const MIN_16 = 960000;
|
||||||
|
const MIN_08 = 480000;
|
||||||
|
const MIN_04 = 240000;
|
||||||
|
const MIN_02 = 120000;
|
||||||
|
const MIN_01 = 60000;
|
||||||
|
const SLOWEST = 32000;
|
||||||
|
const SLOWER = 16000;
|
||||||
|
const SLOW = 4000;
|
||||||
|
const TWOSEC = 2000;
|
||||||
|
const SEC = 1000;
|
||||||
|
const FAST = 500;
|
||||||
|
const FASTER = 250;
|
||||||
|
const FASTEST = 125;
|
||||||
|
const TICK = 49;
|
||||||
|
|
||||||
|
public $time;
|
||||||
|
|
||||||
|
public function __construct($time=0)
|
||||||
|
{
|
||||||
|
$this->time = $time;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by PhpStorm.
|
||||||
|
* User: jwilliams
|
||||||
|
* Date: 6/29/2015
|
||||||
|
* Time: 6:45 PM
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace mineplex\plugin\core\updater;
|
||||||
|
|
||||||
|
use pocketmine\plugin\PluginBase;
|
||||||
|
use pocketmine\scheduler\PluginTask;
|
||||||
|
|
||||||
|
class Updater extends PluginTask
|
||||||
|
{
|
||||||
|
private $plugin;
|
||||||
|
private $last;
|
||||||
|
private $updateTypes;
|
||||||
|
|
||||||
|
public function __construct(PluginBase $host)
|
||||||
|
{
|
||||||
|
$this->plugin = $host;
|
||||||
|
$this->owner = $host;
|
||||||
|
$this->plugin->getServer()->getScheduler()->scheduleRepeatingTask($this, 1);
|
||||||
|
|
||||||
|
$this->updateTypes = array(
|
||||||
|
new UpdateType(UpdateType::TICK)
|
||||||
|
, new UpdateType(UpdateType::FASTEST)
|
||||||
|
, new UpdateType(UpdateType::FASTER)
|
||||||
|
, new UpdateType(UpdateType::FAST)
|
||||||
|
, new UpdateType(UpdateType::SEC)
|
||||||
|
, new UpdateType(UpdateType::TWOSEC)
|
||||||
|
, new UpdateType(UpdateType::SLOW)
|
||||||
|
, new UpdateType(UpdateType::SLOWER)
|
||||||
|
, new UpdateType(UpdateType::SLOWEST)
|
||||||
|
, new UpdateType(UpdateType::MIN_01)
|
||||||
|
, new UpdateType(UpdateType::MIN_02)
|
||||||
|
, new UpdateType(UpdateType::MIN_04)
|
||||||
|
, new UpdateType(UpdateType::MIN_08)
|
||||||
|
, new UpdateType(UpdateType::MIN_16)
|
||||||
|
, new UpdateType(UpdateType::MIN_32)
|
||||||
|
, new UpdateType(UpdateType::MIN_64));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onRun($currentTick)
|
||||||
|
{
|
||||||
|
$timeSpent = round(microtime(true) * 1000) - $this->last;
|
||||||
|
$this->last = round(microtime(true) * 1000);
|
||||||
|
|
||||||
|
foreach ($this->updateTypes as &$updateType)
|
||||||
|
{
|
||||||
|
if ($timeSpent >= $updateType->time)
|
||||||
|
{
|
||||||
|
$this->plugin->getServer()->getPluginManager()->callEvent(new UpdateEvent($updateType->time));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Created by PhpStorm.
|
|
||||||
* User: C
|
|
||||||
* Date: 29/06/2015
|
|
||||||
* Time: 7:14 PM
|
|
||||||
*/
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Created by PhpStorm.
|
|
||||||
* User: C
|
|
||||||
* Date: 29/06/2015
|
|
||||||
* Time: 7:14 PM
|
|
||||||
*/
|
|
|
@ -1,103 +0,0 @@
|
||||||
# Main configuration file for PocketMine-MP
|
|
||||||
# These settings are the ones that cannot be included in server.properties
|
|
||||||
# Some of these settings are safe, others can break your server if modified incorrectly
|
|
||||||
|
|
||||||
settings:
|
|
||||||
shutdown-message: "Server closed"
|
|
||||||
#Allow listing plugins via Query
|
|
||||||
query-plugins: true
|
|
||||||
#Show a console message when a plugin uses deprecated API methods
|
|
||||||
deprecated-verbose: true
|
|
||||||
#Enable plugin and core profiling by default
|
|
||||||
enable-profiling: false
|
|
||||||
advanced-cache: false
|
|
||||||
upnp-forwarding: false
|
|
||||||
#Sends anonymous statistics to create usage reports
|
|
||||||
send-usage: true
|
|
||||||
#Number of AsyncTask workers
|
|
||||||
#WARNING: This will increase global memory usage, but it won't be listed in the total.
|
|
||||||
async-workers: 15
|
|
||||||
|
|
||||||
debug:
|
|
||||||
#If > 1, it will show debug messages in the console
|
|
||||||
level: 1
|
|
||||||
#Enables /status
|
|
||||||
commands: false
|
|
||||||
|
|
||||||
level-settings:
|
|
||||||
#The default format that levels will use when created
|
|
||||||
default-format: mcregion
|
|
||||||
#If true, converts from a format that is not the default to the default format on load
|
|
||||||
#NOTE: This is currently not implemented
|
|
||||||
convert-format: false
|
|
||||||
|
|
||||||
chunk-sending:
|
|
||||||
#Amount of chunks sent to players per tick
|
|
||||||
per-tick: 1
|
|
||||||
#Compression level used when sending chunks. Higher = more CPU, less bandwidth usage
|
|
||||||
compression-level: 6
|
|
||||||
#Amount of chunks sent around each player
|
|
||||||
max-chunks: 56
|
|
||||||
|
|
||||||
chunk-ticking:
|
|
||||||
#Max amount of chunks processed each tick
|
|
||||||
per-tick: 50
|
|
||||||
#Radius of chunks around a player to tick
|
|
||||||
tick-radius: 2
|
|
||||||
#NOTE: This is currently not implemented
|
|
||||||
light-updates: false
|
|
||||||
clear-tick-list: false
|
|
||||||
|
|
||||||
chunk-generation:
|
|
||||||
#Whether to run the generation on a different thread or on the main thread
|
|
||||||
#Generation will be less glitchy on the main thread, but will lag more
|
|
||||||
#Using this with fast generators is recommended
|
|
||||||
use-async: true
|
|
||||||
#Max. amount of chunks to generate per tick, only for use-async: false
|
|
||||||
per-tick: 1
|
|
||||||
|
|
||||||
chunk-gc:
|
|
||||||
period-in-ticks: 600
|
|
||||||
|
|
||||||
ticks-per:
|
|
||||||
animal-spawns: 100
|
|
||||||
monster-spawns: 100
|
|
||||||
autosave: 6000
|
|
||||||
cache-cleanup: 900
|
|
||||||
|
|
||||||
spawn-limits:
|
|
||||||
monsters: 0
|
|
||||||
animals: 0
|
|
||||||
water-animals: 0
|
|
||||||
ambient: 0
|
|
||||||
|
|
||||||
auto-report:
|
|
||||||
#Send crash reports for processing
|
|
||||||
enabled: true
|
|
||||||
send-code: true
|
|
||||||
send-settings: true
|
|
||||||
send-phpinfo: true
|
|
||||||
host: crash.pocketmine.net
|
|
||||||
|
|
||||||
auto-updater:
|
|
||||||
enabled: true
|
|
||||||
on-update:
|
|
||||||
warn-console: true
|
|
||||||
warn-ops: true
|
|
||||||
#Can be development, beta or stable.
|
|
||||||
preferred-channel: stable
|
|
||||||
#If using a development version, it will suggest changing the channel
|
|
||||||
suggest-channels: true
|
|
||||||
host: www.pocketmine.net
|
|
||||||
|
|
||||||
aliases:
|
|
||||||
#Examples:
|
|
||||||
#showtheversion: version
|
|
||||||
#savestop: [save-all, stop]
|
|
||||||
|
|
||||||
worlds:
|
|
||||||
#These settings will override the generator set in server.properties and allows loading multiple levels
|
|
||||||
#Example:
|
|
||||||
#world:
|
|
||||||
# seed: 404
|
|
||||||
# generator: FLAT:2;7,59x1,3x3,2;1;decoration(treecount=80 grasscount=45)
|
|
15112
Pocket/server.log
15112
Pocket/server.log
File diff suppressed because it is too large
Load Diff
|
@ -1,26 +0,0 @@
|
||||||
#Properties Config file
|
|
||||||
#Mon Jun 29 19:57:13 AEST 2015
|
|
||||||
server-name=Chiss World
|
|
||||||
server-port=19132
|
|
||||||
memory-limit=2048M
|
|
||||||
gamemode=0
|
|
||||||
max-players=100
|
|
||||||
spawn-protection=16
|
|
||||||
white-list=off
|
|
||||||
enable-query=on
|
|
||||||
enable-rcon=off
|
|
||||||
motd=Chiss World Yay
|
|
||||||
announce-player-achievements=off
|
|
||||||
allow-flight=off
|
|
||||||
spawn-animals=off
|
|
||||||
spawn-mobs=off
|
|
||||||
force-gamemode=off
|
|
||||||
hardcore=off
|
|
||||||
pvp=off
|
|
||||||
difficulty=1
|
|
||||||
generator-settings=
|
|
||||||
level-name=world
|
|
||||||
level-seed=
|
|
||||||
level-type=FLAT
|
|
||||||
rcon.password=fTbky+Ma7n
|
|
||||||
auto-save=off
|
|
|
@ -1,32 +0,0 @@
|
||||||
@echo off
|
|
||||||
TITLE PocketMine-MP server software for Minecraft: Pocket Edition
|
|
||||||
cd /d %~dp0
|
|
||||||
|
|
||||||
if exist bin\php\php.exe (
|
|
||||||
set PHPRC=""
|
|
||||||
set PHP_BINARY=bin\php\php.exe
|
|
||||||
) else (
|
|
||||||
set PHP_BINARY=php
|
|
||||||
)
|
|
||||||
|
|
||||||
if exist PocketMine-MP.phar (
|
|
||||||
set POCKETMINE_FILE=PocketMine-MP.phar
|
|
||||||
) else (
|
|
||||||
if exist src\pocketmine\PocketMine.php (
|
|
||||||
set POCKETMINE_FILE=src\pocketmine\PocketMine.php
|
|
||||||
) else (
|
|
||||||
echo "Couldn't find a valid PocketMine-MP installation"
|
|
||||||
pause
|
|
||||||
exit 1
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
REM if exist bin\php\php_wxwidgets.dll (
|
|
||||||
REM %PHP_BINARY% %POCKETMINE_FILE% --enable-gui %*
|
|
||||||
REM ) else (
|
|
||||||
if exist bin\mintty.exe (
|
|
||||||
start "" bin\mintty.exe -o Columns=88 -o Rows=32 -o AllowBlinking=0 -o FontQuality=3 -o Font="DejaVu Sans Mono" -o FontHeight=10 -o CursorType=0 -o CursorBlinks=1 -h error -t "PocketMine-MP" -i bin/pocketmine.ico -w max %PHP_BINARY% %POCKETMINE_FILE% --enable-ansi %*
|
|
||||||
) else (
|
|
||||||
%PHP_BINARY% -c bin\php %POCKETMINE_FILE% %*
|
|
||||||
)
|
|
||||||
REM )
|
|
Loading…
Reference in New Issue