Merge remote-tracking branch 'origin/master' into foo
This commit is contained in:
commit
64ca6ecce0
|
@ -440,6 +440,34 @@
|
|||
</jar>
|
||||
<copy file="../bin/TaskConverter.jar" todir="../../Testing/ChestConverter/"/>
|
||||
</target>
|
||||
<target name ="PetConverter" description="PetConverter">
|
||||
<jar jarfile="../bin/PetConverter.jar">
|
||||
<fileset dir="../Mineplex.Core.Common/bin">
|
||||
<include name="**/*.class"/>
|
||||
</fileset>
|
||||
<fileset dir="../Mineplex.PetConverter/bin">
|
||||
<include name="**/*.class"/>
|
||||
</fileset>
|
||||
|
||||
<zipfileset src="../Libraries/mysql.zip" />
|
||||
|
||||
<manifest>
|
||||
<attribute name="Main-Class"
|
||||
value="mineplex.chestConverter.PetConverter"/>
|
||||
</manifest>
|
||||
|
||||
<zipfileset src="../Libraries/httpclient-4.2.jar" />
|
||||
<zipfileset src="../Libraries/httpcore-4.2.jar" />
|
||||
<zipfileset src="../Libraries/httpclient-cache-4.2.jar" />
|
||||
<zipfileset src="../Libraries/httpmime-4.2.jar" />
|
||||
<zipfileset src="../Libraries/gson-2.2.1.jar" />
|
||||
<zipfileset src="../Libraries/craftbukkit.jar" />
|
||||
<zipfileset src="../Libraries/commons-logging-1.1.1.jar" />
|
||||
<zipfileset src="../Libraries/commons-codec-1.6.jar" />
|
||||
<zipfileset src="../Libraries/commons-pool2-2.2.jar" />
|
||||
</jar>
|
||||
<copy file="../bin/PetConverter.jar" todir="../../Testing/PetConverter/"/>
|
||||
</target>
|
||||
<target name ="Queuer" description="Queuer">
|
||||
<jar jarfile="../bin/Queuer.jar">
|
||||
<fileset dir="../Mineplex.Core.Common/bin">
|
||||
|
|
Binary file not shown.
|
@ -1,5 +1,6 @@
|
|||
package mineplex.bungee.motd;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@ -7,9 +8,13 @@ import java.util.Random;
|
|||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import mineplex.serverdata.Region;
|
||||
import mineplex.serverdata.data.BungeeServer;
|
||||
import mineplex.serverdata.data.DataRepository;
|
||||
import mineplex.serverdata.redis.RedisDataRepository;
|
||||
import mineplex.serverdata.servers.ConnectionData;
|
||||
import mineplex.serverdata.servers.ServerManager;
|
||||
import mineplex.serverdata.servers.ConnectionData.ConnectionType;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import net.md_5.bungee.api.event.ProxyPingEvent;
|
||||
import net.md_5.bungee.api.plugin.Listener;
|
||||
import net.md_5.bungee.api.plugin.Plugin;
|
||||
|
@ -20,7 +25,9 @@ public class MotdManager implements Listener, Runnable
|
|||
private Plugin _plugin;
|
||||
|
||||
private DataRepository<GlobalMotd> _repository;
|
||||
|
||||
private DataRepository<GlobalMotd> _secondRepository;
|
||||
private Region _region;
|
||||
|
||||
private Random _random = new Random();
|
||||
private String _firstLine = " §b§l§m §8§l§m[ §r §9§lMineplex§r §f§lGames§r §8§l§m ]§b§l§m §r";
|
||||
private List<String> _motdLines;
|
||||
|
@ -28,6 +35,7 @@ public class MotdManager implements Listener, Runnable
|
|||
public MotdManager(Plugin plugin)
|
||||
{
|
||||
_plugin = plugin;
|
||||
_region = !new File("eu.dat").exists() ? Region.US : Region.EU;
|
||||
|
||||
_plugin.getProxy().getScheduler().schedule(_plugin, this, 5L, 30L, TimeUnit.SECONDS);
|
||||
_plugin.getProxy().getPluginManager().registerListener(_plugin, this);
|
||||
|
@ -38,12 +46,20 @@ public class MotdManager implements Listener, Runnable
|
|||
|
||||
if (new File("updateMOTD.dat").exists())
|
||||
{
|
||||
List<String> lines = new ArrayList<String>();
|
||||
lines.add(" §f§l◄ §6§lNEW §f§l▬ §c§lSSM/SG/SW Teams§f§l ▬ §c§lMPS Update §f§l►");
|
||||
//lines.add(" §d§lRank Sale §a§l40% Off");
|
||||
//lines.add(" §f§l◄§c§lMAINTENANCE§f§l►");
|
||||
if (_region == Region.US)
|
||||
_secondRepository = new RedisDataRepository<GlobalMotd>(new ConnectionData("10.81.1.156", 6379, ConnectionType.MASTER, "ServerStatus"), new ConnectionData("10.81.1.156", 6377, ConnectionType.SLAVE, "ServerStatus"),
|
||||
Region.ALL, GlobalMotd.class, "globalMotd");
|
||||
else
|
||||
_secondRepository = new RedisDataRepository<GlobalMotd>(new ConnectionData("10.33.53.16", 6379, ConnectionType.MASTER, "ServerStatus"), new ConnectionData("10.33.53.16", 6377, ConnectionType.SLAVE, "ServerStatus"),
|
||||
Region.ALL, GlobalMotd.class, "globalMotd");
|
||||
|
||||
updateMainMotd(" §b§l§m §8§l§m[ §r §9§lMineplex§r §f§lGames§r §8§l§m ]§b§l§m §r", lines);
|
||||
//String motdLine = "§f§l◄ §c§lMaintenance§f§l ►";
|
||||
String motdLine = "§f§l◄ §a§lCarl the Creeper§f§l ►";
|
||||
//String motdLine = " §f§l◄ §a§lCarl the Creeper§f§l ▬ §c§l75% OFF SALE§f§l ►";
|
||||
//String motdLine = " §d§lRank Sale §a§l40% Off");
|
||||
//String motdLine = " §f§l◄§c§lMAINTENANCE§f§l►");
|
||||
|
||||
updateMainMotd(" §b§l§m §8§l§m[ §r §9§lMineplex§r §f§lGames§r §8§l§m ]§b§l§m §r", motdLine);
|
||||
System.out.println("Updated Bungee MOTD");
|
||||
}
|
||||
}
|
||||
|
@ -68,7 +84,7 @@ public class MotdManager implements Listener, Runnable
|
|||
GlobalMotd motd = _repository.getElement("MainMotd");
|
||||
|
||||
if (motd != null)
|
||||
{
|
||||
{
|
||||
_motdLines = motd.getMotd();
|
||||
_firstLine = motd.getHeadline();
|
||||
}
|
||||
|
@ -78,9 +94,30 @@ public class MotdManager implements Listener, Runnable
|
|||
* Update the main {@link GlobalMotd} determining the MOTD for Bungee instances.
|
||||
* @param motdLines - the lines to update the MOTD to.
|
||||
*/
|
||||
public void updateMainMotd(String headline, List<String> motdLines)
|
||||
public void updateMainMotd(String headline, String motdLine)
|
||||
{
|
||||
List<String> motdLines = new ArrayList<String>();
|
||||
String colorStripped = ChatColor.stripColor(motdLine);
|
||||
|
||||
if (colorStripped.trim().length() > 45)
|
||||
motdLine = motdLine.trim().substring(0, 45);
|
||||
else
|
||||
{
|
||||
String trimmed = colorStripped.trim();
|
||||
int count = trimmed.length();
|
||||
int marker = 0;
|
||||
|
||||
while ((45 - count) / 2 * 1.55 > marker)
|
||||
{
|
||||
motdLine = " " + motdLine;
|
||||
marker++;
|
||||
}
|
||||
}
|
||||
|
||||
motdLines.add(motdLine);
|
||||
|
||||
_repository.addElement(new GlobalMotd("MainMotd", headline, motdLines));
|
||||
_secondRepository.addElement(new GlobalMotd("MainMotd", headline, motdLines));
|
||||
}
|
||||
|
||||
public List<String> getMotdLines()
|
||||
|
|
|
@ -85,6 +85,7 @@ public class PlayerStats implements Listener, Runnable
|
|||
}
|
||||
|
||||
playerInfo.setSessionId(_repository.updatePlayerStats(playerInfo.getId(), ipInfo.id));
|
||||
_playerCache.addPlayer(playerInfo);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
@ -130,6 +131,7 @@ public class PlayerStats implements Listener, Runnable
|
|||
timeout++;
|
||||
}
|
||||
|
||||
System.out.println(playerInfo.getName() + ":" + playerInfo.getSessionId());
|
||||
_repository.updatePlayerSession(playerInfo.getSessionId());
|
||||
}
|
||||
});
|
||||
|
|
|
@ -56,7 +56,7 @@ public class PlayerTracker implements Listener
|
|||
{
|
||||
public void run()
|
||||
{
|
||||
_repository.removeElement(event.getPlayer().getName());
|
||||
_repository.removeElement(event.getPlayer().getName().toLowerCase());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,11 +1,20 @@
|
|||
package mineplex.chestConverter;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.logging.FileHandler;
|
||||
import java.util.logging.Formatter;
|
||||
import java.util.logging.LogRecord;
|
||||
|
@ -18,8 +27,23 @@ public class ChestConverter
|
|||
|
||||
private static Logger _logger = Logger.getLogger("Converter");
|
||||
|
||||
private static String _connectionString = "jdbc:mysql://db.mineplex.com:3306/Account?allowMultiQueries=true";
|
||||
private static String _userName = "MilitaryPolice";
|
||||
private static String _password = "CUPr6Wuw2Rus$qap";
|
||||
|
||||
private static Connection _connection;
|
||||
|
||||
public static void main (String args[])
|
||||
{
|
||||
try
|
||||
{
|
||||
Class.forName("com.mysql.jdbc.Driver");
|
||||
}
|
||||
catch (ClassNotFoundException e1)
|
||||
{
|
||||
e1.printStackTrace();
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
FileHandler fileHandler = new FileHandler("converter.log", true);
|
||||
|
@ -38,72 +62,138 @@ public class ChestConverter
|
|||
{
|
||||
e1.printStackTrace();
|
||||
}
|
||||
|
||||
_repository = new ChestConverterRepository();
|
||||
int lastId = 18279475;
|
||||
int count = 50000;
|
||||
int numOfRowsProcessed = lastId;
|
||||
|
||||
HashMap<String, Integer> tasks = _repository.getTaskList();
|
||||
int limit = 50000;
|
||||
HashSet<AccountStat> accountStats = new HashSet<AccountStat>();
|
||||
|
||||
try
|
||||
while (true)
|
||||
{
|
||||
while (true)
|
||||
accountStats.clear();
|
||||
|
||||
try
|
||||
{
|
||||
long time = System.currentTimeMillis();
|
||||
HashMap<String, List<Integer>> playerMap = new HashMap<String, List<Integer>>();
|
||||
Statement statement = null;
|
||||
|
||||
|
||||
List<AccountTask> taskList = _repository.getTasks(lastId, count);
|
||||
|
||||
if (taskList != null && taskList.size() > 0)
|
||||
try
|
||||
{
|
||||
for (AccountTask task : taskList)
|
||||
if (_connection == null || _connection.isClosed())
|
||||
_connection = DriverManager.getConnection(_connectionString, _userName, _password);
|
||||
|
||||
statement = _connection.createStatement();
|
||||
|
||||
statement.execute("SELECT accountId, statId, value FROM Account.accountStats LIMIT " + limit + ";");
|
||||
|
||||
ResultSet resultSet = statement.getResultSet();
|
||||
|
||||
while (resultSet.next())
|
||||
{
|
||||
if (!playerMap.containsKey(task.UUID))
|
||||
playerMap.put(task.UUID, new ArrayList<Integer>());
|
||||
accountStats.add(new AccountStat(resultSet.getInt(1), resultSet.getInt(2), resultSet.getInt(3)));
|
||||
}
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
exception.printStackTrace();
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (statement != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
statement.close();
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (accountStats.size() == 0)
|
||||
{
|
||||
System.out.println("No accounts.");
|
||||
return;
|
||||
}
|
||||
|
||||
PreparedStatement updateStatement = null;
|
||||
PreparedStatement insertStatement = null;
|
||||
Statement deleteStatement = null;
|
||||
|
||||
try
|
||||
{
|
||||
if (_connection == null || _connection.isClosed())
|
||||
_connection = DriverManager.getConnection(_connectionString, _userName, _password);
|
||||
|
||||
_connection.setAutoCommit(true);
|
||||
updateStatement = _connection.prepareStatement("UPDATE accountStat SET value = value + ? WHERE accountId = ? AND statId = ? AND value < ?;");
|
||||
|
||||
for (AccountStat stat : accountStats)
|
||||
{
|
||||
updateStatement.setLong(1, stat.value);
|
||||
updateStatement.setInt(2, stat.accountId);
|
||||
updateStatement.setInt(3, stat.statId);
|
||||
updateStatement.setLong(4, stat.value);
|
||||
|
||||
playerMap.get(task.UUID).add(tasks.get(task.Task));
|
||||
|
||||
if (task.Id > lastId)
|
||||
lastId = task.Id;
|
||||
updateStatement.addBatch();
|
||||
}
|
||||
|
||||
_repository.incrementClients(playerMap);
|
||||
try
|
||||
int[] rowsAffected = updateStatement.executeBatch();
|
||||
_connection.setAutoCommit(false);
|
||||
int i = 0;
|
||||
int count = 0;
|
||||
|
||||
log("Updated rows - " + limit);
|
||||
|
||||
insertStatement = _connection.prepareStatement("INSERT IGNORE accountStat(accountId, statId, value) VALUES (?, ?, ?);");
|
||||
|
||||
for (AccountStat stat : accountStats)
|
||||
{
|
||||
numOfRowsProcessed += count;
|
||||
log("Natural sleep. " + count + " took " + (System.currentTimeMillis() - time) / 1000 + " seconds. Count = " + + numOfRowsProcessed);
|
||||
Thread.sleep(100);
|
||||
}
|
||||
catch (InterruptedException e)
|
||||
if (rowsAffected[i] < 1)
|
||||
{
|
||||
insertStatement.setInt(1, stat.accountId);
|
||||
insertStatement.setInt(2, stat.statId);
|
||||
insertStatement.setLong(3, stat.value);
|
||||
|
||||
insertStatement.addBatch();
|
||||
count++;
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
insertStatement.executeBatch();
|
||||
log("Inserted rows - " + count);
|
||||
|
||||
deleteStatement = _connection.createStatement();
|
||||
deleteStatement.executeUpdate("DELETE FROM accountStats LIMIT " + limit + ";");
|
||||
|
||||
_connection.commit();
|
||||
|
||||
log("Deleted rows - " + limit);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
exception.printStackTrace();
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (statement != null)
|
||||
{
|
||||
e.printStackTrace();
|
||||
try
|
||||
{
|
||||
statement.close();
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (numOfRowsProcessed > 17000000)
|
||||
{
|
||||
System.out.println("Count : " + numOfRowsProcessed);
|
||||
_logger.info("Count : " + numOfRowsProcessed);
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
System.out.println("No greater than 17 mil");
|
||||
_logger.info("No greater than 17 mil");
|
||||
System.out.println("Count : " + numOfRowsProcessed);
|
||||
_logger.info("Count : " + numOfRowsProcessed);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.info(e.getMessage());
|
||||
}
|
||||
finally
|
||||
{
|
||||
System.out.println("Count : " + numOfRowsProcessed);
|
||||
_logger.info("Count : " + numOfRowsProcessed);
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.info(e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
package mineplex.core.common.structs;
|
||||
|
||||
import org.bukkit.Material;
|
||||
|
||||
public class ItemContainer
|
||||
{
|
||||
public Material Type;
|
||||
public byte Data;
|
||||
public String Name;
|
||||
|
||||
public ItemContainer(Material type, byte data, String name)
|
||||
{
|
||||
Type = type;
|
||||
Data = data;
|
||||
Name = name;
|
||||
}
|
||||
|
||||
public ItemContainer(int id, byte data, String name)
|
||||
{
|
||||
Type = Material.getMaterial(id);
|
||||
Data = data;
|
||||
Name = name;
|
||||
}
|
||||
}
|
|
@ -4,21 +4,24 @@ import java.lang.reflect.Field;
|
|||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.server.v1_7_R4.EntityBat;
|
||||
import net.minecraft.server.v1_7_R4.EntityCreature;
|
||||
import net.minecraft.server.v1_7_R4.EntityEnderDragon;
|
||||
import net.minecraft.server.v1_7_R4.EntityHuman;
|
||||
import net.minecraft.server.v1_7_R4.EntityInsentient;
|
||||
import net.minecraft.server.v1_7_R4.EntityLiving;
|
||||
import net.minecraft.server.v1_7_R4.EntityTrackerEntry;
|
||||
import net.minecraft.server.v1_7_R4.Navigation;
|
||||
import net.minecraft.server.v1_7_R4.PacketPlayOutEntityHeadRotation;
|
||||
import net.minecraft.server.v1_7_R4.PathfinderGoal;
|
||||
import net.minecraft.server.v1_7_R4.PathfinderGoalLookAtPlayer;
|
||||
import net.minecraft.server.v1_7_R4.PathfinderGoalMoveTowardsRestriction;
|
||||
import net.minecraft.server.v1_7_R4.PathfinderGoalRandomLookaround;
|
||||
import net.minecraft.server.v1_7_R4.PathfinderGoalSelector;
|
||||
import net.minecraft.server.v1_7_R4.WorldServer;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
|
@ -32,6 +35,7 @@ import org.bukkit.entity.EntityType;
|
|||
import org.bukkit.entity.Giant;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftCreature;
|
||||
import org.bukkit.craftbukkit.v1_7_R4.CraftWorld;
|
||||
|
||||
|
@ -582,6 +586,36 @@ public class UtilEnt
|
|||
return false;
|
||||
}
|
||||
|
||||
public static boolean CreatureLook(Entity ent, Entity target)
|
||||
{
|
||||
return CreatureLook(ent, target instanceof LivingEntity ? ((LivingEntity) target).getEyeLocation() : target.getLocation());
|
||||
}
|
||||
|
||||
public static boolean CreatureLook(Entity ent, Location target)
|
||||
{
|
||||
Vector vec = UtilAlg.getTrajectory(ent.getLocation(), target);
|
||||
|
||||
return CreatureLook(ent, UtilAlg.GetPitch(vec), UtilAlg.GetYaw(vec));
|
||||
}
|
||||
|
||||
public static boolean CreatureLook(Entity ent, float pitch, float yaw)
|
||||
{
|
||||
if (!(ent instanceof LivingEntity))
|
||||
return false;
|
||||
|
||||
EntityLiving ec = ((CraftLivingEntity) ent).getHandle();
|
||||
Location loc = ent.getLocation();
|
||||
|
||||
ec.setPositionRotation(loc.getX(), loc.getY(), loc.getZ(), yaw, pitch);
|
||||
ec.al = true;
|
||||
|
||||
EntityTrackerEntry entry = (EntityTrackerEntry) ((WorldServer) ec.world).tracker.trackedEntities.get(ec.getId());
|
||||
|
||||
entry.broadcast(new PacketPlayOutEntityHeadRotation(ec, (byte) (ec.yaw * 256.0F / 360.0F)));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void CreatureMove(Entity ent, Location target, float speed)
|
||||
{
|
||||
if (!(ent instanceof Creature))
|
||||
|
|
|
@ -4,22 +4,24 @@ import java.util.AbstractMap;
|
|||
import java.util.LinkedList;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import mineplex.core.common.structs.ItemContainer;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class UtilItem
|
||||
{
|
||||
public static LinkedList<Entry<Material, Byte>> matchItem(Player caller, String items, boolean inform)
|
||||
public static LinkedList<ItemContainer> matchItem(Player caller, String items, boolean inform)
|
||||
{
|
||||
LinkedList<Entry<Material, Byte>> matchList = new LinkedList<Entry<Material, Byte>>();
|
||||
LinkedList<ItemContainer> matchList = new LinkedList<ItemContainer>();
|
||||
|
||||
String failList = "";
|
||||
|
||||
//Mass Search
|
||||
for (String cur : items.split(","))
|
||||
{
|
||||
Entry<Material, Byte> match = searchItem(caller, cur, inform);
|
||||
ItemContainer match = searchItem(caller, cur, inform);
|
||||
|
||||
if (match != null)
|
||||
matchList.add(match);
|
||||
|
@ -40,21 +42,27 @@ public class UtilItem
|
|||
return matchList;
|
||||
}
|
||||
|
||||
public static Entry<Material, Byte> searchItem(Player caller, String args, boolean inform)
|
||||
public static ItemContainer searchItem(Player caller, String args, boolean inform)
|
||||
{
|
||||
LinkedList<Entry<Material, Byte>> matchList = new LinkedList<Entry<Material, Byte>>();
|
||||
LinkedList<ItemContainer> matchList = new LinkedList<ItemContainer>();
|
||||
|
||||
for (Material cur : Material.values())
|
||||
{
|
||||
String[] arg = args.split(":");
|
||||
|
||||
//Get Selected Name
|
||||
String name = null;
|
||||
if (arg.length > 2)
|
||||
name = arg[2].replaceAll("_", " ");
|
||||
|
||||
//By Name
|
||||
if (cur.toString().equalsIgnoreCase(args))
|
||||
return new AbstractMap.SimpleEntry<Material, Byte>(cur, (byte)0);
|
||||
return new ItemContainer(cur, (byte)0, name);
|
||||
|
||||
if (cur.toString().toLowerCase().contains(args.toLowerCase()))
|
||||
matchList.add(new AbstractMap.SimpleEntry<Material, Byte>(cur, (byte)0));
|
||||
matchList.add(new ItemContainer(cur, (byte)0, name));
|
||||
|
||||
//By ID:Data
|
||||
String[] arg = args.split(":");
|
||||
//By ID:Data:Name
|
||||
|
||||
//ID
|
||||
int id = 0;
|
||||
|
@ -82,8 +90,8 @@ public class UtilItem
|
|||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
return new AbstractMap.SimpleEntry<Material, Byte>(cur, data);
|
||||
|
||||
return new ItemContainer(cur, data, name);
|
||||
}
|
||||
|
||||
//No / Non-Unique
|
||||
|
@ -102,8 +110,9 @@ public class UtilItem
|
|||
if (matchList.size() > 0)
|
||||
{
|
||||
String matchString = "";
|
||||
for (Entry<Material, Byte> cur : matchList)
|
||||
matchString += F.elem(cur.getKey().toString()) + ", ";
|
||||
for (ItemContainer cur : matchList)
|
||||
matchString += F.elem(cur.Type.toString()) + ", ";
|
||||
|
||||
if (matchString.length() > 1)
|
||||
matchString = matchString.substring(0 , matchString.length() - 2);
|
||||
|
||||
|
|
|
@ -219,7 +219,16 @@ public class CoreClientManager extends MiniPlugin
|
|||
UUID uuid = loadUUIDFromDB(playerName);
|
||||
|
||||
if (uuid == null)
|
||||
uuid = UUIDFetcher.getUUIDOf(playerName);
|
||||
{
|
||||
try
|
||||
{
|
||||
uuid = UUIDFetcher.getUUIDOf(playerName);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
System.out.println("Error fetching uuid from mojang : " + exception.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
String response = "";
|
||||
|
||||
|
|
|
@ -60,7 +60,6 @@ public class UpdateRank extends CommandBase<CoreClientManager>
|
|||
|
||||
final Rank rank = tempRank;
|
||||
|
||||
if (rank == Rank.ADMIN || rank == Rank.YOUTUBE || rank == Rank.TWITCH || rank == Rank.MODERATOR || rank == Rank.JNR_DEV || rank == Rank.HELPER || rank == Rank.ALL || rank == Rank.MAPDEV || rank == Rank.SNR_MODERATOR)
|
||||
if (rank == Rank.ADMIN || rank == Rank.YOUTUBE || rank == Rank.TWITCH || rank == Rank.MODERATOR || rank == Rank.JNR_DEV || rank == Rank.HELPER || rank == Rank.ALL || rank == Rank.MAPDEV || rank == Rank.SNR_MODERATOR)
|
||||
{
|
||||
if (!testServer && rank.Has(Rank.ADMIN) && !Plugin.hasRank(caller, Rank.LT))
|
||||
|
|
|
@ -193,7 +193,7 @@ public class AccountRepository extends RepositoryBase
|
|||
}, new ColumnVarChar("name", 100, name));
|
||||
|
||||
if (uuids.size() > 0)
|
||||
return uuids.get(uuids.size() - 1);
|
||||
return uuids.get(0);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -662,7 +662,7 @@ public enum Achievement
|
|||
new int[]{20},
|
||||
AchievementCategory.BOMB_LOBBERS),
|
||||
|
||||
BOMB_LOBBERS_SNIPER("Sniper", 10000,
|
||||
BOMB_LOBBERS_SNIPER("Sniper", 1000,
|
||||
new String[]{"Bomb Lobbers.Direct Hit"},
|
||||
new String[]{"Get 50 direct hits"},
|
||||
new int[]{50},
|
||||
|
|
|
@ -15,7 +15,8 @@ import mineplex.core.stats.StatsManager;
|
|||
public enum AchievementCategory
|
||||
{
|
||||
GLOBAL("Global", null,
|
||||
new StatDisplay[] { StatDisplay.GEMS_EARNED, null, new StatDisplay("Games Played", "GamesPlayed"), StatDisplay.TIME_IN_GAME },
|
||||
new StatDisplay[] { StatDisplay.GEMS_EARNED, null, new StatDisplay("Games Played", "GamesPlayed"), StatDisplay.TIME_IN_GAME, null,
|
||||
new StatDisplay("Daily Rewards", "DailyReward"), new StatDisplay("Times Voted", "DailyVote"), null, new StatDisplay("Chests Opened", "Treasure.Old", "Treasure.Ancient", "Treasure.Mythical") },
|
||||
Material.EMERALD, 0, GameCategory.GLOBAL, "None"),
|
||||
|
||||
BRIDGES("The Bridges", null,
|
||||
|
@ -28,7 +29,7 @@ public enum AchievementCategory
|
|||
|
||||
SKYWARS("Skywars",null,
|
||||
new StatDisplay[]{StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED},
|
||||
Material.FEATHER, 5, GameCategory.SURVIVAL, "Destructor Kit"),
|
||||
Material.FEATHER, 0, GameCategory.SURVIVAL, "Destructor Kit"),
|
||||
|
||||
UHC("Ultra Hardcore", null,
|
||||
new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED },
|
||||
|
|
|
@ -17,7 +17,7 @@ public class StatsCommand extends CommandBase<AchievementManager>
|
|||
@Override
|
||||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
if (args == null || args.length == 0)
|
||||
if (args.length == 0)
|
||||
{
|
||||
Plugin.openShop(caller);
|
||||
}
|
||||
|
|
|
@ -57,11 +57,10 @@ public class AchievementMainPage extends ShopPageBase<AchievementManager, Achiev
|
|||
|
||||
ArrayList<String> lore = new ArrayList<String>();
|
||||
lore.add(" ");
|
||||
category.addStats(getClientManager(), _statsManager, lore, category == AchievementCategory.GLOBAL ? 5 : 2,
|
||||
category.addStats(getClientManager(), _statsManager, lore, category == AchievementCategory.GLOBAL ? 10 : 2,
|
||||
getPlayer(), _target);
|
||||
lore.add(" ");
|
||||
addAchievements(category, lore, 9);
|
||||
lore.add(" ");
|
||||
lore.add(ChatColor.RESET + "Click for more details!");
|
||||
|
||||
ShopItem shopItem = new ShopItem(category.getIcon(), category.getIconData(), C.Bold + category.getFriendlyName(),
|
||||
|
@ -100,5 +99,8 @@ public class AchievementMainPage extends ShopPageBase<AchievementManager, Achiev
|
|||
achievementCount++;
|
||||
}
|
||||
}
|
||||
|
||||
if (achievementCount > 0)
|
||||
lore.add(" ");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ public class AntiHackRepository
|
|||
{
|
||||
private String _serverName;
|
||||
|
||||
private static String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS AntiHack_Kick_Log (id INT NOT NULL AUTO_INCREMENT, updated LONG, playerName VARCHAR(256), motd VARCHAR(56), gameType VARCHAR(56), map VARCHAR(256), serverName VARCHAR(256), report VARCHAR(256), ping VARCHAR(25), PRIMARY KEY (id));";
|
||||
//private static String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS AntiHack_Kick_Log (id INT NOT NULL AUTO_INCREMENT, updated LONG, playerName VARCHAR(256), motd VARCHAR(56), gameType VARCHAR(56), map VARCHAR(256), serverName VARCHAR(256), report VARCHAR(256), ping VARCHAR(25), PRIMARY KEY (id));";
|
||||
private static String UPDATE_PLAYER_OFFENSES = "INSERT INTO AntiHack_Kick_Log (updated, playerName, motd, gameType, map, serverName, report, ping) VALUES (now(), ?, ?, ?, ?, ?, ?, ?);";
|
||||
|
||||
public AntiHackRepository(String serverName)
|
||||
|
@ -23,32 +23,6 @@ public class AntiHackRepository
|
|||
|
||||
public void initialize()
|
||||
{
|
||||
PreparedStatement preparedStatement = null;
|
||||
|
||||
try (Connection connection = DBPool.STATS_MINEPLEX.getConnection())
|
||||
{
|
||||
// Create table
|
||||
preparedStatement = connection.prepareStatement(CREATE_TABLE);
|
||||
preparedStatement.execute();
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
exception.printStackTrace();
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (preparedStatement != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
preparedStatement.close();
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void saveOffense(final Player player, final String motd, final String game, final String map, final String report)
|
||||
|
|
|
@ -2,6 +2,8 @@ package mineplex.core.bonuses;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
|
||||
public class BonusAmount
|
||||
|
@ -138,6 +140,7 @@ public class BonusAmount
|
|||
|
||||
public void addLore(List<String> lore)
|
||||
{
|
||||
lore.add(C.cYellow + "Rewards");
|
||||
addLore(lore, getTickets(), 0, "Carl Spin Ticket" + (getTickets() > 1 ? "s" : ""));
|
||||
addLore(lore, getCoins(), getBonusCoins(), "Coins");
|
||||
addLore(lore, getGems(), getBonusGems(), "Gems");
|
||||
|
@ -148,7 +151,7 @@ public class BonusAmount
|
|||
private void addLore(List<String> lore, int amount, int bonus, String suffix)
|
||||
{
|
||||
if (amount > 0)
|
||||
lore.add(C.cYellow + "Reward: " + C.cWhite + amount + " " + suffix);
|
||||
lore.add(" " + C.cWhite + amount + " " + suffix);
|
||||
|
||||
// if (bonus > 0)
|
||||
// lore.add(C.cYellow + "Streak Bonus: " + C.cWhite + bonus + " " + suffix);
|
||||
|
|
|
@ -8,107 +8,111 @@ import mineplex.database.tables.records.BonusRecord;
|
|||
|
||||
public class BonusClientData
|
||||
{
|
||||
private BonusRecord _record;
|
||||
private Hologram _hologram;
|
||||
|
||||
public BonusClientData(BonusRecord record)
|
||||
{
|
||||
_record = record;
|
||||
}
|
||||
private int _accountId;
|
||||
private Timestamp _dailyTime;
|
||||
private Date _rankTime;
|
||||
private Date _voteTime;
|
||||
private int _dailyStreak;
|
||||
private int _maxDailyStreak;
|
||||
private int _voteStreak;
|
||||
private int _maxVoteStreak;
|
||||
private int _tickets;
|
||||
|
||||
public BonusRecord getRecord()
|
||||
public BonusClientData()
|
||||
{
|
||||
return _record;
|
||||
_accountId = -1;
|
||||
}
|
||||
|
||||
public void setAccountId(Integer value)
|
||||
{
|
||||
_record.setAccountId(value);
|
||||
_accountId = value;
|
||||
}
|
||||
|
||||
public Integer getAccountId()
|
||||
{
|
||||
return _record.getAccountId();
|
||||
return _accountId;
|
||||
}
|
||||
|
||||
public void setDailyTime(Timestamp value)
|
||||
{
|
||||
_record.setDailytime(value);
|
||||
_dailyTime = value;
|
||||
}
|
||||
|
||||
public Timestamp getDailyTime()
|
||||
{
|
||||
return _record.getDailytime();
|
||||
return _dailyTime;
|
||||
}
|
||||
|
||||
public void setRankTime(Date value)
|
||||
{
|
||||
_record.setRanktime(value);
|
||||
_rankTime = value;
|
||||
}
|
||||
|
||||
public Date getRankTime()
|
||||
{
|
||||
return _record.getRanktime();
|
||||
return _rankTime;
|
||||
}
|
||||
|
||||
public void setVoteTime(Date value)
|
||||
{
|
||||
_record.setVotetime(value);
|
||||
_voteTime = value;
|
||||
}
|
||||
|
||||
public Date getVoteTime()
|
||||
{
|
||||
return _record.getVotetime();
|
||||
return _voteTime;
|
||||
}
|
||||
|
||||
public void setDailyStreak(Integer value)
|
||||
{
|
||||
_record.setDailyStreak(value);
|
||||
_dailyStreak = value;
|
||||
}
|
||||
|
||||
public Integer getDailyStreak()
|
||||
{
|
||||
return _record.getDailyStreak();
|
||||
return _dailyStreak;
|
||||
}
|
||||
|
||||
public void setMaxDailyStreak(Integer value)
|
||||
{
|
||||
_record.setMaxDailyStreak(value);
|
||||
_maxDailyStreak = value;
|
||||
}
|
||||
|
||||
public Integer getMaxDailyStreak()
|
||||
{
|
||||
return _record.getMaxDailyStreak();
|
||||
return _maxDailyStreak;
|
||||
}
|
||||
|
||||
public void setVoteStreak(Integer value)
|
||||
{
|
||||
_record.setVoteStreak(value);
|
||||
_voteStreak = value;
|
||||
}
|
||||
|
||||
public Integer getVoteStreak()
|
||||
{
|
||||
return _record.getVoteStreak();
|
||||
return _voteStreak;
|
||||
}
|
||||
|
||||
public void setMaxVoteStreak(Integer value)
|
||||
{
|
||||
_record.setMaxVoteStreak(value);
|
||||
_maxVoteStreak = value;
|
||||
}
|
||||
|
||||
public Integer getMaxVoteStreak()
|
||||
{
|
||||
return _record.getMaxVoteStreak();
|
||||
return _maxVoteStreak;
|
||||
}
|
||||
|
||||
public void setTickets(Integer value)
|
||||
{
|
||||
_record.setTickets(value);
|
||||
_tickets = value;
|
||||
}
|
||||
|
||||
public Integer getTickets()
|
||||
{
|
||||
return _record.getTickets();
|
||||
return _tickets;
|
||||
}
|
||||
|
||||
public Hologram getHologram()
|
||||
|
|
|
@ -1,17 +1,26 @@
|
|||
package mineplex.core.bonuses;
|
||||
|
||||
import java.sql.Date;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Queue;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import mineplex.core.MiniClientPlugin;
|
||||
import mineplex.core.account.CoreClient;
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
import mineplex.core.account.ILoginProcessor;
|
||||
import mineplex.core.account.IQuerylessLoginProcessor;
|
||||
import mineplex.core.account.event.ClientUnloadEvent;
|
||||
import mineplex.core.bonuses.redis.VoteHandler;
|
||||
import mineplex.core.bonuses.redis.VotifierCommand;
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.Callback;
|
||||
|
@ -34,7 +43,6 @@ import mineplex.core.reward.RewardManager;
|
|||
import mineplex.core.stats.StatsManager;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.core.votifier.VotifierCommand;
|
||||
import mineplex.database.Tables;
|
||||
import mineplex.core.bonuses.animations.AnimationCarl;
|
||||
import mineplex.core.bonuses.commands.AnimationCommand;
|
||||
|
@ -47,27 +55,25 @@ import mineplex.core.bonuses.gui.SpinGui;
|
|||
import mineplex.core.poll.PollManager;
|
||||
import mineplex.serverdata.commands.ServerCommandManager;
|
||||
|
||||
import org.jooq.DSLContext;
|
||||
import org.jooq.SQLDialect;
|
||||
import org.jooq.impl.DSL;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Dropper;
|
||||
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import net.minecraft.server.v1_7_R4.DataWatcher;
|
||||
import net.minecraft.server.v1_7_R4.PacketPlayOutEntityMetadata;
|
||||
|
||||
public class BonusManager extends MiniClientPlugin<BonusClientData> implements IQuerylessLoginProcessor
|
||||
public class BonusManager extends MiniClientPlugin<BonusClientData> implements ILoginProcessor
|
||||
{
|
||||
|
||||
public static final TimeZone TIMEZONE = TimeZone.getTimeZone("UTC");
|
||||
|
@ -107,7 +113,6 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
@Override
|
||||
public void run(Long data)
|
||||
{
|
||||
System.out.println("Sql time offset is: " + data);
|
||||
timeOffSet = data;
|
||||
}
|
||||
});
|
||||
|
@ -130,6 +135,12 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
private StreakRecord _dailyStreak;
|
||||
private StreakRecord _voteStreak;
|
||||
|
||||
private ArrayList<String> _voteList;
|
||||
|
||||
// Donor Queues
|
||||
private Queue<GiveDonorData> _coinQueue;
|
||||
private Queue<GiveDonorData> _gemQueue;
|
||||
|
||||
/**
|
||||
* THIS SHOULD ONLY BE USED FOR VOTIFIER!
|
||||
*/
|
||||
|
@ -142,6 +153,13 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
_clientManager = clientManager;
|
||||
_donationManager = donationManager;
|
||||
|
||||
_voteList = new ArrayList<String>();
|
||||
_voteList.add("http://vote1.mineplex.com");
|
||||
_voteList.add("http://vote2.mineplex.com");
|
||||
|
||||
_coinQueue = new LinkedList<GiveDonorData>();
|
||||
_gemQueue = new LinkedList<GiveDonorData>();
|
||||
|
||||
updateOffSet();
|
||||
}
|
||||
|
||||
|
@ -164,8 +182,14 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
_pollManager = pollManager;
|
||||
_statsManager = statsManager;
|
||||
|
||||
// Hope to god this works!
|
||||
_voteList = new ArrayList<String>();
|
||||
_voteList.add("http://vote1.mineplex.com");
|
||||
_voteList.add("http://vote2.mineplex.com");
|
||||
|
||||
_canVote = true;
|
||||
_coinQueue = new LinkedList<GiveDonorData>();
|
||||
_gemQueue = new LinkedList<GiveDonorData>();
|
||||
|
||||
|
||||
if (npcManager != null)
|
||||
{
|
||||
|
@ -211,7 +235,6 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
{
|
||||
if (event.getType() != UpdateType.MIN_16)
|
||||
return;
|
||||
System.err.println("Updating off set");
|
||||
updateOffSet();
|
||||
}
|
||||
|
||||
|
@ -255,22 +278,35 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
return _voteStreak;
|
||||
}
|
||||
|
||||
public void handleVote(final Player player)
|
||||
public void handleVote(final Player player, final int gemsReceived)
|
||||
{
|
||||
final int accountId = _clientManager.getAccountId(player);
|
||||
|
||||
runAsync(new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
Get(player).getRecord().refresh();
|
||||
runSync(new Runnable()
|
||||
_repository.getClientData(accountId, new Callback<BonusClientData>()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
public void run(final BonusClientData data)
|
||||
{
|
||||
addPendingExplosion(player, player.getName());
|
||||
UtilPlayer.message(player, F.main("Carl", "Thanks for voting for Mineplex!"));
|
||||
UtilPlayer.message(player, F.main("Carl", "You received 500 Gems and 1 Carls Spinner Ticket!"));
|
||||
runSync(new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
BonusClientData oldData = Get(player);
|
||||
if (oldData != null) data.setHologram(oldData.getHologram());
|
||||
Set(player, data);
|
||||
|
||||
_statsManager.incrementStat(player, "Global.DailyVote", 1);
|
||||
addPendingExplosion(player, player.getName());
|
||||
UtilPlayer.message(player, F.main("Carl", "Thanks for voting for Mineplex!"));
|
||||
UtilPlayer.message(player, F.main("Carl", "You received " + F.elem(gemsReceived + " Gems") + " and " + F.elem("1 Carl Spinner Ticket") + "!"));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -304,6 +340,8 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
if (event.getType() != UpdateType.TICK)
|
||||
return;
|
||||
|
||||
_animation.itemClean();
|
||||
|
||||
if(_canVote)
|
||||
return;
|
||||
|
||||
|
@ -331,7 +369,6 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
creeper.getWorld().playSound(creeper.getLocation(), Sound.EXPLODE, 2f, 1f);
|
||||
_animation.setType(_pendingExplosions.get(0));
|
||||
_animation.setPlayer(_pendingExplosionsPlayers.get(0));
|
||||
_animation.setTime(System.currentTimeMillis());
|
||||
_animation.setRunning(true);
|
||||
}
|
||||
|
||||
|
@ -378,7 +415,8 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
// DAILY BONUS
|
||||
|
||||
public static final long TIME_BETWEEN_BONUSES = 1000 * 60 * 60 * 20;
|
||||
public static final long STREAK_RESET_TIME = 1000 * 60 * 60 * 12;
|
||||
public static final long DAILY_STREAK_RESET_TIME = 1000 * 60 * 60 * 12;
|
||||
public static final long VOTE_STREAK_RESET_TIME = 1000 * 60 * 60 * 24;
|
||||
|
||||
public void attemptDailyBonus(final Player player, final BonusAmount amount, final Callback<Boolean> result)
|
||||
{
|
||||
|
@ -395,6 +433,8 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
incrementDailyStreak(player);
|
||||
awardBonus(player, amount);
|
||||
updateCreeperVisual(player, true, C.cAqua);
|
||||
|
||||
_statsManager.incrementStat(player, "Global.DailyReward", 1);
|
||||
}
|
||||
|
||||
result.run(r);
|
||||
|
@ -410,7 +450,7 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
// This calculates the the next daily bonus, IT HAS TO MATCH THE MYSQL STORED FUNCTION.
|
||||
public long nextDailyBonus(Player player)
|
||||
{
|
||||
Timestamp timestamp = Get(player).getRecord().getDailytime();
|
||||
Timestamp timestamp = Get(player).getDailyTime();
|
||||
|
||||
if (timestamp == null)
|
||||
return 0;
|
||||
|
@ -445,7 +485,7 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
{
|
||||
final BonusClientData clientData = Get(player);
|
||||
|
||||
if (clientData.getTickets() > 0)
|
||||
if (Recharge.Instance.use(player, "Carl Spin", 5000, false, false) && clientData.getTickets() > 0)
|
||||
{
|
||||
CarlSpinnerEvent event = new CarlSpinnerEvent(player);
|
||||
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||
|
@ -482,7 +522,7 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
// This calculates the the next rank bonus, IT HAS TO MATCH THE MYSQL STORED FUNCTION.
|
||||
public long nextRankBonus(Player player)
|
||||
{
|
||||
Date date = Get(player).getRecord().getRanktime();
|
||||
Date date = Get(player).getRankTime();
|
||||
|
||||
if (date == null)
|
||||
return 0;
|
||||
|
@ -499,7 +539,7 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
if (client.getDailyStreak() > 0 && client.getDailyTime() != null)
|
||||
{
|
||||
long lastBonus = getLocalTime(client.getDailyTime().getTime());
|
||||
long timeLeft = getStreakTimeRemaining(lastBonus, BonusManager.STREAK_RESET_TIME);
|
||||
long timeLeft = getStreakTimeRemaining(lastBonus, BonusManager.DAILY_STREAK_RESET_TIME);
|
||||
|
||||
if (timeLeft < 0)
|
||||
{
|
||||
|
@ -508,6 +548,20 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
}
|
||||
}
|
||||
|
||||
public void updateVoteStreak(BonusRecord client)
|
||||
{
|
||||
if (client.getVoteStreak() > 0 && client.getVotetime() != null)
|
||||
{
|
||||
long lastBonus = getLocalTime(client.getVotetime().getTime());
|
||||
long timeLeft = getStreakTimeRemaining(lastBonus, BonusManager.VOTE_STREAK_RESET_TIME);
|
||||
|
||||
if (timeLeft < 0)
|
||||
{
|
||||
client.setVoteStreak(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void incrementDailyStreak(Player player)
|
||||
{
|
||||
BonusClientData data = Get(player);
|
||||
|
@ -518,7 +572,7 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
data.setMaxDailyStreak(data.getDailyStreak());
|
||||
}
|
||||
|
||||
public void incrementVoteStreak(BonusClientData client)
|
||||
public void incrementVoteStreak(BonusRecord client)
|
||||
{
|
||||
client.setVoteStreak(client.getVoteStreak() + 1);
|
||||
|
||||
|
@ -566,10 +620,8 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
return multiplyer;
|
||||
}
|
||||
|
||||
public int getVoteMultiplyer(BonusClientData client)
|
||||
public int getVoteMultiplyer(int streak)
|
||||
{
|
||||
int streak = client.getVoteStreak();
|
||||
|
||||
int multiplyer = Math.min(100, 5 * streak);
|
||||
if (streak >= 20) multiplyer += (1 * (streak - 40));
|
||||
return multiplyer;
|
||||
|
@ -596,12 +648,12 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
|
||||
public BonusAmount getVoteBonusAmount(Player player)
|
||||
{
|
||||
return getVoteBonusAmount(Get(player));
|
||||
return getVoteBonusAmount(Get(player).getVoteStreak());
|
||||
}
|
||||
|
||||
public BonusAmount getVoteBonusAmount(BonusClientData client)
|
||||
public BonusAmount getVoteBonusAmount(int voteStreak)
|
||||
{
|
||||
double mult = getVoteMultiplyer(client) / 100.0;
|
||||
double mult = getVoteMultiplyer(voteStreak) / 100.0;
|
||||
|
||||
BonusAmount amount = new BonusAmount();
|
||||
amount.setTickets(1);
|
||||
|
@ -669,25 +721,13 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
|
||||
if (gems > 0)
|
||||
{
|
||||
_donationManager.RewardGems(new Callback<Boolean>()
|
||||
{
|
||||
@Override
|
||||
public void run(Boolean data)
|
||||
{
|
||||
if (data)
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Carl", "Rewarded " + F.elem(gems + " Gems")));
|
||||
}
|
||||
else
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Carl", "Failed to process Gems"));
|
||||
}
|
||||
}
|
||||
}, "BonusManager", player.getName(), player.getUniqueId(), gems, true);
|
||||
UtilPlayer.message(player, F.main("Carl", "Rewarded " + F.elem(gems + " Gems")));
|
||||
_gemQueue.add(new GiveDonorData(player.getName(), coreClient.getAccountId(), player.getUniqueId(), gems));
|
||||
}
|
||||
|
||||
if (gold > 0)
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Carl", "Rewarded " + F.elem(gold + " Gold")));
|
||||
_donationManager.RewardGold(new Callback<Boolean>()
|
||||
{
|
||||
@Override
|
||||
|
@ -695,37 +735,24 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
{
|
||||
if (data)
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Carl", "Rewarded " + F.elem(gold + " Gold")));
|
||||
}
|
||||
else
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Carl", "Failed to process Gold"));
|
||||
}
|
||||
}
|
||||
}, "BonusManager", player.getName(), coreClient.getAccountId(), gold, true);
|
||||
}, "Earned", player.getName(), coreClient.getAccountId(), gold, true);
|
||||
}
|
||||
|
||||
if (coins > 0)
|
||||
{
|
||||
_donationManager.RewardCoins(new Callback<Boolean>()
|
||||
{
|
||||
@Override
|
||||
public void run(Boolean data)
|
||||
{
|
||||
if (data)
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Carl", "Rewarded " + F.elem(coins + " Coins")));
|
||||
}
|
||||
else
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Carl", "Failed to process Coins"));
|
||||
}
|
||||
}
|
||||
}, "BonusManager", player.getName(), coreClient.getAccountId(), coins, true);
|
||||
UtilPlayer.message(player, F.main("Carl", "Rewarded " + F.elem(coins + " Coins")));
|
||||
_coinQueue.add(new GiveDonorData(player.getName(), coreClient.getAccountId(), player.getUniqueId(), coins));
|
||||
}
|
||||
|
||||
if (tickets > 0)
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Carl", "Rewarded " + F.elem(tickets + " Carl Spin Ticket")));
|
||||
final int accountId = _clientManager.Get(player).getAccountId();
|
||||
runAsync(new Runnable()
|
||||
{
|
||||
|
@ -742,7 +769,6 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
public void run()
|
||||
{
|
||||
bonusClient.setTickets(newTickets);
|
||||
UtilPlayer.message(player, F.main("Carl", "Rewarded " + F.elem(tickets + " Carl Spin Ticket")));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -760,7 +786,7 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
_statsManager.incrementStat(player, "Global.ExpEarned", experience);
|
||||
UtilPlayer.message(player, F.main("Carl", "Rewarded " + F.elem(experience + " Experience")));
|
||||
}
|
||||
|
||||
|
||||
UtilPlayer.message(player, F.main("Carl", "Come back tomorrow for more!"));
|
||||
|
||||
}
|
||||
|
@ -778,6 +804,23 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
new BonusGui(_plugin, event.getPlayer(), this, _rewardManager).openInventory();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void openGui(EntityDamageByEntityEvent event)
|
||||
{
|
||||
if (!_enabled)
|
||||
return;
|
||||
|
||||
if (event.getDamager() instanceof Player)
|
||||
{
|
||||
Player player = (Player) event.getDamager();
|
||||
if (event.getEntity().equals(_carlNpc.getEntity()))
|
||||
{
|
||||
updateDailyStreak(player);
|
||||
new BonusGui(_plugin, player, this, _rewardManager).openInventory();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static long getNextVoteTime(long time) {
|
||||
|
||||
|
@ -836,7 +879,7 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
int availableRewards = 0;
|
||||
|
||||
if (canVote(player)) availableRewards++;
|
||||
if (canRank(player) && _clientManager.hasRank(player, Rank.ULTRA)) availableRewards++;
|
||||
if (canRank(player) && _clientManager.hasRank(player, Rank.ULTRA) && isPastAugust()) availableRewards++;
|
||||
if (canDaily(player)) availableRewards++;
|
||||
if (getPollManager().getNextPoll(_pollManager.Get(player), _clientManager.Get(player).GetRank()) != null) availableRewards++;
|
||||
|
||||
|
@ -900,22 +943,22 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
@EventHandler
|
||||
public void updateCreeper(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.SEC || !_enabled)
|
||||
if (event.getType() != UpdateType.FASTER || !_enabled)
|
||||
return;
|
||||
|
||||
for (Player player : UtilServer.getPlayers())
|
||||
{
|
||||
String prefix = _visualTick % 2 == 0 ? C.cAqua : C.cDAqua;
|
||||
updateCreeperVisual(player, false, prefix);
|
||||
_visualTick++;
|
||||
}
|
||||
|
||||
_visualTick++;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected BonusClientData AddPlayer(String player)
|
||||
{
|
||||
// Should never be called!
|
||||
return null;
|
||||
return new BonusClientData();
|
||||
}
|
||||
|
||||
public BonusRepository getRepository()
|
||||
|
@ -942,6 +985,16 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
if (clientData.getHologram() != null)
|
||||
clientData.getHologram().stop();
|
||||
|
||||
// Save streaks
|
||||
runAsync(new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
_repository.saveStreak(clientData.getAccountId(), clientData);
|
||||
}
|
||||
});
|
||||
|
||||
// This shouldnt be necessary anymore
|
||||
// runAsync(new Runnable()
|
||||
// {
|
||||
|
@ -955,14 +1008,6 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
super.UnloadPlayer(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processLogin(String playerName, int accountId)
|
||||
{
|
||||
BonusRecord record = _repository.loadRecord(playerName, accountId);
|
||||
BonusClientData clientData = new BonusClientData(record);
|
||||
Set(playerName, clientData);
|
||||
}
|
||||
|
||||
public void addPendingExplosion(Player player, Object obj)
|
||||
{
|
||||
_pendingExplosions.add(obj);
|
||||
|
@ -974,29 +1019,7 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
return _pollManager;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void ItemDecay(UpdateEvent event)
|
||||
{
|
||||
if(event.getType() != UpdateType.TICK)
|
||||
return;
|
||||
|
||||
for(Entity entity : _carlNpc.getEntity().getNearbyEntities(3, -0.5, 3))
|
||||
{
|
||||
if(!(entity instanceof Item))
|
||||
continue;
|
||||
|
||||
if(((Item)entity).getItemStack().getType() == Material.MONSTER_EGG && ((Item)entity).getItemStack().hasItemMeta() && !((Item)entity).getItemStack().getItemMeta().getDisplayName().startsWith("Hidden"))
|
||||
entity.remove();
|
||||
|
||||
if(!((Item) entity).getItemStack().hasItemMeta())
|
||||
continue;
|
||||
|
||||
if(!((Item) entity).getItemStack().getItemMeta().getDisplayName().startsWith(" "))
|
||||
continue;
|
||||
|
||||
entity.remove();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@EventHandler
|
||||
public void Join(final PlayerJoinEvent event)
|
||||
|
@ -1027,12 +1050,106 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
|
|||
{
|
||||
if (Recharge.Instance.use(player, "Carl Inform", 240000, false, false))
|
||||
{
|
||||
if(_pollManager.hasPoll(player) || canVote(player) || canRank(player) || canDaily(player))
|
||||
if(_pollManager.hasPoll(player) || canVote(player) || (canRank(player) && _clientManager.hasRank(player, Rank.ULTRA) && isPastAugust()) || canDaily(player))
|
||||
{
|
||||
if(_showCarl.containsKey(player.getName()))
|
||||
UtilPlayer.message(player, C.cDGreen + C.Bold + "Carl the Creeper>" + C.cGreen + " Hey " + player.getName().replace("s", "sss") + "! I have sssome amazing rewardsss for you! Come sssee me!");
|
||||
{
|
||||
if(_plugin.getConfig().getString("serverstatus.group").equalsIgnoreCase("Lobby"))
|
||||
UtilPlayer.message(player, C.cDGreen + C.Bold + "Carl the Creeper>" + C.cGreen + " Hey " + player.getName().replace("s", "sss") + "! I have sssome amazing rewardsss for you! Come sssee me!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void processQueue(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.FASTER)
|
||||
return;
|
||||
|
||||
// Gems
|
||||
final GiveDonorData gemData = _gemQueue.poll();
|
||||
if (gemData != null && gemData.getAttempts() < 10)
|
||||
{
|
||||
_donationManager.RewardGems(new Callback<Boolean>()
|
||||
{
|
||||
@Override
|
||||
public void run(Boolean data)
|
||||
{
|
||||
if (data)
|
||||
{
|
||||
System.out.println("Successfully processed " + gemData.getGiveAmount() + " gems for " + gemData.getPlayerName());
|
||||
}
|
||||
else
|
||||
{
|
||||
gemData.incrementAttempts();
|
||||
System.out.println("Failed to process gems for " + gemData.getPlayerName() + " adding to back of queue. Attempts: " + gemData.getAttempts());
|
||||
_gemQueue.add(gemData);
|
||||
}
|
||||
}
|
||||
}, "Earned", gemData.getPlayerName(), gemData.getUuid(), gemData.getGiveAmount());
|
||||
}
|
||||
|
||||
// Coins
|
||||
final GiveDonorData coinData = _coinQueue.poll();
|
||||
if (coinData != null && coinData.getAttempts() < 10)
|
||||
{
|
||||
_donationManager.RewardCoins(new Callback<Boolean>()
|
||||
{
|
||||
@Override
|
||||
public void run(Boolean data)
|
||||
{
|
||||
if (data)
|
||||
{
|
||||
System.out.println("Successfully processed " + coinData.getGiveAmount() + " coins for " + coinData.getPlayerName());
|
||||
}
|
||||
else
|
||||
{
|
||||
coinData.incrementAttempts();
|
||||
System.out.println("Failed to process coins for " + coinData.getPlayerName() + " adding to back of queue. Attempts: " + coinData.getAttempts());
|
||||
_coinQueue.add(coinData);
|
||||
}
|
||||
}
|
||||
}, "Earned", coinData.getPlayerName(), coinData.getAccountId(), coinData.getGiveAmount());
|
||||
}
|
||||
}
|
||||
|
||||
public String getVoteLink()
|
||||
{
|
||||
long sqlTime = getSqlTime();
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTimeInMillis(sqlTime);
|
||||
int date = calendar.get(Calendar.DAY_OF_YEAR);
|
||||
int index = date % _voteList.size();
|
||||
return _voteList.get(index);
|
||||
}
|
||||
|
||||
/**
|
||||
* Used for disabling rank rewards during first month of release
|
||||
* @return
|
||||
*/
|
||||
public boolean isPastAugust()
|
||||
{
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTimeZone(TIMEZONE);
|
||||
calendar.setTimeInMillis(getSqlTime());
|
||||
|
||||
if (calendar.get(Calendar.YEAR) == 2015 && calendar.get(Calendar.MONTH) == Calendar.AUGUST)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processLoginResultSet(String playerName, int accountId, ResultSet resultSet) throws SQLException
|
||||
{
|
||||
Set(playerName, _repository.loadData(accountId, resultSet));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getQuery(int accountId, String uuid, String name)
|
||||
{
|
||||
return "SELECT * FROM bonus WHERE accountId = '" + accountId + "';";
|
||||
}
|
||||
}
|
|
@ -6,24 +6,30 @@ import java.sql.Date;
|
|||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Timestamp;
|
||||
import java.sql.Types;
|
||||
import java.util.Map;
|
||||
|
||||
import com.sun.org.apache.xpath.internal.operations.Bool;
|
||||
import mineplex.core.bonuses.gui.SpinGui;
|
||||
import mineplex.core.common.Pair;
|
||||
import mineplex.core.common.util.Callback;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.database.DBPool;
|
||||
import mineplex.core.database.RepositoryBase;
|
||||
import mineplex.core.database.ResultSetCallable;
|
||||
import mineplex.core.database.column.ColumnInt;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.recharge.Recharge;
|
||||
import mineplex.database.Tables;
|
||||
import mineplex.database.tables.records.BonusRecord;
|
||||
import org.jooq.Configuration;
|
||||
import org.jooq.DSLContext;
|
||||
import org.jooq.Record2;
|
||||
import org.jooq.SQLDialect;
|
||||
import org.jooq.TableField;
|
||||
import org.jooq.impl.DSL;
|
||||
import org.jooq.impl.DefaultConfiguration;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -65,6 +71,40 @@ public class BonusRepository extends RepositoryBase
|
|||
return record;
|
||||
}
|
||||
|
||||
public BonusClientData loadData(final int accountId, ResultSet resultSet) throws SQLException
|
||||
{
|
||||
BonusClientData clientData = new BonusClientData();
|
||||
clientData.setAccountId(accountId);
|
||||
|
||||
boolean foundClient = false;
|
||||
while (resultSet.next())
|
||||
{
|
||||
foundClient = true;
|
||||
clientData.setDailyTime(resultSet.getTimestamp(2));
|
||||
clientData.setRankTime(resultSet.getDate(3));
|
||||
clientData.setVoteTime(resultSet.getDate(4));
|
||||
clientData.setDailyStreak(resultSet.getInt(5));
|
||||
clientData.setMaxDailyStreak(resultSet.getInt(6));
|
||||
clientData.setVoteStreak(resultSet.getInt(7));
|
||||
clientData.setMaxVoteStreak(resultSet.getInt(8));
|
||||
clientData.setTickets(resultSet.getInt(9));
|
||||
}
|
||||
|
||||
if (!foundClient)
|
||||
{
|
||||
_manager.runAsync(new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
executeInsert("INSERT IGNORE INTO bonus (accountId) VALUES (" + accountId + ")", null);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return clientData;
|
||||
}
|
||||
|
||||
public void getDailyStreakRecord(Callback<StreakRecord> callback)
|
||||
{
|
||||
getStreakRecord(Tables.bonus.maxDailyStreak, callback);
|
||||
|
@ -167,8 +207,6 @@ public class BonusRepository extends RepositoryBase
|
|||
|
||||
final Timestamp timeStamp = callableStatement.getTimestamp(5);
|
||||
|
||||
_manager.Get(player).getRecord().update();
|
||||
|
||||
Bukkit.getScheduler().runTask(plug, new Runnable()
|
||||
{
|
||||
@Override
|
||||
|
@ -289,9 +327,8 @@ public class BonusRepository extends RepositoryBase
|
|||
});
|
||||
}
|
||||
|
||||
public void attemptVoteBonus(final Player player, final Callback<Boolean> result)
|
||||
public void attemptVoteBonus(final int accountId, final Callback<Pair<Boolean, Date>> result)
|
||||
{
|
||||
final int accountId = _manager.getClientManager().Get(player).getAccountId();
|
||||
final int coins = 0;
|
||||
final int gems = 0;
|
||||
|
||||
|
@ -308,27 +345,26 @@ public class BonusRepository extends RepositoryBase
|
|||
callableStatement.setInt(1, accountId);
|
||||
callableStatement.setInt(2, coins);
|
||||
callableStatement.setInt(3, gems);
|
||||
callableStatement.registerOutParameter(4, java.sql.Types.DATE);
|
||||
callableStatement.registerOutParameter(4, Types.BOOLEAN);
|
||||
callableStatement.registerOutParameter(5, Types.DATE);
|
||||
|
||||
callableStatement.executeUpdate();
|
||||
|
||||
//final boolean pass = callableStatement.getBoolean(4);
|
||||
|
||||
final Date date = callableStatement.getDate(4);
|
||||
final boolean pass = callableStatement.getBoolean(4);
|
||||
final Date date = callableStatement.getDate(5);
|
||||
|
||||
Bukkit.getScheduler().runTask(plug, new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
_manager.Get(player).setVoteTime(date);
|
||||
result.run(true);
|
||||
|
||||
// _manager.Get(player).setVoteTime(date);
|
||||
result.run(Pair.create(pass, date));
|
||||
}
|
||||
});
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
result.run(false);
|
||||
result.run(null);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -372,6 +408,30 @@ public class BonusRepository extends RepositoryBase
|
|||
});
|
||||
}
|
||||
|
||||
public void getClientData(final int accountId, final Callback<BonusClientData> callback)
|
||||
{
|
||||
String query = "SELECT * FROM bonus WHERE accountId = '" + accountId + "';";
|
||||
|
||||
executeQuery(query, new ResultSetCallable()
|
||||
{
|
||||
@Override
|
||||
public void processResultSet(ResultSet resultSet) throws SQLException
|
||||
{
|
||||
BonusClientData clientData = loadData(accountId, resultSet);
|
||||
callback.run(clientData);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void saveStreak(int accountId, BonusClientData clientData)
|
||||
{
|
||||
jooq().update(Tables.bonus).set(Tables.bonus.dailyStreak, clientData.getDailyStreak())
|
||||
.set(Tables.bonus.maxDailyStreak, clientData.getMaxDailyStreak())
|
||||
.set(Tables.bonus.voteStreak, clientData.getVoteStreak())
|
||||
.set(Tables.bonus.maxVoteStreak, clientData.getMaxVoteStreak())
|
||||
.where(Tables.bonus.accountId.eq(accountId)).execute();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initialize()
|
||||
{
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
package mineplex.core.bonuses;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class GiveDonorData
|
||||
{
|
||||
private String _playerName;
|
||||
private int _accountId;
|
||||
private UUID _uuid;
|
||||
private int _giveAmount;
|
||||
private int _attempts;
|
||||
|
||||
public GiveDonorData(String playerName, int accountId, UUID uuid, int giveAmount)
|
||||
{
|
||||
_playerName = playerName;
|
||||
_accountId = accountId;
|
||||
_uuid = uuid;
|
||||
_giveAmount = giveAmount;
|
||||
}
|
||||
|
||||
public String getPlayerName()
|
||||
{
|
||||
return _playerName;
|
||||
}
|
||||
|
||||
public int getAccountId()
|
||||
{
|
||||
return _accountId;
|
||||
}
|
||||
|
||||
public UUID getUuid()
|
||||
{
|
||||
return _uuid;
|
||||
}
|
||||
|
||||
public int getGiveAmount()
|
||||
{
|
||||
return _giveAmount;
|
||||
}
|
||||
|
||||
public int getAttempts()
|
||||
{
|
||||
return _attempts;
|
||||
}
|
||||
|
||||
public void incrementAttempts()
|
||||
{
|
||||
_attempts++;
|
||||
}
|
||||
}
|
|
@ -1,5 +1,7 @@
|
|||
package mineplex.core.bonuses.animations;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.Random;
|
||||
|
||||
import mineplex.core.common.util.UtilAction;
|
||||
|
@ -13,6 +15,8 @@ import mineplex.core.reward.Reward;
|
|||
import mineplex.core.reward.RewardData;
|
||||
import mineplex.core.reward.RewardRarity;
|
||||
import mineplex.core.treasure.animation.Animation;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.Location;
|
||||
|
@ -23,19 +27,19 @@ import org.bukkit.block.Block;
|
|||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
public class AnimationCarl extends Animation
|
||||
{
|
||||
|
||||
private boolean _isDone;
|
||||
private Block _creeper;
|
||||
private long _startTime;
|
||||
private Object _type;
|
||||
private Player _player;
|
||||
private Random _random = new Random();
|
||||
|
||||
private HashSet<Item> _items = new HashSet<Item>();
|
||||
|
||||
public AnimationCarl(Entity creeper)
|
||||
{
|
||||
|
@ -53,11 +57,13 @@ public class AnimationCarl extends Animation
|
|||
{
|
||||
Item gem = _creeper.getWorld().dropItem(_creeper.getLocation().add(0.5, 1.5, 0.5), ItemStackFactory.Instance.CreateStack(Material.EMERALD, (byte) 0, 1, " " + i));
|
||||
Item coin = _creeper.getWorld().dropItem(_creeper.getLocation().add(0.5, 1.5, 0.5), ItemStackFactory.Instance.CreateStack(Material.DOUBLE_PLANT, (byte) 0, 1, " " + i));
|
||||
_items.add(gem);
|
||||
_items.add(coin);
|
||||
|
||||
Vector vel = new Vector(Math.sin(i * 9/5d), 0, Math.cos(i * 9/5d));
|
||||
UtilAction.velocity(gem, vel, Math.abs(Math.sin(i * 12/3000d)), false, 0, 0.2 + Math.abs(Math.cos(i * 12/3000d))*0.6, 1, false);
|
||||
UtilAction.velocity(coin, vel, Math.abs(Math.sin(UtilMath.r(i) * 30/3000d)), false, 0, 0.2 + Math.abs(Math.cos(UtilMath.r(i) * 30/3000d))*0.6, 1, false);
|
||||
coin.setTicksLived(1160);
|
||||
gem.setTicksLived(1160);
|
||||
|
||||
}
|
||||
}
|
||||
if(((String) _type).contentEquals("RANK"))
|
||||
|
@ -65,24 +71,30 @@ public class AnimationCarl extends Animation
|
|||
for (int i = 50; i < 60; i++)
|
||||
{
|
||||
Item coin = _creeper.getWorld().dropItem(_creeper.getLocation().add(0.5, 1.5, 0.5), ItemStackFactory.Instance.CreateStack(Material.DOUBLE_PLANT, (byte) 0, 1, " " + i));
|
||||
_items.add(coin);
|
||||
|
||||
Vector vel = new Vector(Math.sin(UtilMath.r(i) * 7/5d), 0, Math.cos(UtilMath.r(i) * 7/5d));
|
||||
UtilAction.velocity(coin, vel, Math.abs(Math.sin(UtilMath.r(i) * 7/3000d)), false, 0, 0.2 + Math.abs(Math.cos(UtilMath.r(i) * 7/3000d))*0.6, 1, false);
|
||||
coin.setTicksLived(1160);
|
||||
|
||||
}
|
||||
}
|
||||
if(!((String) _type).contentEquals("DAILY")&& !((String) _type).contentEquals("RANK")&& !((String) _type).contentEquals("POLL"))
|
||||
{
|
||||
|
||||
Item paper = _creeper.getWorld().dropItem(_creeper.getLocation().add(0.5, 1.5, 0.5), ItemStackFactory.Instance.CreateStack(Material.PAPER, (byte) 0, 1, " " + 64));
|
||||
_items.add(paper);
|
||||
|
||||
Vector vel = new Vector(Math.sin(64 * 8/5d), 0, Math.cos(64 * 8/5d));
|
||||
UtilAction.velocity(paper, vel, Math.abs(Math.sin(64 * 9/3000d)), false, 0, 0.2 + Math.abs(Math.cos(64 + 9/3000d))*0.6, 1, false);
|
||||
paper.setTicksLived(1160);
|
||||
|
||||
for (int i = 50; i < 60; i++)
|
||||
{
|
||||
Item gem = _creeper.getWorld().dropItem(_creeper.getLocation().add(0.5, 1.5, 0.5), ItemStackFactory.Instance.CreateStack(Material.EMERALD, (byte) 0, 1, " " + i));
|
||||
_items.add(gem);
|
||||
|
||||
Vector velo = new Vector(Math.sin(i * 8/5d), 0, Math.cos(i * 8/5d));
|
||||
UtilAction.velocity(gem, velo, Math.abs(Math.sin(i * 8/3000d)), false, 0, 0.2 + Math.abs(Math.cos(i + 8/3000d))*0.6, 1, false);
|
||||
gem.setTicksLived(1160);
|
||||
|
||||
}
|
||||
}
|
||||
finish();
|
||||
|
@ -94,12 +106,11 @@ public class AnimationCarl extends Animation
|
|||
RewardData rewardData = ((Reward)_type).getFakeRewardData(_player);
|
||||
ItemStack itemStack = rewardData.getDisplayItem();
|
||||
Item item = _creeper.getWorld().dropItem(_creeper.getLocation().add(0.5, 1.7, 0.5), itemStack);
|
||||
_items.add(item);
|
||||
|
||||
Vector vel = new Vector(_player.getLocation().getX() - _creeper.getLocation().getX(), 0, _player.getLocation().getZ() - _creeper.getLocation().getZ());
|
||||
|
||||
UtilAction.velocity(item, vel, 0.1, false, 0, 0.2 + 1*0.4, 1, false);
|
||||
|
||||
item.setTicksLived(1160);
|
||||
}
|
||||
|
||||
if(((Reward)_type).getRarity() == RewardRarity.RARE)
|
||||
|
@ -137,11 +148,6 @@ public class AnimationCarl extends Animation
|
|||
_isDone = b;
|
||||
}
|
||||
|
||||
public void setTime(long time)
|
||||
{
|
||||
_startTime = time;
|
||||
}
|
||||
|
||||
public void setType(Object type)
|
||||
{
|
||||
_type = type;
|
||||
|
@ -265,4 +271,20 @@ public class AnimationCarl extends Animation
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void itemClean()
|
||||
{
|
||||
Iterator<Item> itemIterator = _items.iterator();
|
||||
|
||||
while (itemIterator.hasNext())
|
||||
{
|
||||
Item item = itemIterator.next();
|
||||
|
||||
if (item.isOnGround() || !item.isValid() || item.getTicksLived() > 60)
|
||||
{
|
||||
item.remove();
|
||||
itemIterator.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,9 +9,9 @@ import mineplex.core.reward.RewardType;
|
|||
import mineplex.core.bonuses.BonusManager;
|
||||
|
||||
public class AnimationCommand extends CommandBase<BonusManager>{
|
||||
|
||||
|
||||
private BonusManager _plugin;
|
||||
|
||||
|
||||
public AnimationCommand(BonusManager plugin)
|
||||
{
|
||||
super(plugin, Rank.DEVELOPER, "animation");
|
||||
|
@ -21,17 +21,14 @@ public class AnimationCommand extends CommandBase<BonusManager>{
|
|||
@Override
|
||||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
|
||||
if(args != null)
|
||||
{
|
||||
caller = Bukkit.getPlayer(args[0]);
|
||||
_plugin.addPendingExplosion(caller, _plugin.getRewardManager().nextReward(caller, null, false, RewardType.SpinnerFiller, true));
|
||||
}
|
||||
if(args.length >= 2)
|
||||
caller = Bukkit.getPlayer(args[0]);
|
||||
_plugin.addPendingExplosion(caller, _plugin.getRewardManager().nextReward(caller, null, false, RewardType.SpinnerFiller, true));
|
||||
|
||||
if (args.length >= 2)
|
||||
{
|
||||
_plugin.addPendingExplosion(caller, args[1]);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -2,6 +2,7 @@ package mineplex.core.bonuses.commands;
|
|||
|
||||
import mineplex.core.command.CommandBase;
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.common.util.Callback;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.bonuses.BonusManager;
|
||||
|
@ -12,7 +13,7 @@ public class TicketCommand extends CommandBase<BonusManager>
|
|||
{
|
||||
public TicketCommand(BonusManager plugin)
|
||||
{
|
||||
super(plugin, Rank.DEVELOPER, "ticket");
|
||||
super(plugin, Rank.ADMIN, "ticket");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -36,15 +37,28 @@ public class TicketCommand extends CommandBase<BonusManager>
|
|||
{
|
||||
try
|
||||
{
|
||||
int tickets = Integer.parseInt(ticketString);
|
||||
Plugin.Get(target).setTickets(Plugin.Get(targetName).getTickets() + tickets);
|
||||
|
||||
UtilPlayer.message(caller, F.main("Carl", "You gave " + F.elem(tickets + " Carl Tickets") + " to " + F.name(targetName) + "."));
|
||||
|
||||
if (target != null)
|
||||
final int tickets = Integer.parseInt(ticketString);
|
||||
int accountId = Plugin.getClientManager().getAccountId(target);
|
||||
Plugin.getRepository().attemptAddTickets(accountId, Plugin.Get(target), tickets, new Callback<Boolean>()
|
||||
{
|
||||
UtilPlayer.message(target, F.main("Carl", F.name(caller.getName()) + " gave you " + F.elem(tickets + " Carl Tickets") + "."));
|
||||
}
|
||||
@Override
|
||||
public void run(Boolean data)
|
||||
{
|
||||
if (data)
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Carl", "You gave " + F.elem(tickets + " Carl Tickets") + " to " + F.name(targetName) + "."));
|
||||
|
||||
if (target != null && !target.equals(caller))
|
||||
{
|
||||
UtilPlayer.message(target, F.main("Carl", F.name(caller.getName()) + " gave you " + F.elem(tickets + " Carl Tickets") + "."));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Carl", "Failed to give tickets. Try again later!"));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
|
|
@ -37,7 +37,6 @@ public class BonusGui extends SimpleGui
|
|||
@Override
|
||||
protected void finalize() throws Throwable
|
||||
{
|
||||
System.err.println("Deleting the MailboxGui!");
|
||||
super.finalize();
|
||||
}
|
||||
}
|
|
@ -144,7 +144,6 @@ public class SpinGui extends SimpleGui
|
|||
|
||||
if(_currentRewardIndex == _stopSpinnerAt)
|
||||
_stopped = true;
|
||||
|
||||
}
|
||||
|
||||
_tickCount++;
|
||||
|
|
|
@ -152,7 +152,7 @@ public class DailyBonusButton implements GuiItem, Listener
|
|||
if (client.getDailyTime() != null)
|
||||
{
|
||||
long lastBonus = _bonusManager.getLocalTime(client.getDailyTime().getTime());
|
||||
long timeLeft = _bonusManager.getStreakTimeRemaining(lastBonus, BonusManager.STREAK_RESET_TIME);
|
||||
long timeLeft = _bonusManager.getStreakTimeRemaining(lastBonus, BonusManager.DAILY_STREAK_RESET_TIME);
|
||||
|
||||
if (timeLeft > 0)
|
||||
{
|
||||
|
|
|
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
|||
import java.util.HashMap;
|
||||
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
import mineplex.core.bonuses.BonusAmount;
|
||||
import mineplex.core.bonuses.BonusManager;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.UtilText;
|
||||
|
@ -94,7 +95,11 @@ public class PollButton extends SimpleGui implements GuiItem {
|
|||
i++;
|
||||
}
|
||||
lore.add("");
|
||||
lore.add(C.cYellow + "Reward:" + C.cWhite + " 500 Gems");
|
||||
BonusAmount amount = new BonusAmount();
|
||||
amount.setCoins(_poll.getCoinReward());
|
||||
amount.setGems(_poll.getCoinReward());
|
||||
amount.addLore(lore);
|
||||
// lore.add(C.cYellow + "Reward:" + C.cWhite + " 500 Gems");
|
||||
lore.add("");
|
||||
lore.add(C.cGreen + "Click to go to the vote page!");
|
||||
return ItemStackFactory.Instance.CreateStack(Material.BOOK_AND_QUILL, (byte) 0, 1, C.cGreen + C.Bold + "Vote on Poll", lore);
|
||||
|
@ -130,7 +135,10 @@ public class PollButton extends SimpleGui implements GuiItem {
|
|||
i++;
|
||||
}
|
||||
lore.add("");
|
||||
lore.add(C.cYellow + "Reward:" + C.cWhite + " 500 Gems");
|
||||
BonusAmount amount = new BonusAmount();
|
||||
amount.setCoins(_poll.getCoinReward());
|
||||
amount.setGems(_poll.getCoinReward());
|
||||
amount.addLore(lore);
|
||||
|
||||
return new SimpleGuiItem(ItemStackFactory.Instance.CreateStack(Material.BOOK_AND_QUILL, (byte) 0, 1, ChatColor.GREEN + C.cGreen + C.Bold + "Vote on Poll",
|
||||
lore));
|
||||
|
|
|
@ -78,7 +78,7 @@ public class RankBonusButton implements GuiItem, Listener {
|
|||
@Override
|
||||
public void click(ClickType clickType)
|
||||
{
|
||||
if (isAvailable()) {
|
||||
if (isAvailable() && _bonusManager.isPastAugust()) {
|
||||
_item = ItemStackFactory.Instance.CreateStack(Material.LAPIS_BLOCK, (byte)0, 1, ChatColor.BLUE + "Processing...");
|
||||
refreshItem();
|
||||
new LoadingWindow(getPlugin(), getPlayer(), 6*9);
|
||||
|
@ -144,44 +144,56 @@ public class RankBonusButton implements GuiItem, Listener {
|
|||
String itemName;
|
||||
byte data = 0;
|
||||
|
||||
if (!hasRank)
|
||||
if (_bonusManager.isPastAugust())
|
||||
{
|
||||
material = Material.REDSTONE_BLOCK;
|
||||
itemName = C.cRed + ChatColor.BOLD + "Rank Monthly Bonus";
|
||||
lore.add(" ");
|
||||
lore.add(ChatColor.WHITE + "Players with a Rank get a Monthly Bonus!");
|
||||
lore.add(ChatColor.WHITE + "");
|
||||
lore.add(ChatColor.AQUA + "Ultra receives 7500 Coins Monthly");
|
||||
lore.add(ChatColor.LIGHT_PURPLE + "Hero receives 15000 Coins Monthly");
|
||||
lore.add(ChatColor.GREEN + "Legend receives 30000 Coins Monthly");
|
||||
lore.add(ChatColor.WHITE + "");
|
||||
lore.add(ChatColor.WHITE + "Purchase a Rank at;");
|
||||
lore.add(ChatColor.WHITE + "www.mineplex.com/shop");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (isAvailable())
|
||||
if (!hasRank)
|
||||
{
|
||||
material = Material.ENDER_CHEST;
|
||||
itemName = C.cGreen + C.Bold + "Rank Monthly Bonus";
|
||||
|
||||
material = Material.REDSTONE_BLOCK;
|
||||
itemName = C.cRed + ChatColor.BOLD + "Rank Monthly Bonus";
|
||||
lore.add(" ");
|
||||
lore.add(ChatColor.RESET + "Click to Claim!");
|
||||
lore.add(ChatColor.WHITE + "Players with a Rank get a Monthly Bonus!");
|
||||
lore.add(ChatColor.WHITE + "");
|
||||
lore.add(ChatColor.AQUA + "Ultra receives 7500 Coins Monthly");
|
||||
lore.add(ChatColor.LIGHT_PURPLE + "Hero receives 15000 Coins Monthly");
|
||||
lore.add(ChatColor.GREEN + "Legend receives 30000 Coins Monthly");
|
||||
lore.add(ChatColor.WHITE + "");
|
||||
lore.add(ChatColor.WHITE + "Purchase a Rank at;");
|
||||
lore.add(ChatColor.WHITE + "www.mineplex.com/shop");
|
||||
}
|
||||
else
|
||||
{
|
||||
material = Material.REDSTONE_BLOCK;
|
||||
itemName = C.cRed + C.Bold + "Rank Monthly Bonus";
|
||||
if (isAvailable())
|
||||
{
|
||||
material = Material.ENDER_CHEST;
|
||||
itemName = C.cGreen + C.Bold + "Rank Monthly Bonus";
|
||||
|
||||
lore.add(" ");
|
||||
lore.add(ChatColor.RESET + "Click to Claim!");
|
||||
}
|
||||
else
|
||||
{
|
||||
material = Material.REDSTONE_BLOCK;
|
||||
itemName = C.cRed + C.Bold + "Rank Monthly Bonus";
|
||||
|
||||
lore.add(" ");
|
||||
lore.add(ChatColor.RESET + "Next reward in " + UtilTime.convertString(timeLeft(), 0, TimeUnit.FIT) + "!");
|
||||
}
|
||||
|
||||
lore.add(" ");
|
||||
lore.add(ChatColor.RESET + "Next reward in " + UtilTime.convertString(timeLeft(), 0, TimeUnit.FIT) + "!");
|
||||
lore.add(C.cYellow + "Rank: " + C.cWhite + _bonusManager.getClientManager().Get(_player).GetRank().Name);
|
||||
BonusAmount bonusAmount = _bonusManager.getRankBonusAmount(_player);
|
||||
bonusAmount.addLore(lore);
|
||||
}
|
||||
|
||||
lore.add(" ");
|
||||
lore.add(C.cYellow + "Rank: " + C.cWhite + _bonusManager.getClientManager().Get(_player).GetRank().Name);
|
||||
BonusAmount bonusAmount = _bonusManager.getRankBonusAmount(_player);
|
||||
bonusAmount.addLore(lore);
|
||||
}
|
||||
else
|
||||
{
|
||||
itemName = C.cRed + ChatColor.BOLD + "Rank Monthly Bonus";
|
||||
material = Material.REDSTONE_BLOCK;
|
||||
lore.add(" ");
|
||||
lore.add(ChatColor.RESET + "You can claim your Monthly Bonus");
|
||||
lore.add(ChatColor.RESET + "here, starting from September!");
|
||||
}
|
||||
|
||||
|
||||
_item = new ShopItem(material, itemName, lore.toArray(new String[0]), 1, false, false);
|
||||
}
|
||||
|
|
|
@ -51,7 +51,7 @@ public class VoteButton implements GuiItem, Listener {
|
|||
public void setup()
|
||||
{
|
||||
//TODO get url from db
|
||||
_url = "http://minecraftservers.org/vote/121070";
|
||||
_url = _bonusManager.getVoteLink();
|
||||
|
||||
setItem();
|
||||
Bukkit.getPluginManager().registerEvents(this, getPlugin());
|
||||
|
@ -72,17 +72,16 @@ public class VoteButton implements GuiItem, Listener {
|
|||
|
||||
getPlayer().playSound(getPlayer().getLocation(), Sound.NOTE_PLING, 1, 1.6f);
|
||||
|
||||
UtilPlayer.message(getPlayer(), "----------------------------------------");
|
||||
UtilPlayer.message(getPlayer(), "----------------------------------------------------");
|
||||
UtilPlayer.message(getPlayer(), "");
|
||||
|
||||
new JsonMessage("Click to Open in Web Browser").click(ClickEvent.OPEN_URL, _url).sendToPlayer(getPlayer());
|
||||
new JsonMessage(C.cGreen + _url).click(ClickEvent.OPEN_URL, _url).sendToPlayer(getPlayer());
|
||||
|
||||
UtilPlayer.message(getPlayer(), "");
|
||||
UtilPlayer.message(getPlayer(), "----------------------------------------");
|
||||
|
||||
|
||||
|
||||
UtilPlayer.message(getPlayer(), "Please be patient, votes may take a few minutes to register.");
|
||||
UtilPlayer.message(getPlayer(), "");
|
||||
UtilPlayer.message(getPlayer(), "----------------------------------------------------");
|
||||
|
||||
getPlayer().closeInventory();
|
||||
|
||||
}
|
||||
|
@ -131,11 +130,11 @@ public class VoteButton implements GuiItem, Listener {
|
|||
lore.add(" ");
|
||||
|
||||
lore.add(C.cYellow + "Current Streak: " + C.cWhite + client.getVoteStreak());
|
||||
lore.add(C.cYellow + "Streak Bonus: " + C.cWhite + "+" + _bonusManager.getVoteMultiplyer(client) + "%");
|
||||
lore.add(C.cYellow + "Streak Bonus: " + C.cWhite + "+" + _bonusManager.getVoteMultiplyer(client.getVoteStreak()) + "%");
|
||||
if (client.getVoteTime() != null)
|
||||
{
|
||||
long lastBonus = _bonusManager.getLocalTime(client.getVoteTime().getTime());
|
||||
long timeLeft = _bonusManager.getStreakTimeRemaining(lastBonus, BonusManager.STREAK_RESET_TIME);
|
||||
long timeLeft = _bonusManager.getStreakTimeRemaining(lastBonus, BonusManager.VOTE_STREAK_RESET_TIME);
|
||||
|
||||
if (timeLeft > 0)
|
||||
{
|
||||
|
@ -166,7 +165,6 @@ public class VoteButton implements GuiItem, Listener {
|
|||
{
|
||||
if (_url == null)
|
||||
return false;
|
||||
System.out.println(timeLeft());
|
||||
|
||||
return (timeLeft() <= 0);
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
package mineplex.core.bonuses;
|
||||
package mineplex.core.bonuses.redis;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import mineplex.core.bonuses.BonusManager;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.votifier.VotifierCommand;
|
||||
import mineplex.serverdata.commands.CommandCallback;
|
||||
import mineplex.serverdata.commands.ServerCommand;
|
||||
|
||||
|
@ -25,7 +25,7 @@ public class VoteHandler implements CommandCallback
|
|||
|
||||
if (player != null)
|
||||
{
|
||||
_bonusManager.handleVote(player);
|
||||
_bonusManager.handleVote(player, v.getGemsReceived());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,18 +1,18 @@
|
|||
package mineplex.core.votifier;
|
||||
|
||||
import java.util.UUID;
|
||||
package mineplex.core.bonuses.redis;
|
||||
|
||||
import mineplex.serverdata.commands.ServerCommand;
|
||||
|
||||
public class VotifierCommand extends ServerCommand
|
||||
{
|
||||
private String _playerName;
|
||||
private int _gemsReceived;
|
||||
|
||||
public VotifierCommand(String playerName, String... targetServer)
|
||||
public VotifierCommand(String playerName, int gemsReceived, String... targetServer)
|
||||
{
|
||||
super(targetServer);
|
||||
|
||||
_playerName = playerName;
|
||||
_gemsReceived = gemsReceived;
|
||||
}
|
||||
|
||||
public String getPlayerName()
|
||||
|
@ -20,4 +20,9 @@ public class VotifierCommand extends ServerCommand
|
|||
return _playerName;
|
||||
}
|
||||
|
||||
public int getGemsReceived()
|
||||
{
|
||||
return _gemsReceived;
|
||||
}
|
||||
|
||||
}
|
|
@ -18,7 +18,7 @@ public class ChatSlowCommand extends CommandBase<Chat>
|
|||
@Override
|
||||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
if (args != null && args.length == 1)
|
||||
if (args.length == 1)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -48,7 +48,7 @@ public class CommandCenter implements Listener
|
|||
public void OnPlayerCommandPreprocess(PlayerCommandPreprocessEvent event)
|
||||
{
|
||||
String commandName = event.getMessage().substring(1);
|
||||
String[] args = null;
|
||||
String[] args = new String[] {};
|
||||
|
||||
if (commandName.contains(" "))
|
||||
{
|
||||
|
|
|
@ -40,7 +40,7 @@ public abstract class MultiCommandBase<PluginType extends MiniPlugin> extends Co
|
|||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
String commandName = null;
|
||||
String[] newArgs = null;
|
||||
String[] newArgs = new String[] {};
|
||||
|
||||
if (args != null && args.length > 0)
|
||||
{
|
||||
|
|
|
@ -19,6 +19,9 @@ import mineplex.core.common.util.UtilServer;
|
|||
import mineplex.core.cosmetic.ui.CosmeticShop;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.gadgets.OutfitTeam;
|
||||
import mineplex.core.gadget.types.Gadget;
|
||||
import mineplex.core.gadget.types.GadgetType;
|
||||
import mineplex.core.inventory.InventoryManager;
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
import mineplex.core.mount.MountManager;
|
||||
|
@ -191,4 +194,15 @@ public class CosmeticManager extends MiniPlugin
|
|||
{
|
||||
return _treasureManager;
|
||||
}
|
||||
|
||||
public void disableTeamArmor()
|
||||
{
|
||||
for (Gadget gadget : getGadgetManager().getGadgets(GadgetType.Costume))
|
||||
{
|
||||
if (gadget instanceof OutfitTeam)
|
||||
{
|
||||
((OutfitTeam)gadget).setEnabled(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import org.bukkit.entity.Creature;
|
|||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
import mineplex.core.common.CurrencyType;
|
||||
|
@ -20,6 +21,7 @@ import mineplex.core.cosmetic.ui.button.OpenMusic;
|
|||
import mineplex.core.cosmetic.ui.button.OpenParticles;
|
||||
import mineplex.core.cosmetic.ui.button.OpenPets;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.donation.Donor;
|
||||
import mineplex.core.gadget.types.Gadget;
|
||||
import mineplex.core.gadget.types.GadgetType;
|
||||
import mineplex.core.mount.Mount;
|
||||
|
@ -40,7 +42,14 @@ public class Menu extends ShopPageBase<CosmeticManager, CosmeticShop>
|
|||
|
||||
@Override
|
||||
protected void buildPage()
|
||||
{
|
||||
{
|
||||
Donor donor = getDonationManager().Get(getPlayer());
|
||||
|
||||
// addItem(2, new ShopItem(CurrencyType.Gems.GetDisplayMaterial(), donor.GetGems() + " Gems", new String[] {
|
||||
// " "
|
||||
// }, 1, false));
|
||||
|
||||
|
||||
addItem(4, new ShopItem(175, getDonationManager().Get(getPlayer().getName()).getCoins() + " Coins", new String[]
|
||||
{
|
||||
" ",
|
||||
|
@ -54,9 +63,13 @@ public class Menu extends ShopPageBase<CosmeticManager, CosmeticShop>
|
|||
ChatColor.RESET + "Receives 15000 Coins per Month",
|
||||
" ",
|
||||
ChatColor.RESET + C.cGreen + "Legend Rank",
|
||||
ChatColor.RESET + "Recieves 30000 Coins per Month"
|
||||
ChatColor.RESET + "Receives 30000 Coins per Month"
|
||||
}, 1, false));
|
||||
|
||||
// addItem(6, new ShopItem(Material.GOLD_INGOT, donor.getGold() + " Gold", new String[] {
|
||||
// " "
|
||||
// }, 1, false));
|
||||
|
||||
addButton(18, new ShopItem(Material.NETHER_STAR, "Particle Effects", 1, false), new OpenParticles(this));
|
||||
addButton(20, new ShopItem(Material.BOW, "Gadgets", 1, false), new OpenGadgets(this));
|
||||
addButton(22, new ShopItem(Material.LEATHER, "Morphs", 1, false), new OpenMorphs(this));
|
||||
|
|
|
@ -37,7 +37,7 @@ public class MobCommand extends MultiCommandBase<Creature>
|
|||
@Override
|
||||
protected void Help(Player caller, String[] args)
|
||||
{
|
||||
if (args == null)
|
||||
if (args == null || args.length == 0)
|
||||
{
|
||||
HashMap<EntityType, Integer> entMap = new HashMap<EntityType, Integer>();
|
||||
|
||||
|
|
|
@ -442,7 +442,7 @@ public class DisguiseManager extends MiniPlugin implements IPacketHandler
|
|||
return new PacketPlayOutMapChunk(_bedChunk, true, 0, UtilPlayer.is1_8(player) ? 48 : 0);
|
||||
}
|
||||
|
||||
private Packet[] getBedPackets(Location recieving, DisguisePlayer playerDisguise)
|
||||
private Packet[] getBedPackets(Location recieving, DisguisePlayer playerDisguise, boolean is18)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -458,7 +458,7 @@ public class DisguiseManager extends MiniPlugin implements IPacketHandler
|
|||
|
||||
PacketPlayOutEntityTeleport teleportPacket = new PacketPlayOutEntityTeleport(playerDisguise.GetEntity());
|
||||
|
||||
teleportPacket.c += (int) (0.35D * 32);
|
||||
teleportPacket.c += (int) ((is18 ? 0.07D : 0.25D) * 32);
|
||||
|
||||
return new Packet[]
|
||||
{
|
||||
|
@ -502,7 +502,7 @@ public class DisguiseManager extends MiniPlugin implements IPacketHandler
|
|||
&& ((DisguisePlayer) entry.getKey()).getSleepingDirection() != null)
|
||||
{
|
||||
|
||||
packets.addAll(Arrays.asList(getBedPackets(newLoc, (DisguisePlayer) entry.getKey())));
|
||||
packets.addAll(Arrays.asList(getBedPackets(newLoc, (DisguisePlayer) entry.getKey(), UtilPlayer.is1_8(player))));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -853,7 +853,7 @@ public class DisguiseManager extends MiniPlugin implements IPacketHandler
|
|||
|
||||
if (pDisguise.getSleepingDirection() != null)
|
||||
{
|
||||
for (Packet packet : getBedPackets(player.getLocation(), pDisguise))
|
||||
for (Packet packet : getBedPackets(player.getLocation(), pDisguise, UtilPlayer.is1_8(player)))
|
||||
{
|
||||
handlePacket(packet, packetVerifier);
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ public class GemCommand extends CommandBase<DonationManager>
|
|||
{
|
||||
if (args.length < 2)
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("gem", "Missing Args: " + F.elem("/gem <player> <amount>")));
|
||||
UtilPlayer.message(caller, F.main("Gem", "Missing Args: " + F.elem("/gem <player> <amount>")));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -59,7 +59,7 @@ public class GemCommand extends CommandBase<DonationManager>
|
|||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("gem", "Invalid gems Amount"));
|
||||
UtilPlayer.message(caller, F.main("Gem", "Invalid gems Amount"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -71,16 +71,16 @@ public class GemCommand extends CommandBase<DonationManager>
|
|||
{
|
||||
if (completed)
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("gem", "You gave " + F.elem(gems + " gems") + " to " + F.name(targetName) + "."));
|
||||
UtilPlayer.message(caller, F.main("Gem", "You gave " + F.elem(gems + " gems") + " to " + F.name(targetName) + "."));
|
||||
|
||||
if (target != null)
|
||||
{
|
||||
UtilPlayer.message(target, F.main("gem", F.name(caller.getName()) + " gave you " + F.elem(gems + " gems") + "."));
|
||||
UtilPlayer.message(target, F.main("Gem", F.name(caller.getName()) + " gave you " + F.elem(gems + " gems") + "."));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("gem", "There was an error giving " + F.elem(gems + " gems") + " to " + F.name(targetName) + "."));
|
||||
UtilPlayer.message(caller, F.main("Gem", "There was an error giving " + F.elem(gems + " gems") + " to " + F.name(targetName) + "."));
|
||||
}
|
||||
}
|
||||
}, caller.getName(), targetName, uuid, gems);
|
||||
|
|
|
@ -23,6 +23,7 @@ public class GoldCommand extends CommandBase<DonationManager>
|
|||
if (args == null || args.length == 0)
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Gold", "Your Gold: " + F.elem("" + Plugin.Get(caller).getGold())));
|
||||
return;
|
||||
}
|
||||
else if (args.length < 2)
|
||||
{
|
||||
|
|
|
@ -159,7 +159,7 @@ public class FriendRepository extends RepositoryBase
|
|||
Set<String> friendNames = new HashSet<String>();
|
||||
for(FriendStatus status : friendData.getFriends())
|
||||
{
|
||||
friendNames.add(status.Name);
|
||||
friendNames.add(status.Name.toLowerCase());
|
||||
}
|
||||
|
||||
// Load PlayerStatus' for friends
|
||||
|
@ -188,7 +188,7 @@ public class FriendRepository extends RepositoryBase
|
|||
*/
|
||||
public String fetchPlayerServer(String playerName)
|
||||
{
|
||||
PlayerStatus status = _repository.getElement(playerName);
|
||||
PlayerStatus status = _repository.getElement(playerName.toLowerCase());
|
||||
|
||||
return (status == null) ? null : status.getServer();
|
||||
}
|
||||
|
|
|
@ -18,9 +18,15 @@ import org.bukkit.event.EventHandler;
|
|||
import org.bukkit.event.entity.ProjectileHitEvent;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.UtilBlock;
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
import mineplex.core.common.util.UtilParticle;
|
||||
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.event.GadgetBlockEvent;
|
||||
import mineplex.core.gadget.types.ItemGadget;
|
||||
|
@ -30,16 +36,17 @@ import mineplex.core.updater.event.UpdateEvent;
|
|||
public class ItemPaintballGun extends ItemGadget
|
||||
{
|
||||
private HashSet<Projectile> _balls = new HashSet<Projectile>();
|
||||
|
||||
public ItemPaintballGun(GadgetManager manager)
|
||||
|
||||
public ItemPaintballGun(GadgetManager manager)
|
||||
{
|
||||
super(manager, "Paintball Gun", new String[]
|
||||
{
|
||||
super(manager, "Paintball Gun", new String[]
|
||||
{
|
||||
C.cWhite + "PEW PEW PEW PEW!",
|
||||
},
|
||||
-1,
|
||||
Material.GOLD_BARDING, (byte)0,
|
||||
200, new Ammo("Paintball Gun", "100 Paintballs", Material.GOLD_BARDING, (byte)0, new String[] { C.cWhite + "100 Paintballs for you to shoot!" }, 500, 100));
|
||||
}, -1, Material.GOLD_BARDING, (byte) 0, 200, new Ammo("Paintball Gun", "100 Paintballs", Material.GOLD_BARDING,
|
||||
(byte) 0, new String[]
|
||||
{
|
||||
C.cWhite + "100 Paintballs for you to shoot!"
|
||||
}, 500, 100));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -48,38 +55,56 @@ public class ItemPaintballGun extends ItemGadget
|
|||
Projectile proj = player.launchProjectile(EnderPearl.class);
|
||||
proj.setVelocity(proj.getVelocity().multiply(2));
|
||||
_balls.add(proj);
|
||||
|
||||
//Sound
|
||||
|
||||
// Sound
|
||||
player.getWorld().playSound(player.getLocation(), Sound.CHICKEN_EGG_POP, 1.5f, 1.2f);
|
||||
}
|
||||
|
||||
|
||||
@EventHandler
|
||||
public void Paint(ProjectileHitEvent event)
|
||||
{
|
||||
if (!_balls.remove(event.getEntity()))
|
||||
return;
|
||||
|
||||
Location loc = event.getEntity().getLocation().add(event.getEntity().getVelocity());
|
||||
loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 49);
|
||||
|
||||
Location loc = event.getEntity().getLocation();
|
||||
|
||||
Vector vec = event.getEntity().getVelocity().normalize().multiply(0.05);
|
||||
|
||||
if (vec.length() > 0)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
while (UtilBlock.airFoliage(loc.getBlock()))
|
||||
{
|
||||
loc.add(vec);
|
||||
|
||||
if (i++ > 50)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
loc.getWorld().playSound(loc, Sound.DIG_STONE, 1.3F, 1.3F);
|
||||
|
||||
UtilParticle.PlayParticle(ParticleType.RED_DUST, loc, 0.2F, 0.2F, 0.2F, 1, 70, ViewDist.LONG, UtilServer.getPlayers());
|
||||
}
|
||||
|
||||
|
||||
@EventHandler
|
||||
public void Teleport(PlayerTeleportEvent event)
|
||||
{
|
||||
if (event.getCause() == TeleportCause.ENDER_PEARL)
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
|
||||
@EventHandler
|
||||
public void cleanupBalls(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.SLOW)
|
||||
return;
|
||||
|
||||
|
||||
for (Iterator<Projectile> ballIterator = _balls.iterator(); ballIterator.hasNext();)
|
||||
{
|
||||
Projectile ball = ballIterator.next();
|
||||
|
||||
|
||||
if (ball.isDead() || !ball.isValid())
|
||||
ballIterator.remove();
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@ import mineplex.core.common.util.UtilEvent;
|
|||
import mineplex.core.common.util.UtilGear;
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.common.util.UtilEvent.ActionType;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.types.ItemGadget;
|
||||
|
@ -35,6 +36,8 @@ public class ItemPaintbrush extends ItemGadget
|
|||
private NautHashMap<String, Byte> _brushColor = new NautHashMap<String, Byte>();
|
||||
private NautHashMap<String, Location> _brushPrevious = new NautHashMap<String, Location>();
|
||||
|
||||
private NautHashMap<String, Location> _playerLocation = new NautHashMap<String, Location>();
|
||||
|
||||
public ItemPaintbrush(GadgetManager manager)
|
||||
{
|
||||
super(manager, "Paintbrush", new String[]
|
||||
|
@ -83,6 +86,7 @@ public class ItemPaintbrush extends ItemGadget
|
|||
ApplyItem(player, true);
|
||||
|
||||
_brushColor.put(player.getName(), (byte)15);
|
||||
_playerLocation.put(player.getName(), player.getLocation());
|
||||
}
|
||||
|
||||
|
||||
|
@ -91,6 +95,7 @@ public class ItemPaintbrush extends ItemGadget
|
|||
{
|
||||
_brushColor.remove(player.getName());
|
||||
_brushPrevious.remove(player.getName());
|
||||
_playerLocation.remove(player.getName());
|
||||
|
||||
RemoveItem(player);
|
||||
}
|
||||
|
@ -115,6 +120,27 @@ public class ItemPaintbrush extends ItemGadget
|
|||
player.playSound(player.getLocation(), Sound.ORB_PICKUP, 2f, 1f);
|
||||
}
|
||||
|
||||
|
||||
@EventHandler
|
||||
public void disableDistance(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.SEC)
|
||||
return;
|
||||
|
||||
for (Player player : UtilServer.getPlayers())
|
||||
{
|
||||
if (!GetActive().contains(player))
|
||||
continue;
|
||||
|
||||
Location loc = _playerLocation.get(player.getName());
|
||||
|
||||
if (loc == null || UtilMath.offset(player.getLocation(), loc) > 12)
|
||||
{
|
||||
Disable(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void paint(UpdateEvent event)
|
||||
{
|
||||
|
|
|
@ -27,6 +27,8 @@ import mineplex.core.recharge.Recharge;
|
|||
|
||||
public class OutfitTeam extends OutfitGadget
|
||||
{
|
||||
private boolean _enabled = true;
|
||||
|
||||
private HashMap<String, Color> _colorSetting = new HashMap<String, Color>();
|
||||
|
||||
public OutfitTeam(GadgetManager manager, String name,
|
||||
|
@ -100,6 +102,9 @@ public class OutfitTeam extends OutfitGadget
|
|||
@EventHandler(priority=EventPriority.LOWEST)
|
||||
public void setColor(PlayerCommandPreprocessEvent event)
|
||||
{
|
||||
if (!_enabled)
|
||||
return;
|
||||
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if (!event.getMessage().toLowerCase().startsWith("/team"))
|
||||
|
@ -235,4 +240,9 @@ public class OutfitTeam extends OutfitGadget
|
|||
{
|
||||
return _colorSetting.get(player.getName());
|
||||
}
|
||||
|
||||
public void setEnabled(boolean var)
|
||||
{
|
||||
_enabled = var;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ import org.bukkit.inventory.ItemStack;
|
|||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import mineplex.core.MiniPlugin;
|
||||
import mineplex.core.common.structs.ItemContainer;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilInv;
|
||||
import mineplex.core.common.util.UtilItem;
|
||||
|
@ -65,7 +66,7 @@ public class Give extends MiniPlugin
|
|||
public void give(Player player, String target, String itemNames, String amount, String enchants)
|
||||
{
|
||||
//Item
|
||||
LinkedList<Entry<Material, Byte>> itemList = new LinkedList<Entry<Material, Byte>>();
|
||||
LinkedList<ItemContainer> itemList = new LinkedList<ItemContainer>();
|
||||
itemList = UtilItem.matchItem(player, itemNames, true);
|
||||
if (itemList.isEmpty())
|
||||
return;
|
||||
|
@ -128,11 +129,15 @@ public class Give extends MiniPlugin
|
|||
if (givenList.length() > 0)
|
||||
givenList = givenList.substring(0, givenList.length()-1);
|
||||
|
||||
for (Entry<Material, Byte> curItem : itemList)
|
||||
for (ItemContainer curItem : itemList)
|
||||
{
|
||||
for (Player cur : giveList)
|
||||
{
|
||||
ItemStack stack = ItemStackFactory.Instance.CreateStack(curItem.getKey(), curItem.getValue(), count);
|
||||
ItemStack stack;
|
||||
if (curItem.Name == null)
|
||||
stack = ItemStackFactory.Instance.CreateStack(curItem.Type, curItem.Data, count);
|
||||
else
|
||||
stack = ItemStackFactory.Instance.CreateStack(curItem.Type, curItem.Data, count, curItem.Name);
|
||||
|
||||
//Enchants
|
||||
stack.addUnsafeEnchantments(enchs);
|
||||
|
@ -142,18 +147,18 @@ public class Give extends MiniPlugin
|
|||
{
|
||||
//Inform
|
||||
if (!cur.equals(player))
|
||||
UtilPlayer.message(cur, F.main("Give", "You received " + F.item(count + " " + ItemStackFactory.Instance.GetName(curItem.getKey(), curItem.getValue(), false)) + " from " + F.elem(player.getName()) + "."));
|
||||
UtilPlayer.message(cur, F.main("Give", "You received " + F.item(count + " " + ItemStackFactory.Instance.GetName(curItem.Type, curItem.Data, false)) + " from " + F.elem(player.getName()) + "."));
|
||||
}
|
||||
}
|
||||
|
||||
if (target.equalsIgnoreCase("all"))
|
||||
UtilPlayer.message(player, F.main("Give", "You gave " + F.item(count + " " + ItemStackFactory.Instance.GetName(curItem.getKey(), curItem.getValue(), false)) + " to " + F.elem("ALL")) + ".");
|
||||
UtilPlayer.message(player, F.main("Give", "You gave " + F.item(count + " " + ItemStackFactory.Instance.GetName(curItem.Type, curItem.Data, false)) + " to " + F.elem("ALL")) + ".");
|
||||
|
||||
else if (giveList.size() > 1)
|
||||
UtilPlayer.message(player, F.main("Give", "You gave " + F.item(count + " " + ItemStackFactory.Instance.GetName(curItem.getKey(), curItem.getValue(), false)) + " to " + F.elem(givenList) + "."));
|
||||
UtilPlayer.message(player, F.main("Give", "You gave " + F.item(count + " " + ItemStackFactory.Instance.GetName(curItem.Type, curItem.Data, false)) + " to " + F.elem(givenList) + "."));
|
||||
|
||||
else
|
||||
UtilPlayer.message(player, F.main("Give", "You gave " + F.item(count + " " + ItemStackFactory.Instance.GetName(curItem.getKey(), curItem.getValue(), false)) + " to " + F.elem(giveList.getFirst().getName()) + "."));
|
||||
UtilPlayer.message(player, F.main("Give", "You gave " + F.item(count + " " + ItemStackFactory.Instance.GetName(curItem.Type, curItem.Data, false)) + " to " + F.elem(giveList.getFirst().getName()) + "."));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -532,8 +532,6 @@ public class Hologram
|
|||
if (newText.equals(_hologramText))
|
||||
return this;
|
||||
|
||||
_makeSpawnPackets = true;
|
||||
|
||||
if (isInUse())
|
||||
{
|
||||
int[] destroy1_7 = new int[0];
|
||||
|
@ -632,6 +630,7 @@ public class Hologram
|
|||
}
|
||||
|
||||
_hologramText = newText;
|
||||
makeSpawnPackets();
|
||||
|
||||
return this;
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ public class AdminCommand extends CommandBase<MessageManager>
|
|||
@Override
|
||||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
if (args == null)
|
||||
if (args == null || args.length == 0)
|
||||
{
|
||||
Plugin.Help(caller);
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ public class AdminMessageCommand extends CommandBase<MessageManager>
|
|||
@Override
|
||||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
if (args == null)
|
||||
if (args == null || args.length == 0)
|
||||
{
|
||||
Plugin.Help(caller);
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ public class AnnounceCommand extends CommandBase<MessageManager>
|
|||
@Override
|
||||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
if (args == null)
|
||||
if (args == null || args.length == 0)
|
||||
{
|
||||
Plugin.Help(caller);
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ public class GlobalCommand extends CommandBase<MessageManager>
|
|||
@Override
|
||||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
if (args == null)
|
||||
if (args == null || args.length == 0)
|
||||
{
|
||||
Plugin.Help(caller);
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ public class MessageAdminCommand extends CommandBase<MessageManager>
|
|||
@Override
|
||||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
if (args == null)
|
||||
if (args == null || args.length == 0)
|
||||
{
|
||||
Plugin.Help(caller);
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ public class MessageCommand extends CommandBase<MessageManager>
|
|||
@Override
|
||||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
if (args == null)
|
||||
if (args == null || args.length == 0)
|
||||
{
|
||||
Plugin.Help(caller);
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ public class ResendAdminCommand extends CommandBase<MessageManager>
|
|||
@Override
|
||||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
if (args == null)
|
||||
if (args == null || args.length == 0)
|
||||
{
|
||||
Plugin.Help(caller);
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ public class ResendCommand extends CommandBase<MessageManager>
|
|||
@Override
|
||||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
if (args == null)
|
||||
if (args == null || args.length == 0)
|
||||
{
|
||||
Plugin.Help(caller);
|
||||
}
|
||||
|
|
|
@ -42,8 +42,8 @@ public class NotificationManager extends MiniPlugin
|
|||
if (!_enabled)
|
||||
return;
|
||||
|
||||
if (event.getType() == UpdateType.MIN_08)
|
||||
hugeSale();
|
||||
// if (event.getType() == UpdateType.MIN_08)
|
||||
// hugeSale();
|
||||
|
||||
// if (event.getType() == UpdateType.MIN_16)
|
||||
// sale();
|
||||
|
|
|
@ -19,7 +19,7 @@ public class AddCommand extends CommandBase<NpcManager>
|
|||
@Override
|
||||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
if (args == null)
|
||||
if (args == null || args.length == 0)
|
||||
Plugin.help(caller);
|
||||
else
|
||||
{
|
||||
|
|
|
@ -20,7 +20,7 @@ public class ClearCommand extends CommandBase<NpcManager>
|
|||
@Override
|
||||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
if (args != null)
|
||||
if (args.length > 0)
|
||||
Plugin.help(caller);
|
||||
else
|
||||
{
|
||||
|
|
|
@ -18,7 +18,7 @@ public class DeleteCommand extends CommandBase<NpcManager>
|
|||
@Override
|
||||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
if (args != null)
|
||||
if (args.length > 0)
|
||||
Plugin.help(caller);
|
||||
else
|
||||
{
|
||||
|
|
|
@ -18,7 +18,7 @@ public class HomeCommand extends CommandBase<NpcManager>
|
|||
@Override
|
||||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
if (args != null)
|
||||
if (args.length > 0)
|
||||
Plugin.help(caller);
|
||||
else
|
||||
{
|
||||
|
|
|
@ -20,7 +20,7 @@ public class RefreshCommand extends CommandBase<NpcManager>
|
|||
@Override
|
||||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
if (args != null)
|
||||
if (args.length > 0)
|
||||
Plugin.help(caller);
|
||||
else
|
||||
{
|
||||
|
|
|
@ -50,7 +50,8 @@ public class PacketHandler extends MiniPlugin
|
|||
|
||||
Method method = ProtocolInjector.class.getDeclaredMethod("addPacket", EnumProtocol.class,boolean.class, int.class, Class.class);
|
||||
method.setAccessible(true);
|
||||
|
||||
|
||||
method.invoke(null, EnumProtocol.PLAY, true, 67, PacketPlayOutCamera.class);
|
||||
method.invoke(null, EnumProtocol.PLAY, true, 68, PacketPlayOutWorldBorder.class);
|
||||
|
||||
// EnumProtocol.PLAY.b().put(68, PacketPlayOutWorldBorder.class);
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
package mineplex.core.packethandler;
|
||||
|
||||
import org.bukkit.entity.Entity;
|
||||
|
||||
import net.minecraft.server.v1_7_R4.Packet;
|
||||
import net.minecraft.server.v1_7_R4.PacketDataSerializer;
|
||||
import net.minecraft.server.v1_7_R4.PacketListener;
|
||||
|
||||
public class PacketPlayOutCamera extends Packet
|
||||
{
|
||||
public int a;
|
||||
|
||||
public PacketPlayOutCamera()
|
||||
{
|
||||
}
|
||||
|
||||
public PacketPlayOutCamera(int id)
|
||||
{
|
||||
a = id;
|
||||
}
|
||||
|
||||
public PacketPlayOutCamera(Entity paramEntity)
|
||||
{
|
||||
this.a = paramEntity.getEntityId();
|
||||
}
|
||||
|
||||
public void a(PacketDataSerializer paramPacketDataSerializer)
|
||||
{
|
||||
}
|
||||
|
||||
public void b(PacketDataSerializer paramPacketDataSerializer)
|
||||
{
|
||||
paramPacketDataSerializer.b(this.a);
|
||||
}
|
||||
|
||||
public void a(PacketListener paramPacketListenerPlayOut)
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(PacketListener arg0)
|
||||
{
|
||||
}
|
||||
}
|
|
@ -26,14 +26,34 @@ public class PetRepository extends RepositoryBase
|
|||
_webAddress = webAddress;
|
||||
}
|
||||
|
||||
public void AddPet(PetChangeToken token)
|
||||
public void AddPet(final PetChangeToken token)
|
||||
{
|
||||
new AsyncJsonWebCall(_webAddress + "Pets/AddPet").Execute(token);
|
||||
|
||||
Plugin.getServer().getScheduler().runTaskAsynchronously(Plugin, new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
executeInsert("INSERT INTO accountPets(petName, petId, accountId) VALUES (?, ?, ?);", null, new ColumnVarChar("petName", 32, token.PetName)
|
||||
, new ColumnInt("petId", token.PetId)
|
||||
, new ColumnInt("accountId", token.AccountId));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void RemovePet(PetChangeToken token)
|
||||
public void RemovePet(final PetChangeToken token)
|
||||
{
|
||||
new AsyncJsonWebCall(_webAddress + "Pets/RemovePet").Execute(token);
|
||||
|
||||
Plugin.getServer().getScheduler().runTaskAsynchronously(Plugin, new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
executeUpdate("DELETE FROM accountPets WHERE petId = ? AND accountId = ?;"
|
||||
, new ColumnInt("petId", token.PetId)
|
||||
, new ColumnInt("accountId", token.AccountId));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public List<PetExtraToken> GetPetExtras(List<PetExtraToken> petExtraTokens)
|
||||
|
@ -41,20 +61,26 @@ public class PetRepository extends RepositoryBase
|
|||
return new JsonWebCall(_webAddress + "Pets/GetPetExtras").Execute(new TypeToken<List<PetExtraToken>>(){}.getType(), petExtraTokens);
|
||||
}
|
||||
|
||||
public void UpdatePet(PetChangeToken token)
|
||||
public void UpdatePet(final PetChangeToken token)
|
||||
{
|
||||
new AsyncJsonWebCall(_webAddress + "Pets/UpdatePet").Execute(token);
|
||||
|
||||
int rowsChanged = executeUpdate("UPDATE accountPets SET petName = ? WHERE petId = ? AND accountId = ?;", new ColumnVarChar("petName", 32, token.PetName)
|
||||
|
||||
Plugin.getServer().getScheduler().runTaskAsynchronously(Plugin, new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
int rowsChanged = executeUpdate("UPDATE accountPets SET petName = ? WHERE petId = ? AND accountId = ?;", new ColumnVarChar("petName", 32, token.PetName)
|
||||
, new ColumnInt("petId", token.PetId)
|
||||
, new ColumnInt("accountId", token.AccountId));
|
||||
|
||||
if (rowsChanged < 1)
|
||||
{
|
||||
executeInsert("INSERT INTO accountPets(petName, petId, accountId) VALUES (?, ?, ?);", null, new ColumnVarChar("petName", 32, token.PetName)
|
||||
, new ColumnInt("petId", token.PetId)
|
||||
, new ColumnInt("accountId", token.AccountId));
|
||||
|
||||
if (rowsChanged < 1)
|
||||
{
|
||||
executeInsert("INSERT INTO accountPets(petName, petId, accountId) VALUES (?, ?, ?);", null, new ColumnVarChar("petName", 32, token.PetName)
|
||||
, new ColumnInt("petId", token.PetId)
|
||||
, new ColumnInt("accountId", token.AccountId));
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -149,6 +149,7 @@ public class PollManager extends MiniDbClientPlugin<PlayerPollData>
|
|||
{
|
||||
final String name = player.getName();
|
||||
final UUID uuid = player.getUniqueId();
|
||||
final int accountId = getClientManager().getAccountId(player);
|
||||
|
||||
// First update answer locally so we know it was answered
|
||||
Get(player).addAnswer(poll.getId(), answer);
|
||||
|
@ -169,17 +170,28 @@ public class PollManager extends MiniDbClientPlugin<PlayerPollData>
|
|||
{
|
||||
if (completed)
|
||||
{
|
||||
// Need to get out of Async code
|
||||
_plugin.getServer().getScheduler().runTask(_plugin, new Runnable()
|
||||
_donationManager.RewardCoins(new Callback<Boolean>()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
public void run(Boolean completed)
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Poll", "Thanks for your response!"));
|
||||
player.playSound(player.getEyeLocation(), Sound.LEVEL_UP, 1F, 0);
|
||||
UtilPlayer.message(player, F.main("Gem", "You received " + F.elem(poll.getCoinReward() + "") + " Gems!"));
|
||||
if (completed)
|
||||
{
|
||||
// Need to get out of Async code
|
||||
_plugin.getServer().getScheduler().runTask(_plugin, new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Carl", "Thanks for your response!"));
|
||||
player.playSound(player.getEyeLocation(), Sound.LEVEL_UP, 1F, 0);
|
||||
UtilPlayer.message(player, F.main("Carl", "You received " + F.elem(poll.getCoinReward() + "") + " Gems!"));
|
||||
UtilPlayer.message(player, F.main("Carl", "You received " + F.elem(poll.getCoinReward() + "") + " Coins!"));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}, "Poll", name, accountId, poll.getCoinReward());
|
||||
}
|
||||
}
|
||||
}, "Poll", name, uuid, poll.getCoinReward());
|
||||
|
|
|
@ -12,12 +12,12 @@ public class PreferencesShop extends ShopBase<PreferencesManager>
|
|||
{
|
||||
public PreferencesShop(PreferencesManager plugin, CoreClientManager clientManager, mineplex.core.donation.DonationManager donationManager)
|
||||
{
|
||||
super(plugin, clientManager, donationManager, "User Preferences");
|
||||
super(plugin, clientManager, donationManager, "My Preferences");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ShopPageBase<PreferencesManager, ? extends ShopBase<PreferencesManager>> buildPagesFor(Player player)
|
||||
{
|
||||
return new PreferencesPage(getPlugin(), this, getClientManager(), getDonationManager(), " " + ChatColor.UNDERLINE + "User Preferences", player);
|
||||
return new PreferencesPage(getPlugin(), this, getClientManager(), getDonationManager(),"My Preferences", player);
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package mineplex.core.projectile;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
|
@ -13,6 +14,7 @@ import org.bukkit.Effect;
|
|||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.inventory.InventoryPickupItemEvent;
|
||||
|
@ -75,10 +77,63 @@ public class ProjectileManager extends MiniPlugin
|
|||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle,
|
||||
Sound sound, float soundVolume, float soundPitch, ParticleType particle, float pX, float pY, float pZ, float pS, int pC, UpdateType effectRate, float hitboxMult)
|
||||
{
|
||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||
expireTime, hitPlayer, hitBlock, idle, false,
|
||||
sound, soundVolume, soundPitch, null, 0, effectRate, particle, pX, pY, pZ, pS, pC, hitboxMult));
|
||||
}
|
||||
|
||||
// WITH CAN HIT PLAYERS LIST:
|
||||
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle, float hitboxGrow, List<Player> canHit)
|
||||
{
|
||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||
expireTime, hitPlayer, hitBlock, idle, false,
|
||||
null, 1f, 1f, null, 0, null, null, 0F, 0F, 0F, 0F, 1, hitboxGrow, canHit));
|
||||
}
|
||||
|
||||
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle, boolean pickup, float hitboxGrow, List<Player> canHit)
|
||||
{
|
||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||
expireTime, hitPlayer, hitBlock, idle, pickup,
|
||||
null, 1f, 1f, null, 0, null, null, 0F, 0F, 0F, 0F, 1, hitboxGrow, canHit));
|
||||
}
|
||||
|
||||
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle,
|
||||
Sound sound, float soundVolume, float soundPitch, Effect effect, int effectData, UpdateType effectRate , float hitboxGrow, List<Player> canHit)
|
||||
{
|
||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||
expireTime, hitPlayer, hitBlock, idle, false,
|
||||
sound, soundVolume, soundPitch, effect, effectData, effectRate, null, 0F, 0F, 0F, 0F, 1, hitboxGrow, canHit));
|
||||
}
|
||||
|
||||
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle,
|
||||
Sound sound, float soundVolume, float soundPitch, ParticleType particle, Effect effect, int effectData, UpdateType effectRate, float hitboxGrow, List<Player> canHit)
|
||||
{
|
||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||
expireTime, hitPlayer, hitBlock, idle, false,
|
||||
sound, soundVolume, soundPitch, effect, effectData, effectRate, particle, 0F, 0F, 0F, 0F, 1, hitboxGrow, canHit));
|
||||
}
|
||||
|
||||
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle,
|
||||
Sound sound, float soundVolume, float soundPitch, ParticleType particle, UpdateType effectRate, float hitboxMult, List<Player> canHit)
|
||||
{
|
||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||
expireTime, hitPlayer, hitBlock, idle, false,
|
||||
sound, soundVolume, soundPitch, null, 0, effectRate, particle, 0F, 0F, 0F, 0F, 1, hitboxMult, canHit));
|
||||
}
|
||||
|
||||
public void AddThrow(Entity thrown, LivingEntity thrower, IThrown callback,
|
||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle,
|
||||
Sound sound, float soundVolume, float soundPitch, ParticleType particle, float pX, float pY, float pZ, float pS, int pC, UpdateType effectRate, float hitboxMult, List<Player> canHit)
|
||||
{
|
||||
_thrown.put(thrown, new ProjectileUser(this, thrown, thrower, callback,
|
||||
expireTime, hitPlayer, hitBlock, idle, false,
|
||||
sound, soundVolume, soundPitch, null, 0, effectRate, particle, pX, pY, pZ, pS, pC, hitboxMult, canHit));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void Update(UpdateEvent event)
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package mineplex.core.projectile;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import mineplex.core.common.util.UtilBlock;
|
||||
import mineplex.core.common.util.UtilParticle;
|
||||
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||
|
@ -55,13 +57,51 @@ public class ProjectileUser
|
|||
private UpdateType _effectRate = UpdateType.TICK;
|
||||
|
||||
private double _hitboxGrow;
|
||||
|
||||
private List<Player> _canHit;
|
||||
|
||||
public ProjectileUser(ProjectileManager throwInput, Entity thrown, LivingEntity thrower, IThrown callback,
|
||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle, boolean pickup,
|
||||
Sound sound, float soundVolume, float soundPitch,
|
||||
Effect effect, int effectData, UpdateType effectRate,
|
||||
ParticleType particle, float particleX, float particleY,
|
||||
float particleZ, float particleS, int particleC, double hitboxMult)
|
||||
{
|
||||
Throw = throwInput;
|
||||
|
||||
_thrown = thrown;
|
||||
_thrower = thrower;
|
||||
_callback = callback;
|
||||
|
||||
_expireTime = expireTime;
|
||||
_hitPlayer = hitPlayer;
|
||||
_hitBlock = hitBlock;
|
||||
_idle = idle;
|
||||
_pickup = pickup;
|
||||
|
||||
_sound = sound;
|
||||
_soundVolume = soundVolume;
|
||||
_soundPitch = soundPitch;
|
||||
_particle = particle;
|
||||
_particleX = particleX;
|
||||
_particleY = particleY;
|
||||
_particleZ = particleZ;
|
||||
_particleS = particleS;
|
||||
_particleC = particleC;
|
||||
_effect = effect;
|
||||
_effectData = effectData;
|
||||
_effectRate = effectRate;
|
||||
|
||||
_hitboxGrow = hitboxMult;
|
||||
_canHit = null;
|
||||
}
|
||||
|
||||
public ProjectileUser(ProjectileManager throwInput, Entity thrown, LivingEntity thrower, IThrown callback,
|
||||
long expireTime, boolean hitPlayer, boolean hitBlock, boolean idle, boolean pickup,
|
||||
Sound sound, float soundVolume, float soundPitch,
|
||||
Effect effect, int effectData, UpdateType effectRate,
|
||||
ParticleType particle, float particleX, float particleY,
|
||||
float particleZ, float particleS, int particleC, double hitboxMult)
|
||||
float particleZ, float particleS, int particleC, double hitboxMult, List<Player> canHit)
|
||||
{
|
||||
Throw = throwInput;
|
||||
|
||||
|
@ -89,6 +129,7 @@ public class ProjectileUser
|
|||
_effectRate = effectRate;
|
||||
|
||||
_hitboxGrow = hitboxMult;
|
||||
_canHit = canHit;
|
||||
}
|
||||
|
||||
public void Effect(UpdateEvent event)
|
||||
|
@ -152,11 +193,22 @@ public class ProjectileUser
|
|||
if (ent.equals(_thrower))
|
||||
continue;
|
||||
|
||||
//Creative or Spec
|
||||
//Creative or Spec or No Hit
|
||||
if (ent instanceof Player)
|
||||
if (((Player)ent).getGameMode() == GameMode.CREATIVE || UtilPlayer.isSpectator(ent))
|
||||
{
|
||||
if (((Player)ent).getGameMode() == GameMode.CREATIVE)
|
||||
continue;
|
||||
|
||||
if (UtilPlayer.isSpectator(ent))
|
||||
continue;
|
||||
|
||||
if (_canHit != null)
|
||||
{
|
||||
if (!_canHit.contains(((Player)ent)))
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
//float f1 = (float)(nmsEntity.boundingBox.a() * 0.6f);
|
||||
AxisAlignedBB axisalignedbb1 = ((CraftEntity)ent).getHandle().boundingBox.grow(1F, 1F, 1F);
|
||||
MovingObjectPosition entityCollisionPosition = axisalignedbb1.a(vec3d, vec3d1);
|
||||
|
|
|
@ -301,6 +301,8 @@ public class RewardManager
|
|||
new ItemStack(Material.SKULL_ITEM, 1, (short) 0, (byte) 1), rarity, 25));
|
||||
addReward(new UnknownPackageReward(donationManager, "Block Morph", "Block Morph",
|
||||
new ItemStack(Material.EMERALD_BLOCK), rarity, 20));
|
||||
addReward(new UnknownPackageReward(donationManager, "Big Larry Morph", "Big Larry Morph",
|
||||
new ItemStack(Material.SLIME_BALL), rarity, 10));
|
||||
|
||||
// Particles
|
||||
addReward(new UnknownPackageReward(donationManager, "Shadow Walk Particles", "Shadow Walk",
|
||||
|
|
|
@ -35,13 +35,13 @@ public class ExperienceReward extends Reward
|
|||
|
||||
_statsManager.incrementStat(player, "Global.ExpEarned", experience);
|
||||
|
||||
return new RewardData(getRarity().getColor() + experience + " Experience", new ItemStack(Material.EXP_BOTTLE), RewardRarity.GAME);
|
||||
return new RewardData(getRarity().getColor() + experience + " Experience", new ItemStack(Material.EXP_BOTTLE), getRarity());
|
||||
}
|
||||
|
||||
@Override
|
||||
public RewardData getFakeRewardData(Player player)
|
||||
{
|
||||
return new RewardData(getRarity().getColor() + "Experience", new ItemStack(Material.EXP_BOTTLE), RewardRarity.GAME);
|
||||
return new RewardData(getRarity().getColor() + "Experience", new ItemStack(Material.EXP_BOTTLE), getRarity());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -49,7 +49,7 @@ public class BackCommand extends CommandBase<Teleport>
|
|||
int back = 0;
|
||||
for (int i = 0 ; i < amount ; i++)
|
||||
{
|
||||
if (Plugin.GetTPHistory(player).isEmpty())
|
||||
if (Plugin.GetTPHistory(player) == null || Plugin.GetTPHistory(player).isEmpty())
|
||||
break;
|
||||
|
||||
loc = Plugin.GetTPHistory(player).removeFirst();
|
||||
|
|
|
@ -97,6 +97,7 @@ public class TreasureLocation implements Listener
|
|||
return;
|
||||
}
|
||||
|
||||
// Treasure is now being opened
|
||||
setHoloChestVisible(false);
|
||||
|
||||
if (treasureType == TreasureType.ANCIENT)
|
||||
|
@ -123,6 +124,7 @@ public class TreasureLocation implements Listener
|
|||
|
||||
player.teleport(teleportLocation);
|
||||
|
||||
_treasureManager.addOpenStat(player, treasureType);
|
||||
}
|
||||
|
||||
private boolean chargeAccount(Player player, TreasureType treasureType)
|
||||
|
|
|
@ -31,6 +31,7 @@ public class TreasureManager extends MiniPlugin
|
|||
private InventoryManager _inventoryManager;
|
||||
private BlockRestore _blockRestore;
|
||||
private HologramManager _hologramManager;
|
||||
private StatsManager _statsManager;
|
||||
private List<TreasureLocation> _treasureLocations;
|
||||
|
||||
public TreasureManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, InventoryManager inventoryManager, PetManager petManager, BlockRestore blockRestore, HologramManager hologramManager, StatsManager statsManager)
|
||||
|
@ -40,6 +41,7 @@ public class TreasureManager extends MiniPlugin
|
|||
_inventoryManager = inventoryManager;
|
||||
_blockRestore = blockRestore;
|
||||
_hologramManager = hologramManager;
|
||||
_statsManager = statsManager;
|
||||
_rewardManager = new RewardManager(clientManager, donationManager, _inventoryManager, petManager, statsManager,
|
||||
100, 250,
|
||||
500, 1000,
|
||||
|
@ -121,6 +123,11 @@ public class TreasureManager extends MiniPlugin
|
|||
}
|
||||
}
|
||||
|
||||
public void addOpenStat(Player player, TreasureType treasureType)
|
||||
{
|
||||
_statsManager.incrementStat(player, "Global.Treasure." + treasureType.getStatName(), 1);
|
||||
}
|
||||
|
||||
public Reward[] getRewards(Player player, RewardType rewardType)
|
||||
{
|
||||
return _rewardManager.getRewards(player, rewardType);
|
||||
|
|
|
@ -7,22 +7,24 @@ import mineplex.core.reward.RewardType;
|
|||
|
||||
public enum TreasureType
|
||||
{
|
||||
OLD(C.cYellow + "Old Chest", "Old Chest", RewardType.OldChest, Material.CHEST, TreasureStyle.OLD),
|
||||
OLD(C.cYellow + "Old Chest", "Old Chest", "Old", RewardType.OldChest, Material.CHEST, TreasureStyle.OLD),
|
||||
|
||||
ANCIENT(C.cGold + "Ancient Chest", "Ancient Chest", RewardType.AncientChest, Material.TRAPPED_CHEST, TreasureStyle.ANCIENT),
|
||||
ANCIENT(C.cGold + "Ancient Chest", "Ancient Chest", "Ancient", RewardType.AncientChest, Material.TRAPPED_CHEST, TreasureStyle.ANCIENT),
|
||||
|
||||
MYTHICAL(C.cRed + "Mythical Chest", "Mythical Chest", RewardType.MythicalChest, Material.ENDER_CHEST, TreasureStyle.MYTHICAL);
|
||||
MYTHICAL(C.cRed + "Mythical Chest", "Mythical Chest", "Mythical", RewardType.MythicalChest, Material.ENDER_CHEST, TreasureStyle.MYTHICAL);
|
||||
|
||||
private final String _name;
|
||||
private final RewardType _rewardType;
|
||||
private final Material _material;
|
||||
private final TreasureStyle _treasureStyle;
|
||||
private final String _itemName;
|
||||
private final String _statName;
|
||||
|
||||
TreasureType(String name, String itemName, RewardType rewardType, Material material, TreasureStyle treasureStyle)
|
||||
TreasureType(String name, String itemName, String statName, RewardType rewardType, Material material, TreasureStyle treasureStyle)
|
||||
{
|
||||
_name = name;
|
||||
_itemName = itemName;
|
||||
_statName = statName;
|
||||
_rewardType = rewardType;
|
||||
_material = material;
|
||||
_treasureStyle = treasureStyle;
|
||||
|
@ -52,4 +54,9 @@ public enum TreasureType
|
|||
{
|
||||
return _itemName;
|
||||
}
|
||||
|
||||
public String getStatName()
|
||||
{
|
||||
return _statName;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ public class FieldBlockCommand extends CommandBase<FieldBlock>
|
|||
@Override
|
||||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
if (args == null || args[0].equalsIgnoreCase("help"))
|
||||
if (args.length == 0 || args[0].equalsIgnoreCase("help"))
|
||||
{
|
||||
Plugin.help(caller);
|
||||
}
|
||||
|
|
|
@ -49,307 +49,307 @@ import com.mysql.jdbc.BalanceStrategy;
|
|||
public class DisguiseCommand extends CommandBase<HubManager> implements Listener
|
||||
{
|
||||
|
||||
private NautHashMap<Player, GameProfile> _disguisedPlayers = new NautHashMap<>();
|
||||
private NautHashMap<Player, String> _disguisedPlayersNames = new NautHashMap<>();
|
||||
private NautHashMap<Player, DisguisePlayer> _disguisedPlayerDisguises = new NautHashMap<>();
|
||||
private NautHashMap<Player, GameProfile> _disguisedPlayers = new NautHashMap<>();
|
||||
private NautHashMap<Player, String> _disguisedPlayersNames = new NautHashMap<>();
|
||||
private NautHashMap<Player, DisguisePlayer> _disguisedPlayerDisguises = new NautHashMap<>();
|
||||
|
||||
public DisguiseCommand(HubManager plugin)
|
||||
{
|
||||
super(plugin, Rank.JNR_DEV, new Rank[]
|
||||
{
|
||||
Rank.YOUTUBE, Rank.TWITCH }, "disguise");
|
||||
public DisguiseCommand(HubManager plugin)
|
||||
{
|
||||
super(plugin, Rank.JNR_DEV, new Rank[]
|
||||
{
|
||||
Rank.YOUTUBE, Rank.TWITCH }, "disguise");
|
||||
plugin.getPluginManager().registerEvents(this, Plugin.getPlugin());
|
||||
new NCPDataManFix();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void Execute(final Player caller, final String[] args)
|
||||
{
|
||||
if(args == null)
|
||||
@Override
|
||||
public void Execute(final Player caller, final String[] args)
|
||||
{
|
||||
if(!Plugin.GetDisguise().isDisguised(caller))
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "please use /disguise <name> first");
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
_disguisedPlayers.remove(caller);
|
||||
_disguisedPlayerDisguises.remove(caller);
|
||||
Plugin.GetDisguise().undisguise(caller);
|
||||
String playerName = _disguisedPlayersNames.get(caller);
|
||||
|
||||
CoreClient client = Plugin.GetClients().Get(caller);
|
||||
client.setDisguisedRank(null);
|
||||
client.setDisguisedAs(null);
|
||||
client.setDisguised(false);
|
||||
|
||||
changeName(caller, playerName);
|
||||
|
||||
for(Player other : UtilServer.getPlayers())
|
||||
if(args == null || args.length == 0)
|
||||
{
|
||||
for(Team team : other.getScoreboard().getTeams())
|
||||
{
|
||||
if(team.hasPlayer(caller))
|
||||
if(!Plugin.GetDisguise().isDisguised(caller))
|
||||
{
|
||||
team.removePlayer(caller);
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "please use /disguise <name> first");
|
||||
return;
|
||||
}
|
||||
}
|
||||
other.getScoreboard().getTeam(Plugin.GetClients().Get(caller).GetRank().Name).addPlayer(caller);
|
||||
}
|
||||
try
|
||||
{
|
||||
_disguisedPlayers.remove(caller);
|
||||
_disguisedPlayerDisguises.remove(caller);
|
||||
Plugin.GetDisguise().undisguise(caller);
|
||||
String playerName = _disguisedPlayersNames.get(caller);
|
||||
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "You are no longer disguised!");
|
||||
return;
|
||||
} catch(Exception ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
if(args != null && args.length > 1)
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "/disguise <name>");
|
||||
return;
|
||||
}
|
||||
CoreClient client = Plugin.GetClients().Get(caller);
|
||||
client.setDisguisedRank(null);
|
||||
client.setDisguisedAs(null);
|
||||
client.setDisguised(false);
|
||||
|
||||
Bukkit.getServer().getScheduler().runTaskAsynchronously(Plugin.getPlugin(), new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
if(Plugin.GetDisguise().isDisguised(caller))
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "please use /disguise first");
|
||||
return;
|
||||
changeName(caller, playerName);
|
||||
|
||||
for(Player other : UtilServer.getPlayers())
|
||||
{
|
||||
for(Team team : other.getScoreboard().getTeams())
|
||||
{
|
||||
if(team.hasPlayer(caller))
|
||||
{
|
||||
team.removePlayer(caller);
|
||||
}
|
||||
}
|
||||
other.getScoreboard().getTeam(Plugin.GetClients().Get(caller).GetRank().Name).addPlayer(caller);
|
||||
}
|
||||
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "You are no longer disguised!");
|
||||
return;
|
||||
} catch(Exception ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
for(Player other : UtilServer.getPlayers())
|
||||
if(args != null && args.length > 1)
|
||||
{
|
||||
if(other.getName().equalsIgnoreCase(args[0]))
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "this name is already in use!");
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "/disguise <name>");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(_disguisedPlayersNames.containsValue(args[0]))
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "this name is already in use!");
|
||||
return;
|
||||
}
|
||||
if(args[0].length() > 16)
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "Invalid Disguise Name: " + ChatColor.RESET + args[0]);
|
||||
return;
|
||||
}
|
||||
|
||||
Bukkit.getServer().getScheduler().runTaskAsynchronously(Plugin.getPlugin(), new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
if(Plugin.GetDisguise().isDisguised(caller))
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "please use /disguise first");
|
||||
return;
|
||||
}
|
||||
for(Player other : UtilServer.getPlayers())
|
||||
{
|
||||
if(other.getName().equalsIgnoreCase(args[0]))
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "this name is already in use!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(_disguisedPlayersNames.containsValue(args[0]))
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "this name is already in use!");
|
||||
return;
|
||||
}
|
||||
if(args[0].length() > 16)
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "Invalid Disguise Name: " + ChatColor.RESET + args[0]);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
CoreClient client = Plugin.GetClients().Get(caller);
|
||||
UUID uuid = UUIDFetcher.getUUIDOf(args[0]);
|
||||
GameProfile profile = null;
|
||||
try
|
||||
{
|
||||
profile = new ProfileLoader(uuid.toString(), args[0]).loadProfile();
|
||||
} catch(Exception e)
|
||||
{
|
||||
uuid = UUIDFetcher.getUUIDOf("Alex");
|
||||
profile = new ProfileLoader(uuid.toString(), args[0]).loadProfile();
|
||||
}
|
||||
|
||||
Rank otherRank = Rank.ALL;
|
||||
try
|
||||
{
|
||||
CoreClient other = new CoreClient(args[0]);
|
||||
Plugin.GetClients().LoadClient(other, uuid, caller.getAddress().getAddress().getAddress().toString());
|
||||
otherRank = other.GetRank();
|
||||
} catch(NullPointerException exception)
|
||||
{}
|
||||
if(otherRank.Has(Rank.TWITCH))
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "You can't disguise as staff!");
|
||||
return;
|
||||
}
|
||||
_disguisedPlayers.put(caller, profile);
|
||||
_disguisedPlayersNames.put(caller, caller.getName());
|
||||
client.setDisguisedRank(otherRank);
|
||||
client.setDisguised(true);
|
||||
|
||||
client.setDisguisedAs(args[0]);
|
||||
|
||||
changeName(caller, args[0]);
|
||||
|
||||
Plugin.GetGadget().RemoveItem(caller);
|
||||
|
||||
UtilPlayer.message(caller, C.cGreen + C.Bold + "Disguise Active: " + ChatColor.RESET + args[0]);
|
||||
} catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "Invalid Disguise Name: " + ChatColor.RESET + args[0]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void updateDisguises(UpdateEvent event)
|
||||
{
|
||||
if(event.getType() != UpdateType.FASTEST)
|
||||
return;
|
||||
|
||||
for(final Player player : UtilServer.getPlayers())
|
||||
{
|
||||
if(!_disguisedPlayers.containsKey(player))
|
||||
continue;
|
||||
|
||||
for(Player other : UtilServer.getPlayers())
|
||||
{
|
||||
try
|
||||
{
|
||||
for(Team team : other.getScoreboard().getTeams())
|
||||
{
|
||||
if(team.hasPlayer(player))
|
||||
{
|
||||
team.removePlayer(player);
|
||||
}
|
||||
}
|
||||
other.getScoreboard().getTeam(Plugin.GetClients().Get(player).getDisguisedRank().Name).addPlayer(player);
|
||||
|
||||
} catch(NullPointerException exp)
|
||||
{}
|
||||
}
|
||||
|
||||
if(Plugin.GetDisguise().isDisguised(player))
|
||||
continue;
|
||||
|
||||
DisguisePlayer playerDisguise = new DisguisePlayer(player, _disguisedPlayers.get(player));
|
||||
_disguisedPlayerDisguises.put(player, playerDisguise);
|
||||
Plugin.GetDisguise().disguise(playerDisguise);
|
||||
}
|
||||
}
|
||||
|
||||
public void changeName(Player player, String changedName)
|
||||
{
|
||||
try
|
||||
{
|
||||
CoreClient client = Plugin.GetClients().Get(caller);
|
||||
UUID uuid = UUIDFetcher.getUUIDOf(args[0]);
|
||||
GameProfile profile = null;
|
||||
try
|
||||
{
|
||||
profile = new ProfileLoader(uuid.toString(), args[0]).loadProfile();
|
||||
} catch(Exception e)
|
||||
{
|
||||
uuid = UUIDFetcher.getUUIDOf("Alex");
|
||||
profile = new ProfileLoader(uuid.toString(), args[0]).loadProfile();
|
||||
}
|
||||
Field name = GameProfile.class.getDeclaredField("name");
|
||||
Field declaredProfile = EntityHuman.class.getDeclaredField("i");
|
||||
declaredProfile.setAccessible(true);
|
||||
GameProfile gameProfile = (GameProfile) declaredProfile.get(((CraftHumanEntity) ((CraftPlayer) player)).getHandle());
|
||||
|
||||
Rank otherRank = Rank.ALL;
|
||||
try
|
||||
{
|
||||
CoreClient other = new CoreClient(args[0]);
|
||||
Plugin.GetClients().LoadClient(other, uuid, caller.getAddress().getAddress().getAddress().toString());
|
||||
otherRank = other.GetRank();
|
||||
} catch(NullPointerException exception)
|
||||
{}
|
||||
if(otherRank.Has(Rank.TWITCH))
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "You can't disguise as staff!");
|
||||
return;
|
||||
}
|
||||
_disguisedPlayers.put(caller, profile);
|
||||
_disguisedPlayersNames.put(caller, caller.getName());
|
||||
client.setDisguisedRank(otherRank);
|
||||
client.setDisguised(true);
|
||||
|
||||
client.setDisguisedAs(args[0]);
|
||||
|
||||
changeName(caller, args[0]);
|
||||
|
||||
Plugin.GetGadget().RemoveItem(caller);
|
||||
|
||||
UtilPlayer.message(caller, C.cGreen + C.Bold + "Disguise Active: " + ChatColor.RESET + args[0]);
|
||||
} catch(Exception e)
|
||||
name.setAccessible(true);
|
||||
name.set(gameProfile, changedName);
|
||||
name.setAccessible(false);
|
||||
} catch(Exception ex)
|
||||
{
|
||||
e.printStackTrace();
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "Invalid Disguise Name: " + ChatColor.RESET + args[0]);
|
||||
return;
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void updateDisguises(UpdateEvent event)
|
||||
{
|
||||
if(event.getType() != UpdateType.FASTEST)
|
||||
return;
|
||||
|
||||
for(final Player player : UtilServer.getPlayers())
|
||||
{
|
||||
if(!_disguisedPlayers.containsKey(player))
|
||||
continue;
|
||||
|
||||
for(Player other : UtilServer.getPlayers())
|
||||
{
|
||||
try
|
||||
{
|
||||
for(Team team : other.getScoreboard().getTeams())
|
||||
{
|
||||
if(team.hasPlayer(player))
|
||||
{
|
||||
team.removePlayer(player);
|
||||
}
|
||||
}
|
||||
other.getScoreboard().getTeam(Plugin.GetClients().Get(player).getDisguisedRank().Name).addPlayer(player);
|
||||
|
||||
} catch(NullPointerException exp)
|
||||
{}
|
||||
}
|
||||
|
||||
if(Plugin.GetDisguise().isDisguised(player))
|
||||
continue;
|
||||
|
||||
DisguisePlayer playerDisguise = new DisguisePlayer(player, _disguisedPlayers.get(player));
|
||||
_disguisedPlayerDisguises.put(player, playerDisguise);
|
||||
Plugin.GetDisguise().disguise(playerDisguise);
|
||||
}
|
||||
}
|
||||
|
||||
public void changeName(Player player, String changedName)
|
||||
{
|
||||
try
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void Quit(PlayerQuitEvent event)
|
||||
{
|
||||
Field name = GameProfile.class.getDeclaredField("name");
|
||||
Field declaredProfile = EntityHuman.class.getDeclaredField("i");
|
||||
declaredProfile.setAccessible(true);
|
||||
GameProfile gameProfile = (GameProfile) declaredProfile.get(((CraftHumanEntity) ((CraftPlayer) player)).getHandle());
|
||||
|
||||
name.setAccessible(true);
|
||||
name.set(gameProfile, changedName);
|
||||
name.setAccessible(false);
|
||||
} catch(Exception ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void Quit(PlayerQuitEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if(_disguisedPlayers.containsKey(player))
|
||||
{
|
||||
try
|
||||
{
|
||||
_disguisedPlayers.remove(player);
|
||||
_disguisedPlayerDisguises.remove(player);
|
||||
Plugin.GetDisguise().undisguise(player);
|
||||
String playerName = _disguisedPlayersNames.get(player);
|
||||
_disguisedPlayersNames.remove(player);
|
||||
|
||||
CoreClient client = Plugin.GetClients().Get(player);
|
||||
client.setDisguisedRank(null);
|
||||
client.setDisguisedAs(null);
|
||||
client.setDisguised(false);
|
||||
|
||||
changeName(player, playerName);
|
||||
} catch(Exception ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void Join(PlayerLoginEvent event)
|
||||
{
|
||||
for(Player player : _disguisedPlayers.keySet())
|
||||
{
|
||||
if(player.getName().equalsIgnoreCase(event.getPlayer().getName()))
|
||||
{
|
||||
event.disallow(Result.KICK_OTHER, "There is already the same account playing. this probably happened because of /disguise");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void gadget(GadgetActivateEvent event)
|
||||
{
|
||||
if(!event.getGadget().GetName().equalsIgnoreCase("Coin Party Bomb") && event.getGadget().getGadgetType() != GadgetType.Morph)
|
||||
return;
|
||||
|
||||
if(_disguisedPlayers.containsKey(event.getPlayer()))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void chest(TreasureStartEvent event)
|
||||
{
|
||||
if(_disguisedPlayers.containsKey(event.getPlayer()))
|
||||
{
|
||||
UtilPlayer.message(event.getPlayer(), F.main("Disguise", "You cant open Treasure Chests while you are disguised!"));
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerSneak(PlayerToggleSneakEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if(_disguisedPlayers.containsKey(player))
|
||||
{
|
||||
DisguisePlayer dp = _disguisedPlayerDisguises.get(player);
|
||||
|
||||
dp.setSneaking(!dp.getSneaking());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onDPlayerChat(AsyncPlayerChatEvent event)
|
||||
{
|
||||
if(_disguisedPlayers.containsKey(event.getPlayer()))
|
||||
{
|
||||
event.setFormat(" *" + event.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void on(PlayerInteractEvent event)
|
||||
{
|
||||
if(event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_BLOCK)
|
||||
{
|
||||
if(_disguisedPlayers.containsKey(event.getPlayer()))
|
||||
{
|
||||
|
||||
Player player = event.getPlayer();
|
||||
|
||||
PacketPlayOutAnimation packet = new PacketPlayOutAnimation();
|
||||
packet.a = player.getEntityId();
|
||||
|
||||
for(Player p : Bukkit.getOnlinePlayers())
|
||||
if(_disguisedPlayers.containsKey(player))
|
||||
{
|
||||
if(p != player)
|
||||
{
|
||||
Plugin.getPacketHandler().getPacketVerifier((Player) p).bypassProcess(packet);
|
||||
}
|
||||
try
|
||||
{
|
||||
_disguisedPlayers.remove(player);
|
||||
_disguisedPlayerDisguises.remove(player);
|
||||
Plugin.GetDisguise().undisguise(player);
|
||||
String playerName = _disguisedPlayersNames.get(player);
|
||||
_disguisedPlayersNames.remove(player);
|
||||
|
||||
CoreClient client = Plugin.GetClients().Get(player);
|
||||
client.setDisguisedRank(null);
|
||||
client.setDisguisedAs(null);
|
||||
client.setDisguised(false);
|
||||
|
||||
changeName(player, playerName);
|
||||
} catch(Exception ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void Join(PlayerLoginEvent event)
|
||||
{
|
||||
for(Player player : _disguisedPlayers.keySet())
|
||||
{
|
||||
if(player.getName().equalsIgnoreCase(event.getPlayer().getName()))
|
||||
{
|
||||
event.disallow(Result.KICK_OTHER, "There is already the same account playing. this probably happened because of /disguise");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void gadget(GadgetActivateEvent event)
|
||||
{
|
||||
if(!event.getGadget().GetName().equalsIgnoreCase("Coin Party Bomb") && event.getGadget().getGadgetType() != GadgetType.Morph)
|
||||
return;
|
||||
|
||||
if(_disguisedPlayers.containsKey(event.getPlayer()))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void chest(TreasureStartEvent event)
|
||||
{
|
||||
if(_disguisedPlayers.containsKey(event.getPlayer()))
|
||||
{
|
||||
UtilPlayer.message(event.getPlayer(), F.main("Disguise", "You cant open Treasure Chests while you are disguised!"));
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerSneak(PlayerToggleSneakEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if(_disguisedPlayers.containsKey(player))
|
||||
{
|
||||
DisguisePlayer dp = _disguisedPlayerDisguises.get(player);
|
||||
|
||||
dp.setSneaking(!dp.getSneaking());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onDPlayerChat(AsyncPlayerChatEvent event)
|
||||
{
|
||||
if(_disguisedPlayers.containsKey(event.getPlayer()))
|
||||
{
|
||||
event.setFormat(" *" + event.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void on(PlayerInteractEvent event)
|
||||
{
|
||||
if(event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_BLOCK)
|
||||
{
|
||||
if(_disguisedPlayers.containsKey(event.getPlayer()))
|
||||
{
|
||||
|
||||
Player player = event.getPlayer();
|
||||
|
||||
PacketPlayOutAnimation packet = new PacketPlayOutAnimation();
|
||||
packet.a = player.getEntityId();
|
||||
|
||||
for(Player p : Bukkit.getOnlinePlayers())
|
||||
{
|
||||
if(p != player)
|
||||
{
|
||||
Plugin.getPacketHandler().getPacketVerifier((Player) p).bypassProcess(packet);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -157,12 +157,12 @@ public class KothManager extends MiniPlugin
|
|||
if (bottom.getVehicle() != null)
|
||||
bottom = bottom.getVehicle();
|
||||
|
||||
UtilAction.velocity(bottom, UtilAlg.getTrajectory(bounce, player.getLocation()), 1, false, 0, 0.4, 1, true);
|
||||
UtilAction.velocity(bottom, UtilAlg.getTrajectory2d(bounce, player.getLocation()), 1.2, false, 0, 0.6, 1, true);
|
||||
|
||||
if (Recharge.Instance.use(player, "KOTH Eject", 5000, false, false))
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Football", "You must be wearing a Team Outfit."));
|
||||
UtilPlayer.message(player, F.main("Football", "Type " + F.elem("/team red|yellow|green|blue") + "!"));
|
||||
UtilPlayer.message(player, F.main("KOTH", "You must be wearing a Team Outfit."));
|
||||
UtilPlayer.message(player, F.main("KOTH", "Type " + F.elem("/team red|yellow|green|blue") + "!"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -408,7 +408,7 @@ public class ParkourManager extends MiniPlugin
|
|||
else
|
||||
{
|
||||
_taskManager.Get(player).TasksCompleted.remove(_taskManager.getTaskId(fData.Name));
|
||||
UtilPlayer.message(player, F.main("Parkour", "There as an error giving " + F.elem(C.cGreen + fData.Gems + " gems to you. Please click the NPC again.") + "."));
|
||||
UtilPlayer.message(player, F.main("Parkour", "There was an error giving " + F.elem(C.cGreen + fData.Gems + " Gems to you. Please click the NPC again.") + "."));
|
||||
}
|
||||
}
|
||||
}, "Parkour " + fData.Name, player.getName(), player.getUniqueId(), fData.Gems);
|
||||
|
|
|
@ -10,9 +10,12 @@ import org.bukkit.Location;
|
|||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Bat;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Firework;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Slime;
|
||||
import org.bukkit.entity.TNTPrimed;
|
||||
import org.bukkit.entity.WitherSkull;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
|
@ -353,15 +356,15 @@ public class SoccerManager extends MiniPlugin
|
|||
|
||||
if (_ball != null && _ball.equals(ent))
|
||||
continue;
|
||||
|
||||
if (ent instanceof Bat)
|
||||
{
|
||||
ent.remove();
|
||||
continue;
|
||||
}
|
||||
|
||||
if (inPlayerArena(ent))
|
||||
{
|
||||
if (ent instanceof Bat || ent instanceof WitherSkull || ent instanceof TNTPrimed || ent instanceof Firework)
|
||||
{
|
||||
ent.remove();
|
||||
continue;
|
||||
}
|
||||
|
||||
Location bounce = UtilAlg.getMidpoint(_cornerFieldPlayerA, _cornerFieldPlayerB);
|
||||
bounce.setY(Math.min(_cornerFieldPlayerA.getY(), _cornerFieldPlayerB.getY()));
|
||||
|
||||
|
@ -370,7 +373,6 @@ public class SoccerManager extends MiniPlugin
|
|||
bottom = bottom.getVehicle();
|
||||
|
||||
UtilAction.velocity(bottom, UtilAlg.getTrajectory(bounce, ent.getLocation()), 1, false, 0, 0.4, 1, true);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -419,19 +421,18 @@ public class SoccerManager extends MiniPlugin
|
|||
if (bottom.getVehicle() != null)
|
||||
bottom = bottom.getVehicle();
|
||||
|
||||
UtilAction.velocity(bottom, UtilAlg.getTrajectory(bounce, player.getLocation()), 1, false, 0, 0.4, 1, true);
|
||||
UtilAction.velocity(bottom, UtilAlg.getTrajectory2d(bounce, player.getLocation()), 1, false, 0, 0.8, 1, true);
|
||||
|
||||
if (Recharge.Instance.use(player, "Soccer Eject", 5000, false, false))
|
||||
{
|
||||
if (_active.size() >= 8)
|
||||
if (_active.size() < 8)
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Football", "You must be wearing Red/Blue Team Outfit."));
|
||||
UtilPlayer.message(player, F.main("Football", "Type " + F.elem("/team red") + " or " + F.elem("/team blue") + "!"));
|
||||
UtilPlayer.message(player, F.main("Slimeball", "You must be wearing Red/Blue Team Outfit."));
|
||||
UtilPlayer.message(player, F.main("Slimeball", "Type " + F.elem("/team red") + " or " + F.elem("/team blue") + "!"));
|
||||
}
|
||||
else
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Football", "You must be wearing Red/Blue Team Outfit."));
|
||||
UtilPlayer.message(player, F.main("Football", "Type " + F.elem("/team red") + " or " + F.elem("/team blue") + "!"));
|
||||
UtilPlayer.message(player, F.main("Slimeball", "The game is currently full!"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -447,11 +448,11 @@ public class SoccerManager extends MiniPlugin
|
|||
_active.add(player);
|
||||
|
||||
if (color == null)
|
||||
UtilPlayer.message(player, F.main("Parkour", "You have entered " + F.elem("Football Mode") + "."));
|
||||
UtilPlayer.message(player, F.main("Parkour", "You have entered " + F.elem("Slimeball Mode") + "."));
|
||||
else if (color == Color.RED)
|
||||
UtilPlayer.message(player, F.main("Parkour", "You have joined " + F.elem(C.cRed + "Red Football Team") + "."));
|
||||
UtilPlayer.message(player, F.main("Parkour", "You have joined " + F.elem(C.cRed + "Red Slimeball Team") + "."));
|
||||
else if (color == Color.AQUA)
|
||||
UtilPlayer.message(player, F.main("Parkour", "You have joined " + F.elem(C.cAqua + "Blue Football Team") + "."));
|
||||
UtilPlayer.message(player, F.main("Parkour", "You have joined " + F.elem(C.cAqua + "Blue Slimeball Team") + "."));
|
||||
|
||||
ArrayList<String> outfit = new ArrayList<String>();
|
||||
outfit.add("Team Helmet");
|
||||
|
@ -466,7 +467,7 @@ public class SoccerManager extends MiniPlugin
|
|||
else
|
||||
{
|
||||
_active.remove(player);
|
||||
UtilPlayer.message(player, F.main("Parkour", "You have exited " + F.elem("Football Mode") + "."));
|
||||
UtilPlayer.message(player, F.main("Parkour", "You have exited " + F.elem("Slimeball Mode") + "."));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -494,6 +495,9 @@ public class SoccerManager extends MiniPlugin
|
|||
{
|
||||
if (_active.contains(event.getPlayer()))
|
||||
event.setCancelled(true);
|
||||
|
||||
if (_ball != null && event.getRightClicked().equals(_ball))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
|
|
@ -1,17 +1,11 @@
|
|||
package mineplex.hub.server;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
|
||||
|
@ -189,7 +183,10 @@ public class ServerManager extends MiniPlugin
|
|||
|
||||
if (serverName != null)
|
||||
{
|
||||
List<ServerInfo> serverList = new ArrayList<ServerInfo>(getServerList(serverName));
|
||||
List<ServerInfo> serverList = new ArrayList<ServerInfo>();
|
||||
|
||||
if (hasServerNpc(serverName))
|
||||
serverList.addAll(getServerList(serverName));
|
||||
|
||||
int slots = 1;
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ public class QuickShop extends ShopBase<ServerManager>
|
|||
@Override
|
||||
protected ShopPageBase<ServerManager, ? extends ShopBase<ServerManager>> buildPagesFor(Player player)
|
||||
{
|
||||
return new ServerGameMenu(getPlugin(), this, getClientManager(), getDonationManager(), " " + ChatColor.UNDERLINE + "Quick Game Menu", player);
|
||||
return new ServerGameMenu(getPlugin(), this, getClientManager(), getDonationManager(), "Game Menu", player);
|
||||
}
|
||||
|
||||
public void UpdatePages()
|
||||
|
|
|
@ -118,8 +118,8 @@ public class PartyTutorial extends Tutorial
|
|||
));
|
||||
|
||||
_phases.add(new TutorialPhase(
|
||||
manager.GetSpawn().add(0, -2, 0),
|
||||
manager.GetSpawn().add(0, -2.1, 5),
|
||||
manager.GetSpawn().add(0, 0, 0),
|
||||
manager.GetSpawn().add(0, 0.1, 5),
|
||||
"End",
|
||||
new String[]
|
||||
{
|
||||
|
|
|
@ -132,8 +132,8 @@ public class WelcomeTutorial extends Tutorial
|
|||
|
||||
//END
|
||||
_phases.add(new TutorialPhase(
|
||||
manager.GetSpawn().add(0, -2, 0),
|
||||
manager.GetSpawn().add(0, -2.1, 5),
|
||||
manager.GetSpawn().add(0, 0, 0),
|
||||
manager.GetSpawn().add(0, 0.1, 5),
|
||||
"End",
|
||||
new String[]
|
||||
{
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package mineplex.mapparser.command;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
|
@ -77,6 +78,18 @@ public class MapCommand extends BaseCommand
|
|||
message(player, "That map is being backed up now. Try again soon");
|
||||
return true;
|
||||
}
|
||||
|
||||
//Delete UID
|
||||
File file = new File(worldName + "/uid.dat");
|
||||
if (file.exists())
|
||||
{
|
||||
System.out.println("Deleting uid.dat for " + worldName);
|
||||
file.delete();
|
||||
}
|
||||
else
|
||||
{
|
||||
System.out.println("Could not delete uid.dat for " + worldName);
|
||||
}
|
||||
|
||||
World world = getPlugin().GetMapWorld(worldName);
|
||||
if (world == null)
|
||||
|
|
|
@ -25,9 +25,11 @@ public class PlayerStatus implements Data
|
|||
|
||||
/**
|
||||
* Unique identifying String ID associated with this {@link PlayerStatus}.
|
||||
*
|
||||
* Use the lowercase name so we can have case-insensitive lookup
|
||||
*/
|
||||
public String getDataId()
|
||||
{
|
||||
return _name;
|
||||
return _name.toLowerCase();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -93,41 +93,45 @@ public class ServerManager
|
|||
public static RedisConfig getConfig(String fileName)
|
||||
{
|
||||
if (_config == null)
|
||||
{
|
||||
try
|
||||
{
|
||||
File configFile = new File(fileName);
|
||||
|
||||
if (configFile.exists())
|
||||
{
|
||||
List<ConnectionData> connections = new ArrayList<ConnectionData>();
|
||||
List<String> lines = Files.readAllLines(configFile.toPath(), Charset.defaultCharset());
|
||||
|
||||
for (String line : lines)
|
||||
{
|
||||
ConnectionData connection = deserializeConnection(line);
|
||||
connections.add(connection);
|
||||
|
||||
}
|
||||
|
||||
_config = new RedisConfig(connections);
|
||||
}
|
||||
else
|
||||
{
|
||||
log(fileName + " not found at " + configFile.toPath().toString());
|
||||
_config = new RedisConfig();
|
||||
}
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
exception.printStackTrace();
|
||||
log("---Unable To Parse Redis Configuration File---");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
_config = loadConfig(fileName);
|
||||
|
||||
return _config;
|
||||
}
|
||||
|
||||
public static RedisConfig loadConfig(String fileName)
|
||||
{
|
||||
try
|
||||
{
|
||||
File configFile = new File(fileName);
|
||||
|
||||
if (configFile.exists())
|
||||
{
|
||||
List<ConnectionData> connections = new ArrayList<ConnectionData>();
|
||||
List<String> lines = Files.readAllLines(configFile.toPath(), Charset.defaultCharset());
|
||||
|
||||
for (String line : lines)
|
||||
{
|
||||
ConnectionData connection = deserializeConnection(line);
|
||||
connections.add(connection);
|
||||
|
||||
}
|
||||
|
||||
return new RedisConfig(connections);
|
||||
}
|
||||
else
|
||||
{
|
||||
log(fileName + " not found at " + configFile.toPath().toString());
|
||||
return new RedisConfig();
|
||||
}
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
exception.printStackTrace();
|
||||
log("---Unable To Parse Redis Configuration File---");
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param line - the serialized line representing a valid {@link ConnectionData} object.
|
||||
|
|
|
@ -13,16 +13,17 @@ import mineplex.core.account.CoreClientManager;
|
|||
import mineplex.core.bonuses.BonusAmount;
|
||||
import mineplex.core.bonuses.BonusClientData;
|
||||
import mineplex.core.bonuses.BonusManager;
|
||||
import mineplex.core.common.Pair;
|
||||
import mineplex.core.common.util.Callback;
|
||||
import mineplex.core.common.util.UUIDFetcher;
|
||||
import mineplex.core.database.DBPool;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.votifier.VotifierCommand;
|
||||
import mineplex.core.bonuses.redis.VotifierCommand;
|
||||
import mineplex.database.Tables;
|
||||
import mineplex.database.tables.records.BonusRecord;
|
||||
import mineplex.serverdata.Region;
|
||||
import mineplex.serverdata.Utility;
|
||||
import mineplex.serverdata.commands.ServerCommand;
|
||||
import mineplex.serverdata.commands.ServerCommandManager;
|
||||
import mineplex.serverdata.data.PlayerStatus;
|
||||
import mineplex.serverdata.redis.RedisConfig;
|
||||
import mineplex.serverdata.redis.RedisDataRepository;
|
||||
|
@ -59,8 +60,8 @@ public class VotifierManager extends MiniPlugin
|
|||
_donationManager = donationManager;
|
||||
_bonusManager = bonusManager;
|
||||
|
||||
_usConfig = ServerManager.getConfig("us-redis.dat");
|
||||
_euConfig = ServerManager.getConfig("eu-redis.dat");
|
||||
_usConfig = ServerManager.loadConfig("us-redis.dat");
|
||||
_euConfig = ServerManager.loadConfig("eu-redis.dat");
|
||||
|
||||
_usPlayerRepo = new RedisDataRepository<PlayerStatus>(_usConfig.getConnection(true, "DefaultConnection"),
|
||||
_usConfig.getConnection(false, "DefaultConnection"), Region.US, PlayerStatus.class, "playerStatus");
|
||||
|
@ -74,26 +75,62 @@ public class VotifierManager extends MiniPlugin
|
|||
@EventHandler
|
||||
public void handleVote(VotifierEvent event)
|
||||
{
|
||||
Vote vote = event.getVote();
|
||||
String playerName = vote.getUsername();
|
||||
final Vote vote = event.getVote();
|
||||
final String playerName = vote.getUsername();
|
||||
|
||||
System.out.println("New Vote: " + playerName);
|
||||
|
||||
UUID uuid = UUIDFetcher.getUUIDOf(playerName);
|
||||
if (uuid == null)
|
||||
runAsync(new Runnable()
|
||||
{
|
||||
System.out.println("Failed to load UUID of " + playerName + " from UUIDFetcher. Trying with database");
|
||||
uuid = _clientManager.loadUUIDFromDB(playerName);
|
||||
|
||||
if (uuid == null)
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
System.out.println("Failed to load UUID from database. Giving up on " + playerName);
|
||||
}
|
||||
}
|
||||
UUID uuid = UUIDFetcher.getUUIDOf(playerName);
|
||||
if (uuid == null)
|
||||
{
|
||||
System.out.println("Failed to load UUID of " + playerName + " from UUIDFetcher. Trying with database");
|
||||
uuid = _clientManager.loadUUIDFromDB(playerName);
|
||||
|
||||
System.out.println("Loaded " + playerName + " with uuid " + uuid);
|
||||
System.out.println("Attempting to award bonus");
|
||||
awardBonus(playerName, uuid);
|
||||
if (uuid == null)
|
||||
{
|
||||
System.out.println("Failed to load UUID from database. Giving up on " + playerName);
|
||||
}
|
||||
}
|
||||
|
||||
String lowerPlayerName = playerName.toLowerCase();
|
||||
final PlayerStatus usStatus = _usPlayerRepo.getElement(lowerPlayerName);
|
||||
final PlayerStatus euStatus = _euPlayerRepo.getElement(lowerPlayerName);
|
||||
|
||||
System.out.println("Loaded " + playerName + " with uuid " + uuid);
|
||||
System.out.println("Attempting to award bonus");
|
||||
final UUID finalUuid = uuid;
|
||||
awardBonus(playerName, finalUuid, new Callback<Integer>()
|
||||
{
|
||||
@Override
|
||||
public void run(final Integer gems)
|
||||
{
|
||||
runSync(new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
if (usStatus != null)
|
||||
{
|
||||
System.out.println("Found " + playerName + " on US " + usStatus.getServer());
|
||||
notifyServer(playerName, gems, Region.US, usStatus.getServer());
|
||||
}
|
||||
|
||||
if (euStatus != null)
|
||||
{
|
||||
System.out.println("Found " + playerName + " on EU " + euStatus.getServer());
|
||||
notifyServer(playerName, gems, Region.EU, euStatus.getServer());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
System.out.println();
|
||||
System.out.println();
|
||||
|
||||
|
@ -129,19 +166,18 @@ public class VotifierManager extends MiniPlugin
|
|||
// }
|
||||
|
||||
// Currently we just notify all servers, and the server with the player on it can deal with it
|
||||
notifyServer(playerName, false);
|
||||
// notifyServer(playerName, true);
|
||||
}
|
||||
|
||||
private void notifyServer(String playerName, boolean eu)
|
||||
private void notifyServer(String playerName, int gems, Region region, String targetServer)
|
||||
{
|
||||
JedisPool writePool = eu ? _euWritePool : _usWritePool;
|
||||
JedisPool writePool = region == Region.EU ? _euWritePool : _usWritePool;
|
||||
|
||||
VotifierCommand command = new VotifierCommand(playerName);
|
||||
VotifierCommand command = new VotifierCommand(playerName, gems, targetServer);
|
||||
publishCommand(command, writePool);
|
||||
}
|
||||
|
||||
private void awardBonus(final String playerName, UUID uuid)
|
||||
private void awardBonus(final String playerName, final UUID uuid, final Callback<Integer> onComplete)
|
||||
{
|
||||
DSLContext create = DSL.using(DBPool.ACCOUNT, SQLDialect.MYSQL);
|
||||
|
||||
|
@ -149,52 +185,68 @@ public class VotifierManager extends MiniPlugin
|
|||
if (idRecord != null)
|
||||
{
|
||||
final int accountId = idRecord.value1();
|
||||
final BonusClientData client = new BonusClientData(_bonusManager.getRepository().loadRecord(playerName, accountId));
|
||||
final BonusRecord client = _bonusManager.getRepository().loadRecord(playerName, accountId);
|
||||
|
||||
final BonusAmount amount = _bonusManager.getVoteBonusAmount(client);
|
||||
final BonusAmount amount = _bonusManager.getVoteBonusAmount(client.getVoteStreak());
|
||||
|
||||
// Reward Amount
|
||||
if (amount.getTickets() > 0)
|
||||
client.setTickets(client.getTickets() + amount.getTickets());
|
||||
|
||||
if (amount.getGems() > 0)
|
||||
_bonusManager.getRepository().attemptVoteBonus(accountId, new Callback<Pair<Boolean, Date>>()
|
||||
{
|
||||
_donationManager.RewardGems(new Callback<Boolean>()
|
||||
@Override
|
||||
public void run(Pair<Boolean, Date> pair)
|
||||
{
|
||||
@Override
|
||||
public void run(Boolean data)
|
||||
if (pair.getLeft())
|
||||
{
|
||||
if (data)
|
||||
System.out.println("Gave " + amount.getGems() + " gems to " + playerName);
|
||||
else
|
||||
System.out.println("Failed to give " + amount.getGems() + " gems to " + playerName);
|
||||
}
|
||||
}, "Votifier", playerName, uuid, amount.getGems());
|
||||
}
|
||||
// Reward Amount
|
||||
if (amount.getTickets() > 0)
|
||||
client.setTickets(client.getTickets() + amount.getTickets());
|
||||
|
||||
if (amount.getCoins() > 0)
|
||||
{
|
||||
_donationManager.RewardCoins(new Callback<Boolean>()
|
||||
{
|
||||
@Override
|
||||
public void run(Boolean data)
|
||||
if (amount.getTotalGems() > 0)
|
||||
{
|
||||
_donationManager.RewardGems(new Callback<Boolean>()
|
||||
{
|
||||
@Override
|
||||
public void run(Boolean data)
|
||||
{
|
||||
if (data)
|
||||
System.out.println("Gave " + amount.getGems() + " gems to " + playerName);
|
||||
else
|
||||
System.out.println("Failed to give " + amount.getGems() + " gems to " + playerName);
|
||||
}
|
||||
}, "Votifier", playerName, uuid, amount.getTotalGems());
|
||||
}
|
||||
|
||||
if (amount.getTotalCoins() > 0)
|
||||
{
|
||||
_donationManager.RewardCoins(new Callback<Boolean>()
|
||||
{
|
||||
@Override
|
||||
public void run(Boolean data)
|
||||
{
|
||||
if (data)
|
||||
System.out.println("Gave " + amount.getGems() + " coins to " + playerName);
|
||||
else
|
||||
System.out.println("Failed to give " + amount.getGems() + " coins to " + playerName);
|
||||
}
|
||||
}, "Votifier", playerName, accountId, amount.getTotalCoins());
|
||||
}
|
||||
|
||||
// Check if we need to reset vote streak
|
||||
_bonusManager.updateVoteStreak(client);
|
||||
client.setVotetime(pair.getRight());
|
||||
|
||||
// Update Streak
|
||||
_bonusManager.incrementVoteStreak(client);
|
||||
|
||||
client.store();
|
||||
System.out.println("Awarded carl ticket to " + playerName);
|
||||
onComplete.run(amount.getTotalGems());
|
||||
}
|
||||
else
|
||||
{
|
||||
if (data)
|
||||
System.out.println("Gave " + amount.getGems() + " coins to " + playerName);
|
||||
else
|
||||
System.out.println("Failed to give " + amount.getGems() + " coins to " + playerName);
|
||||
System.out.println(playerName + " attempted to vote, vote bonus returned false!");
|
||||
}
|
||||
}, "Votifier", playerName, accountId, amount.getCoins());
|
||||
}
|
||||
|
||||
// Update time
|
||||
client.getRecord().setVotetime(new Date(_bonusManager.getSqlTime()));
|
||||
|
||||
// Update Streak
|
||||
_bonusManager.incrementVoteStreak(client);
|
||||
|
||||
client.getRecord().store();
|
||||
System.out.println("Awarded carl ticket to " + playerName);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ import java.io.File;
|
|||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.omg.CORBA._PolicyStub;
|
||||
|
||||
import net.minecraft.server.v1_7_R4.BiomeBase;
|
||||
import net.minecraft.server.v1_7_R4.MinecraftServer;
|
||||
|
@ -24,6 +25,9 @@ import mineplex.core.disguise.DisguiseManager;
|
|||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.friend.FriendManager;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.gadgets.OutfitTeam;
|
||||
import mineplex.core.gadget.types.Gadget;
|
||||
import mineplex.core.gadget.types.GadgetType;
|
||||
import mineplex.core.give.Give;
|
||||
import mineplex.core.hologram.HologramManager;
|
||||
import mineplex.core.ignore.IgnoreManager;
|
||||
|
@ -37,6 +41,7 @@ import mineplex.core.mount.MountManager;
|
|||
import mineplex.core.npc.NpcManager;
|
||||
import mineplex.core.packethandler.PacketHandler;
|
||||
import mineplex.core.pet.PetManager;
|
||||
import mineplex.core.poll.PollManager;
|
||||
import mineplex.core.portal.Portal;
|
||||
import mineplex.core.preferences.PreferencesManager;
|
||||
import mineplex.core.projectile.ProjectileManager;
|
||||
|
@ -53,6 +58,7 @@ import mineplex.core.visibility.VisibilityManager;
|
|||
import mineplex.minecraft.game.core.combat.CombatManager;
|
||||
import mineplex.minecraft.game.core.damage.DamageManager;
|
||||
import nautilus.game.arcade.game.GameServerConfig;
|
||||
import nautilus.game.arcade.game.Game.GameState;
|
||||
|
||||
public class Arcade extends JavaPlugin
|
||||
{
|
||||
|
@ -112,7 +118,8 @@ public class Arcade extends JavaPlugin
|
|||
|
||||
DisguiseManager disguiseManager = new DisguiseManager(this, packetHandler);
|
||||
|
||||
_damageManager = new DamageManager(this, new CombatManager(this), new NpcManager(this, creature), disguiseManager, null);
|
||||
NpcManager npcmanager = new NpcManager(this, creature);
|
||||
_damageManager = new DamageManager(this, new CombatManager(this), npcmanager, disguiseManager, null);
|
||||
|
||||
Punish punish = new Punish(this, webServerAddress, _clientManager);
|
||||
AntiHack.Initialize(this, punish, portal, preferenceManager, _clientManager);
|
||||
|
@ -137,9 +144,12 @@ public class Arcade extends JavaPlugin
|
|||
GadgetManager gadgetManager = new GadgetManager(this, _clientManager, _donationManager, inventoryManager, mountManager, petManager, preferenceManager, disguiseManager, blockRestore, projectileManager, achievementManager);
|
||||
CosmeticManager cosmeticManager = new CosmeticManager(this, _clientManager, _donationManager, inventoryManager, gadgetManager, mountManager, petManager, null);
|
||||
cosmeticManager.setInterfaceSlot(7);
|
||||
cosmeticManager.disableTeamArmor();
|
||||
|
||||
|
||||
//Arcade Manager
|
||||
_gameManager = new ArcadeManager(this, serverStatusManager, ReadServerConfig(), _clientManager, _donationManager, _damageManager, statsManager, achievementManager, disguiseManager, creature, teleport, new Blood(this), chat, portal, preferenceManager, inventoryManager, packetHandler, cosmeticManager, projectileManager, petManager, hologramManager, webServerAddress);
|
||||
PollManager pollManager = new PollManager(this, _clientManager, _donationManager);
|
||||
_gameManager = new ArcadeManager(this, serverStatusManager, ReadServerConfig(), _clientManager, _donationManager, _damageManager, statsManager, achievementManager, disguiseManager, creature, teleport, new Blood(this), chat, portal, preferenceManager, inventoryManager, packetHandler, cosmeticManager, projectileManager, petManager, hologramManager, webServerAddress, pollManager, npcmanager);
|
||||
|
||||
new MemoryFix(this);
|
||||
new CustomTagFix(this, packetHandler);
|
||||
|
|
|
@ -42,6 +42,7 @@ import mineplex.core.account.CoreClientManager;
|
|||
import mineplex.core.achievement.AchievementManager;
|
||||
import mineplex.core.blockrestore.BlockRestore;
|
||||
import mineplex.core.blood.Blood;
|
||||
import mineplex.core.bonuses.BonusManager;
|
||||
import mineplex.core.chat.Chat;
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.common.jsonchat.ClickEvent;
|
||||
|
@ -62,11 +63,15 @@ import mineplex.core.donation.DonationManager;
|
|||
import mineplex.core.elo.EloManager;
|
||||
import mineplex.core.energy.Energy;
|
||||
import mineplex.core.explosion.Explosion;
|
||||
import mineplex.core.gadget.gadgets.OutfitTeam;
|
||||
import mineplex.core.gadget.types.Gadget;
|
||||
import mineplex.core.gadget.types.GadgetType;
|
||||
import mineplex.core.hologram.HologramManager;
|
||||
import mineplex.core.inventory.InventoryManager;
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
import mineplex.core.movement.Movement;
|
||||
import mineplex.core.notifier.NotificationManager;
|
||||
import mineplex.core.npc.NpcManager;
|
||||
import mineplex.core.packethandler.IPacketHandler;
|
||||
import mineplex.core.packethandler.PacketHandler;
|
||||
import mineplex.core.packethandler.PacketInfo;
|
||||
|
@ -74,6 +79,7 @@ import mineplex.core.packethandler.PacketPlayResourcePackStatus;
|
|||
import mineplex.core.packethandler.PacketPlayResourcePackStatus.EnumResourcePackStatus;
|
||||
import mineplex.core.party.PartyManager;
|
||||
import mineplex.core.pet.PetManager;
|
||||
import mineplex.core.poll.PollManager;
|
||||
import mineplex.core.portal.Portal;
|
||||
import mineplex.core.preferences.PreferencesManager;
|
||||
import mineplex.core.projectile.ProjectileManager;
|
||||
|
@ -209,7 +215,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
|||
CoreClientManager clientManager, DonationManager donationManager, DamageManager damageManager,
|
||||
StatsManager statsManager, AchievementManager achievementManager, DisguiseManager disguiseManager, Creature creature, Teleport teleport, Blood blood, Chat chat,
|
||||
Portal portal, PreferencesManager preferences, InventoryManager inventoryManager, PacketHandler packetHandler,
|
||||
CosmeticManager cosmeticManager, ProjectileManager projectileManager, PetManager petManager, HologramManager hologramManager, String webAddress)
|
||||
CosmeticManager cosmeticManager, ProjectileManager projectileManager, PetManager petManager, HologramManager hologramManager, String webAddress, PollManager pollManager, NpcManager npcManager)
|
||||
{
|
||||
super("Game Manager", plugin);
|
||||
|
||||
|
@ -293,6 +299,8 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
|||
|
||||
new NotificationManager(getPlugin(), clientManager);
|
||||
|
||||
new BonusManager(plugin, clientManager, donationManager, pollManager , npcManager, hologramManager, statsManager, _inventoryManager, petManager);
|
||||
|
||||
//Champions Modules
|
||||
_energy = new Energy(plugin);
|
||||
|
||||
|
|
|
@ -45,330 +45,330 @@ import org.bukkit.scoreboard.Team;
|
|||
public class DisguiseCommand extends CommandBase<ArcadeManager> implements Listener
|
||||
{
|
||||
|
||||
private NautHashMap<Player, GameProfile> _disguisedPlayers = new NautHashMap<>();
|
||||
private NautHashMap<Player, String> _disguisedPlayersNames = new NautHashMap<>();
|
||||
private NautHashMap<Player, DisguisePlayer> _disguisedPlayerDisguises = new NautHashMap<>();
|
||||
private NautHashMap<Player, GameProfile> _disguisedPlayers = new NautHashMap<>();
|
||||
private NautHashMap<Player, String> _disguisedPlayersNames = new NautHashMap<>();
|
||||
private NautHashMap<Player, DisguisePlayer> _disguisedPlayerDisguises = new NautHashMap<>();
|
||||
|
||||
public DisguiseCommand(ArcadeManager plugin)
|
||||
{
|
||||
super(plugin, Rank.JNR_DEV, new Rank[]
|
||||
{ Rank.YOUTUBE, Rank.TWITCH }, "disguise");
|
||||
plugin.getPluginManager().registerEvents(this, Plugin.getPlugin());
|
||||
new NCPDataManFix();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void Execute(final Player caller, final String[] args)
|
||||
{
|
||||
if(args == null)
|
||||
public DisguiseCommand(ArcadeManager plugin)
|
||||
{
|
||||
if(!Plugin.GetDisguise().isDisguised(caller))
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "please use /disguise <name> first");
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
_disguisedPlayers.remove(caller);
|
||||
_disguisedPlayerDisguises.remove(caller);
|
||||
Plugin.GetDisguise().undisguise(caller);
|
||||
String playerName = _disguisedPlayersNames.get(caller);
|
||||
|
||||
CoreClient client = Plugin.GetClients().Get(caller);
|
||||
client.setDisguisedRank(null);
|
||||
client.setDisguisedAs(null);
|
||||
client.setDisguised(false);
|
||||
|
||||
changeName(caller, playerName, true);
|
||||
|
||||
for(Player other : UtilServer.getPlayers())
|
||||
{
|
||||
for(Team team : other.getScoreboard().getTeams())
|
||||
{
|
||||
team.removePlayer(caller);
|
||||
}
|
||||
other.getScoreboard().getTeam(Plugin.GetClients().Get(caller).GetRank().Name).addPlayer(caller);
|
||||
}
|
||||
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "You are no longer disguised!");
|
||||
return;
|
||||
} catch(Exception ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
if(args != null && args.length > 1)
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "/disguise <name>");
|
||||
return;
|
||||
super(plugin, Rank.JNR_DEV, new Rank[]
|
||||
{ Rank.YOUTUBE, Rank.TWITCH }, "disguise");
|
||||
plugin.getPluginManager().registerEvents(this, Plugin.getPlugin());
|
||||
new NCPDataManFix();
|
||||
}
|
||||
|
||||
Bukkit.getServer().getScheduler().runTaskAsynchronously(Plugin.getPlugin(), new Runnable()
|
||||
@Override
|
||||
public void Execute(final Player caller, final String[] args)
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
if(Plugin.GetDisguise().isDisguised(caller))
|
||||
if(args == null || args.length == 0)
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "please use /disguise first");
|
||||
return;
|
||||
}
|
||||
for(Player other : UtilServer.getPlayers())
|
||||
{
|
||||
if(other.getName().equalsIgnoreCase(args[0]))
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "this name is already in use!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(_disguisedPlayersNames.containsValue(args[0]))
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "this name is already in use!");
|
||||
return;
|
||||
}
|
||||
if(args[0].length() > 16)
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "Invalid Disguise Name: " + ChatColor.RESET + args[0]);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
CoreClient client = Plugin.GetClients().Get(caller);
|
||||
UUID uuid = UUIDFetcher.getUUIDOf(args[0]);
|
||||
GameProfile profile = null;
|
||||
try
|
||||
{
|
||||
profile = new ProfileLoader(uuid.toString(), args[0]).loadProfile();
|
||||
} catch(Exception e)
|
||||
{
|
||||
uuid = UUIDFetcher.getUUIDOf("Alex");
|
||||
profile = new ProfileLoader(uuid.toString(), args[0]).loadProfile();
|
||||
}
|
||||
|
||||
Rank otherRank = Rank.ALL;
|
||||
try
|
||||
{
|
||||
CoreClient other = new CoreClient(args[0]);
|
||||
Plugin.GetClients().LoadClient(other, uuid, caller.getAddress().getAddress().getAddress().toString());
|
||||
otherRank = other.GetRank();
|
||||
} catch(NullPointerException exception)
|
||||
{}
|
||||
if(otherRank.Has(Rank.TWITCH))
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "You can't disguise as staff!");
|
||||
return;
|
||||
}
|
||||
_disguisedPlayers.put(caller, profile);
|
||||
_disguisedPlayersNames.put(caller, caller.getName());
|
||||
client.setDisguisedRank(otherRank);
|
||||
client.setDisguised(true);
|
||||
|
||||
client.setDisguisedAs(args[0]);
|
||||
|
||||
changeName(caller, args[0], true);
|
||||
|
||||
Plugin.getCosmeticManager().getGadgetManager().RemoveItem(caller);
|
||||
|
||||
Bukkit.broadcastMessage(ChatColor.DARK_GRAY + "Quit> " + ChatColor.GRAY + _disguisedPlayersNames.get(caller));
|
||||
UtilPlayer.message(caller, C.cGreen + C.Bold + "Disguise Active: " + ChatColor.RESET + args[0]);
|
||||
} catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "Invalid Disguise Name: " + ChatColor.RESET + args[0]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void updateDisguises(UpdateEvent event)
|
||||
{
|
||||
if(event.getType() != UpdateType.FASTEST)
|
||||
return;
|
||||
|
||||
for(final Player player : UtilServer.getPlayers())
|
||||
{
|
||||
if(!_disguisedPlayers.containsKey(player))
|
||||
continue;
|
||||
|
||||
for(Player other : UtilServer.getPlayers())
|
||||
{
|
||||
try
|
||||
{
|
||||
if(other.getScoreboard().getTeam(Plugin.GetClients().Get(player).GetRank().Name).getPlayers().contains(player))
|
||||
{
|
||||
other.getScoreboard().getTeam(Plugin.GetClients().Get(player).GetRank().Name).removePlayer(player);
|
||||
other.getScoreboard().getTeam(Plugin.GetClients().Get(player).getDisguisedRank().Name).addPlayer(player);
|
||||
}
|
||||
if(other.getScoreboard().getTeam(
|
||||
Plugin.GetClients().Get(player).GetRank().Name + Plugin.GetGame().GetTeam(player).GetName().toUpperCase()) != null)
|
||||
{
|
||||
if(other.getScoreboard()
|
||||
.getTeam(Plugin.GetClients().Get(player).GetRank().Name + Plugin.GetGame().GetTeam(player).GetName().toUpperCase())
|
||||
.getPlayers().contains(player))
|
||||
if(!Plugin.GetDisguise().isDisguised(caller))
|
||||
{
|
||||
other.getScoreboard()
|
||||
.getTeam(
|
||||
Plugin.GetClients().Get(player).GetRank().Name + Plugin.GetGame().GetTeam(player).GetName().toUpperCase())
|
||||
.removePlayer(player);
|
||||
other.getScoreboard()
|
||||
.getTeam(
|
||||
Plugin.GetClients().Get(player).getDisguisedRank().Name
|
||||
+ Plugin.GetGame().GetTeam(player).GetName().toUpperCase()).addPlayer(player);
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "please use /disguise <name> first");
|
||||
return;
|
||||
}
|
||||
}
|
||||
} catch(NullPointerException exp)
|
||||
{}
|
||||
}
|
||||
try
|
||||
{
|
||||
_disguisedPlayers.remove(caller);
|
||||
_disguisedPlayerDisguises.remove(caller);
|
||||
Plugin.GetDisguise().undisguise(caller);
|
||||
String playerName = _disguisedPlayersNames.get(caller);
|
||||
|
||||
if(Plugin.GetDisguise().isDisguised(player))
|
||||
continue;
|
||||
CoreClient client = Plugin.GetClients().Get(caller);
|
||||
client.setDisguisedRank(null);
|
||||
client.setDisguisedAs(null);
|
||||
client.setDisguised(false);
|
||||
|
||||
DisguisePlayer playerDisguise = new DisguisePlayer(player, _disguisedPlayers.get(player));
|
||||
_disguisedPlayerDisguises.put(player, playerDisguise);
|
||||
Plugin.GetDisguise().disguise(playerDisguise);
|
||||
changeName(caller, playerName, true);
|
||||
|
||||
for(Player other : UtilServer.getPlayers())
|
||||
{
|
||||
for(Team team : other.getScoreboard().getTeams())
|
||||
{
|
||||
team.removePlayer(caller);
|
||||
}
|
||||
other.getScoreboard().getTeam(Plugin.GetClients().Get(caller).GetRank().Name).addPlayer(caller);
|
||||
}
|
||||
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "You are no longer disguised!");
|
||||
return;
|
||||
} catch(Exception ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
if(args != null && args.length > 1)
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "/disguise <name>");
|
||||
return;
|
||||
}
|
||||
|
||||
Bukkit.getServer().getScheduler().runTaskAsynchronously(Plugin.getPlugin(), new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
if(Plugin.GetDisguise().isDisguised(caller))
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "please use /disguise first");
|
||||
return;
|
||||
}
|
||||
for(Player other : UtilServer.getPlayers())
|
||||
{
|
||||
if(other.getName().equalsIgnoreCase(args[0]))
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "this name is already in use!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(_disguisedPlayersNames.containsValue(args[0]))
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "this name is already in use!");
|
||||
return;
|
||||
}
|
||||
if(args[0].length() > 16)
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "Invalid Disguise Name: " + ChatColor.RESET + args[0]);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
CoreClient client = Plugin.GetClients().Get(caller);
|
||||
UUID uuid = UUIDFetcher.getUUIDOf(args[0]);
|
||||
GameProfile profile = null;
|
||||
try
|
||||
{
|
||||
profile = new ProfileLoader(uuid.toString(), args[0]).loadProfile();
|
||||
} catch(Exception e)
|
||||
{
|
||||
uuid = UUIDFetcher.getUUIDOf("Alex");
|
||||
profile = new ProfileLoader(uuid.toString(), args[0]).loadProfile();
|
||||
}
|
||||
|
||||
Rank otherRank = Rank.ALL;
|
||||
try
|
||||
{
|
||||
CoreClient other = new CoreClient(args[0]);
|
||||
Plugin.GetClients().LoadClient(other, uuid, caller.getAddress().getAddress().getAddress().toString());
|
||||
otherRank = other.GetRank();
|
||||
} catch(NullPointerException exception)
|
||||
{}
|
||||
if(otherRank.Has(Rank.TWITCH))
|
||||
{
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "You can't disguise as staff!");
|
||||
return;
|
||||
}
|
||||
_disguisedPlayers.put(caller, profile);
|
||||
_disguisedPlayersNames.put(caller, caller.getName());
|
||||
client.setDisguisedRank(otherRank);
|
||||
client.setDisguised(true);
|
||||
|
||||
client.setDisguisedAs(args[0]);
|
||||
|
||||
changeName(caller, args[0], true);
|
||||
|
||||
Plugin.getCosmeticManager().getGadgetManager().RemoveItem(caller);
|
||||
|
||||
Bukkit.broadcastMessage(ChatColor.DARK_GRAY + "Quit> " + ChatColor.GRAY + _disguisedPlayersNames.get(caller));
|
||||
UtilPlayer.message(caller, C.cGreen + C.Bold + "Disguise Active: " + ChatColor.RESET + args[0]);
|
||||
} catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
UtilPlayer.message(caller, C.cRed + C.Bold + "Invalid Disguise Name: " + ChatColor.RESET + args[0]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void changeName(final Player player, String changedName, boolean skin)
|
||||
{
|
||||
try
|
||||
@EventHandler
|
||||
public void updateDisguises(UpdateEvent event)
|
||||
{
|
||||
GameProfile gameProfile = ((CraftPlayer) player).getProfile();
|
||||
if(event.getType() != UpdateType.FASTEST)
|
||||
return;
|
||||
|
||||
Field name = GameProfile.class.getDeclaredField("name");
|
||||
name.setAccessible(true);
|
||||
name.set(gameProfile, changedName);
|
||||
name.setAccessible(false);
|
||||
for(final Player player : UtilServer.getPlayers())
|
||||
{
|
||||
if(!_disguisedPlayers.containsKey(player))
|
||||
continue;
|
||||
|
||||
} catch(Exception ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
for(Player other : UtilServer.getPlayers())
|
||||
{
|
||||
try
|
||||
{
|
||||
if(other.getScoreboard().getTeam(Plugin.GetClients().Get(player).GetRank().Name).getPlayers().contains(player))
|
||||
{
|
||||
other.getScoreboard().getTeam(Plugin.GetClients().Get(player).GetRank().Name).removePlayer(player);
|
||||
other.getScoreboard().getTeam(Plugin.GetClients().Get(player).getDisguisedRank().Name).addPlayer(player);
|
||||
}
|
||||
if(other.getScoreboard().getTeam(
|
||||
Plugin.GetClients().Get(player).GetRank().Name + Plugin.GetGame().GetTeam(player).GetName().toUpperCase()) != null)
|
||||
{
|
||||
if(other.getScoreboard()
|
||||
.getTeam(Plugin.GetClients().Get(player).GetRank().Name + Plugin.GetGame().GetTeam(player).GetName().toUpperCase())
|
||||
.getPlayers().contains(player))
|
||||
{
|
||||
other.getScoreboard()
|
||||
.getTeam(
|
||||
Plugin.GetClients().Get(player).GetRank().Name + Plugin.GetGame().GetTeam(player).GetName().toUpperCase())
|
||||
.removePlayer(player);
|
||||
other.getScoreboard()
|
||||
.getTeam(
|
||||
Plugin.GetClients().Get(player).getDisguisedRank().Name
|
||||
+ Plugin.GetGame().GetTeam(player).GetName().toUpperCase()).addPlayer(player);
|
||||
}
|
||||
}
|
||||
} catch(NullPointerException exp)
|
||||
{}
|
||||
}
|
||||
|
||||
if(Plugin.GetDisguise().isDisguised(player))
|
||||
continue;
|
||||
|
||||
DisguisePlayer playerDisguise = new DisguisePlayer(player, _disguisedPlayers.get(player));
|
||||
_disguisedPlayerDisguises.put(player, playerDisguise);
|
||||
Plugin.GetDisguise().disguise(playerDisguise);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void Quit(PlayerQuitEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if(_disguisedPlayers.containsKey(player))
|
||||
public void changeName(final Player player, String changedName, boolean skin)
|
||||
{
|
||||
try
|
||||
{
|
||||
_disguisedPlayers.remove(player);
|
||||
_disguisedPlayerDisguises.remove(player);
|
||||
Plugin.GetDisguise().undisguise(player);
|
||||
String playerName = _disguisedPlayersNames.get(player);
|
||||
_disguisedPlayersNames.remove(player);
|
||||
try
|
||||
{
|
||||
GameProfile gameProfile = ((CraftPlayer) player).getProfile();
|
||||
|
||||
CoreClient client = Plugin.GetClients().Get(player);
|
||||
client.setDisguisedRank(null);
|
||||
client.setDisguisedAs(null);
|
||||
client.setDisguised(false);
|
||||
Field name = GameProfile.class.getDeclaredField("name");
|
||||
name.setAccessible(true);
|
||||
name.set(gameProfile, changedName);
|
||||
name.setAccessible(false);
|
||||
|
||||
changeName(player, playerName, true);
|
||||
} catch(Exception ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
}
|
||||
} catch(Exception ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void Join(PlayerLoginEvent event)
|
||||
{
|
||||
for(Player player : _disguisedPlayers.keySet())
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void Quit(PlayerQuitEvent event)
|
||||
{
|
||||
if(player.getName().equalsIgnoreCase(event.getPlayer().getName()))
|
||||
{
|
||||
event.disallow(Result.KICK_OTHER, "There is already the same account playing. this probably happened because of /disguise");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void gadget(GadgetActivateEvent event)
|
||||
{
|
||||
if(!event.getGadget().GetName().equalsIgnoreCase("Coin Party Bomb") && event.getGadget().getGadgetType() != GadgetType.Morph)
|
||||
return;
|
||||
|
||||
if(_disguisedPlayers.containsKey(event.getPlayer()))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void chest(TreasureStartEvent event)
|
||||
{
|
||||
if(_disguisedPlayers.containsKey(event.getPlayer()))
|
||||
{
|
||||
UtilPlayer.message(event.getPlayer(), F.main("Disguise", "You cant open Treasure Chests while you are disguised!"));
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerSneak(PlayerToggleSneakEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if(_disguisedPlayers.containsKey(player))
|
||||
{
|
||||
DisguisePlayer dp = _disguisedPlayerDisguises.get(player);
|
||||
|
||||
dp.setSneaking(!dp.getSneaking());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerLeftClick(PlayerInteractEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if(event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_BLOCK)
|
||||
{
|
||||
if(_disguisedPlayers.containsKey(player))
|
||||
{
|
||||
EntityHuman human = (((CraftHumanEntity) ((CraftPlayer) player)).getHandle());
|
||||
human.world.broadcastEntityEffect(human, (byte) 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onDPlayerChat(AsyncPlayerChatEvent event)
|
||||
{
|
||||
if(_disguisedPlayers.containsKey(event.getPlayer()))
|
||||
{
|
||||
event.setFormat(" *" + event.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void on(PlayerInteractEvent event)
|
||||
{
|
||||
if(event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_BLOCK)
|
||||
{
|
||||
if(_disguisedPlayers.containsKey(event.getPlayer()))
|
||||
{
|
||||
|
||||
Player player = event.getPlayer();
|
||||
|
||||
PacketPlayOutAnimation packet = new PacketPlayOutAnimation();
|
||||
packet.a = player.getEntityId();
|
||||
|
||||
for(Player p : Bukkit.getOnlinePlayers())
|
||||
if(_disguisedPlayers.containsKey(player))
|
||||
{
|
||||
if(p != player)
|
||||
{
|
||||
Plugin.getPacketHandler().getPacketVerifier((Player) p).bypassProcess(packet);
|
||||
}
|
||||
try
|
||||
{
|
||||
_disguisedPlayers.remove(player);
|
||||
_disguisedPlayerDisguises.remove(player);
|
||||
Plugin.GetDisguise().undisguise(player);
|
||||
String playerName = _disguisedPlayersNames.get(player);
|
||||
_disguisedPlayersNames.remove(player);
|
||||
|
||||
CoreClient client = Plugin.GetClients().Get(player);
|
||||
client.setDisguisedRank(null);
|
||||
client.setDisguisedAs(null);
|
||||
client.setDisguised(false);
|
||||
|
||||
changeName(player, playerName, true);
|
||||
} catch(Exception ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void Join(PlayerLoginEvent event)
|
||||
{
|
||||
for(Player player : _disguisedPlayers.keySet())
|
||||
{
|
||||
if(player.getName().equalsIgnoreCase(event.getPlayer().getName()))
|
||||
{
|
||||
event.disallow(Result.KICK_OTHER, "There is already the same account playing. this probably happened because of /disguise");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void gadget(GadgetActivateEvent event)
|
||||
{
|
||||
if(!event.getGadget().GetName().equalsIgnoreCase("Coin Party Bomb") && event.getGadget().getGadgetType() != GadgetType.Morph)
|
||||
return;
|
||||
|
||||
if(_disguisedPlayers.containsKey(event.getPlayer()))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void chest(TreasureStartEvent event)
|
||||
{
|
||||
if(_disguisedPlayers.containsKey(event.getPlayer()))
|
||||
{
|
||||
UtilPlayer.message(event.getPlayer(), F.main("Disguise", "You cant open Treasure Chests while you are disguised!"));
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerSneak(PlayerToggleSneakEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if(_disguisedPlayers.containsKey(player))
|
||||
{
|
||||
DisguisePlayer dp = _disguisedPlayerDisguises.get(player);
|
||||
|
||||
dp.setSneaking(!dp.getSneaking());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerLeftClick(PlayerInteractEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if(event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_BLOCK)
|
||||
{
|
||||
if(_disguisedPlayers.containsKey(player))
|
||||
{
|
||||
EntityHuman human = (((CraftHumanEntity) ((CraftPlayer) player)).getHandle());
|
||||
human.world.broadcastEntityEffect(human, (byte) 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onDPlayerChat(AsyncPlayerChatEvent event)
|
||||
{
|
||||
if(_disguisedPlayers.containsKey(event.getPlayer()))
|
||||
{
|
||||
event.setFormat(" *" + event.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void on(PlayerInteractEvent event)
|
||||
{
|
||||
if(event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_BLOCK)
|
||||
{
|
||||
if(_disguisedPlayers.containsKey(event.getPlayer()))
|
||||
{
|
||||
|
||||
Player player = event.getPlayer();
|
||||
|
||||
PacketPlayOutAnimation packet = new PacketPlayOutAnimation();
|
||||
packet.a = player.getEntityId();
|
||||
|
||||
for(Player p : Bukkit.getOnlinePlayers())
|
||||
{
|
||||
if(p != player)
|
||||
{
|
||||
Plugin.getPacketHandler().getPacketVerifier((Player) p).bypassProcess(packet);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ public class SetCommand extends CommandBase<ArcadeManager>
|
|||
if (Plugin.GetGame() == null)
|
||||
return;
|
||||
|
||||
if (args == null || args.length == 0)
|
||||
if (args.length == 0)
|
||||
{
|
||||
caller.sendMessage(F.help("/game set <GameType> (MapSource) (Map)", "Set the current game or next game", Rank.ADMIN));
|
||||
return;
|
||||
|
|
|
@ -28,7 +28,7 @@ public class StartCommand extends CommandBase<ArcadeManager>
|
|||
}
|
||||
|
||||
int seconds;
|
||||
if(args != null && args.length > 0)
|
||||
if(args.length > 0)
|
||||
seconds = Integer.parseInt(args[0]);
|
||||
else
|
||||
seconds = 10;
|
||||
|
|
|
@ -5,30 +5,44 @@ import java.util.ArrayList;
|
|||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.craftbukkit.v1_7_R4.CraftWorld;
|
||||
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftHumanEntity;
|
||||
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
|
||||
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftItem;
|
||||
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
|
||||
import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Hanging;
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.FoodLevelChangeEvent;
|
||||
import org.bukkit.event.entity.ItemSpawnEvent;
|
||||
import org.bukkit.event.hanging.HangingBreakEvent;
|
||||
import org.bukkit.event.hanging.HangingPlaceEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerLoginEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.world.WorldLoadEvent;
|
||||
import org.bukkit.scoreboard.Objective;
|
||||
import org.bukkit.scoreboard.Team;
|
||||
import org.bukkit.scoreboard.TeamNameTagVisibility;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
|
@ -40,10 +54,15 @@ import mineplex.core.common.util.UtilServer;
|
|||
import mineplex.core.common.util.UtilTabTitle;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.common.util.UtilTextMiddle;
|
||||
import mineplex.core.disguise.disguises.DisguisePlayer;
|
||||
import mineplex.core.itemstack.ItemBuilder;
|
||||
import mineplex.core.packethandler.IPacketHandler;
|
||||
import mineplex.core.packethandler.PacketInfo;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.minecraft.game.classcombat.event.ClassCombatCreatureAllowSpawnEvent;
|
||||
import mineplex.minecraft.game.core.combat.DeathMessageType;
|
||||
import mineplex.minecraft.game.core.combat.event.CombatDeathEvent;
|
||||
import nautilus.game.arcade.ArcadeFormat;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.GameType;
|
||||
|
@ -58,7 +77,11 @@ import nautilus.game.arcade.managers.GameLobbyManager;
|
|||
import nautilus.game.arcade.scoreboard.GameScoreboard;
|
||||
import nautilus.game.arcade.stats.*;
|
||||
import nautilus.game.arcade.world.WorldData;
|
||||
import net.minecraft.server.v1_7_R4.EntityHuman;
|
||||
import net.minecraft.server.v1_7_R4.EntityItem;
|
||||
import net.minecraft.server.v1_7_R4.PacketPlayInUseEntity;
|
||||
import net.minecraft.server.v1_7_R4.PacketPlayOutScoreboardTeam;
|
||||
import net.minecraft.server.v1_7_R4.ScoreboardTeam;
|
||||
import net.minecraft.server.v1_7_R4.WorldServer;
|
||||
import net.minecraft.util.com.mojang.authlib.GameProfile;
|
||||
|
||||
public abstract class Game implements Listener
|
||||
|
@ -271,6 +294,18 @@ public abstract class Game implements Listener
|
|||
|
||||
public boolean VersionRequire1_8 = false;
|
||||
|
||||
public boolean DeadBodies = false;
|
||||
public boolean DeadBodiesQuit = true;
|
||||
public boolean DeadBodiesDeath = true;
|
||||
public int DeadBodiesExpire = -1;
|
||||
|
||||
private IPacketHandler _useEntityPacketHandler;
|
||||
protected Field NameTagVisibility;
|
||||
protected Field PacketTeam;
|
||||
private int _deadBodyCount;
|
||||
private NautHashMap<String, Entity> _deadBodies = new NautHashMap<String, Entity>();
|
||||
private NautHashMap<String, Long> _deadBodiesExpire = new NautHashMap<String, Long>();
|
||||
|
||||
public ArrayList<String> GemBoosters = new ArrayList<String>();
|
||||
private final Set<StatTracker<? extends Game>> _statTrackers = new HashSet<>();
|
||||
|
||||
|
@ -346,6 +381,41 @@ public abstract class Game implements Listener
|
|||
|
||||
Manager.setResourcePack(gameType.getResourcePackUrl(), gameType.isEnforceResourcePack());
|
||||
|
||||
try
|
||||
{
|
||||
PacketTeam = Class.forName(
|
||||
"org.bukkit.craftbukkit.v1_7_R4.scoreboard.CraftTeam")
|
||||
.getDeclaredField("team");
|
||||
PacketTeam.setAccessible(true);
|
||||
|
||||
NameTagVisibility = PacketPlayOutScoreboardTeam.class
|
||||
.getDeclaredField("_nameTagVisibility");
|
||||
NameTagVisibility.setAccessible(true);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
_useEntityPacketHandler = new IPacketHandler()
|
||||
{
|
||||
@Override
|
||||
public void handle(PacketInfo packetInfo)
|
||||
{
|
||||
if (packetInfo.getPacket() instanceof PacketPlayInUseEntity)
|
||||
{
|
||||
net.minecraft.server.v1_7_R4.Entity entity = ((PacketPlayInUseEntity) packetInfo
|
||||
.getPacket()).a(((CraftWorld) packetInfo
|
||||
.getPlayer().getWorld()).getHandle());
|
||||
|
||||
if (entity instanceof EntityItem)
|
||||
{
|
||||
packetInfo.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
System.out.println("Loading " + GetName() + "...");
|
||||
}
|
||||
|
||||
|
@ -1449,5 +1519,265 @@ public abstract class Game implements Listener
|
|||
//End
|
||||
SetState(GameState.End);
|
||||
}
|
||||
|
||||
|
||||
@EventHandler
|
||||
public void handleInteractEntityPacket(GameStateChangeEvent event)
|
||||
{
|
||||
if (event.GetState() == GameState.Live)
|
||||
{
|
||||
getArcadeManager().getPacketHandler().addPacketHandler(
|
||||
_useEntityPacketHandler);
|
||||
}
|
||||
else if (event.GetState() == GameState.Dead)
|
||||
{
|
||||
getArcadeManager().getPacketHandler().removePacketHandler(
|
||||
_useEntityPacketHandler);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDeadBodyJoin(PlayerJoinEvent event)
|
||||
{
|
||||
for (int i = 0; i < _deadBodyCount; i++)
|
||||
{
|
||||
String name = "";
|
||||
|
||||
for (char c : ("" + i).toCharArray())
|
||||
{
|
||||
name += "§" + c;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
Team team = Scoreboard.GetScoreboard().getTeam(name);
|
||||
|
||||
if (team == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
PacketPlayOutScoreboardTeam packet = new PacketPlayOutScoreboardTeam(
|
||||
(ScoreboardTeam) PacketTeam.get(team), 2);
|
||||
|
||||
UtilPlayer.sendPacket(event.getPlayer(), packet);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDeadBodyDeath(CombatDeathEvent event)
|
||||
{
|
||||
if (!IsLive())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(event.GetEvent().getEntity() instanceof Player))
|
||||
return;
|
||||
|
||||
if (!DeadBodiesDeath)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
spawnDeadBody((Player) event.GetEvent().getEntity());
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOW)
|
||||
public void onDeadBodyQuit(PlayerQuitEvent event)
|
||||
{
|
||||
if (!IsLive())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!IsAlive(event.getPlayer()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!DeadBodiesQuit)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
spawnDeadBody(event.getPlayer());
|
||||
}
|
||||
|
||||
private void spawnDeadBody(Player player)
|
||||
{
|
||||
if (!DeadBodies)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
String name = "";
|
||||
|
||||
for (char c : ("" + _deadBodyCount++).toCharArray())
|
||||
{
|
||||
name += "§" + c;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
Team team = Scoreboard.GetScoreboard().registerNewTeam(name);
|
||||
|
||||
team.setNameTagVisibility(TeamNameTagVisibility.NEVER);
|
||||
team.addEntry(name);
|
||||
|
||||
PacketPlayOutScoreboardTeam packet = new PacketPlayOutScoreboardTeam(
|
||||
(ScoreboardTeam) PacketTeam.get(team), 2);
|
||||
|
||||
for (Player alive : GetPlayers(false))
|
||||
{
|
||||
UtilPlayer.sendPacket(alive, packet);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
GameProfile newProfile = new GameProfile(UUID.randomUUID(), name);
|
||||
|
||||
newProfile.getProperties()
|
||||
.putAll(((CraftPlayer) player).getHandle().getProfile()
|
||||
.getProperties());
|
||||
|
||||
DisguisePlayer disguise = new DisguisePlayer(null, newProfile);
|
||||
|
||||
disguise.setSleeping(getSleepingFace(player.getLocation()));
|
||||
|
||||
getArcadeManager().GetDisguise().addFutureDisguise(disguise);
|
||||
|
||||
Location loc = player.getLocation();
|
||||
WorldServer world = ((CraftWorld) loc.getWorld()).getHandle();
|
||||
|
||||
EntityItem nmsItem = new EntityItem(world, loc.getX(),
|
||||
loc.getY() + 0.5, loc.getZ(),
|
||||
CraftItemStack.asNMSCopy(new ItemBuilder(Material.STONE)
|
||||
.setTitle(System.currentTimeMillis() + "").build()));
|
||||
|
||||
nmsItem.motX = 0;
|
||||
nmsItem.motY = 0;
|
||||
nmsItem.motZ = 0;
|
||||
nmsItem.yaw = 0;
|
||||
|
||||
world.addEntity(nmsItem);
|
||||
|
||||
Item entity = new CraftItem(world.getServer(), nmsItem);
|
||||
|
||||
entity.setPickupDelay(Integer.MAX_VALUE);
|
||||
|
||||
_deadBodies.put(player.getName(), entity);
|
||||
|
||||
if (DeadBodiesExpire > 0)
|
||||
{
|
||||
_deadBodiesExpire.put(player.getName(), System.currentTimeMillis()
|
||||
+ (DeadBodiesExpire * 1000));
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onDeadBodyItemSpawn(ItemSpawnEvent event)
|
||||
{
|
||||
if (_deadBodies.containsValue(event.getEntity()))
|
||||
{
|
||||
event.setCancelled(false);
|
||||
|
||||
((CraftEntity) event.getEntity()).getHandle().dead = false;
|
||||
}
|
||||
}
|
||||
|
||||
public NautHashMap<String, Entity> getDeadBodies()
|
||||
{
|
||||
return _deadBodies;
|
||||
}
|
||||
|
||||
public void cleanDeadBodies()
|
||||
{
|
||||
for (Entity entity : _deadBodies.values())
|
||||
{
|
||||
entity.remove();
|
||||
}
|
||||
|
||||
_deadBodies.clear();
|
||||
_deadBodiesExpire.clear();
|
||||
_deadBodyCount = 0;
|
||||
}
|
||||
|
||||
private BlockFace getSleepingFace(Location loc)
|
||||
{
|
||||
Block block = loc.getBlock();
|
||||
|
||||
while (block.getY() > 0
|
||||
&& !UtilBlock.fullSolid(block.getRelative(BlockFace.DOWN))
|
||||
&& !UtilBlock.solid(block.getRelative(BlockFace.DOWN)))
|
||||
{
|
||||
block = block.getRelative(BlockFace.DOWN);
|
||||
}
|
||||
|
||||
BlockFace proper = BlockFace.values()[Math.round(loc.getYaw() / 90F) & 0x3]
|
||||
.getOppositeFace();
|
||||
|
||||
// A complicated way to get the face the dead body should be towards.
|
||||
for (HashSet<Byte> validBlocks : new HashSet[]
|
||||
{
|
||||
UtilBlock.blockAirFoliageSet, UtilBlock.blockPassSet
|
||||
})
|
||||
{
|
||||
|
||||
if (validBlocks.contains((byte) block.getRelative(proper)
|
||||
.getTypeId()))
|
||||
{
|
||||
return proper;
|
||||
}
|
||||
|
||||
for (BlockFace face : new BlockFace[]
|
||||
{
|
||||
BlockFace.EAST, BlockFace.SOUTH, BlockFace.NORTH,
|
||||
BlockFace.WEST
|
||||
})
|
||||
{
|
||||
if (validBlocks.contains((byte) block.getRelative(face)
|
||||
.getTypeId()))
|
||||
{
|
||||
return face;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return proper;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDeadBodiesExpire(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.SEC)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Iterator<Entry<String, Long>> itel = _deadBodiesExpire.entrySet()
|
||||
.iterator();
|
||||
|
||||
while (itel.hasNext())
|
||||
{
|
||||
Entry<String, Long> entry = itel.next();
|
||||
|
||||
if (entry.getValue() < System.currentTimeMillis())
|
||||
{
|
||||
if (_deadBodies.containsKey(entry.getKey()))
|
||||
{
|
||||
_deadBodies.remove(entry.getKey()).remove();
|
||||
}
|
||||
|
||||
itel.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -81,14 +81,22 @@ public class EventModule extends MiniPlugin
|
|||
{
|
||||
if (!event.getMessage().toLowerCase().startsWith("/sethost "))
|
||||
return;
|
||||
|
||||
boolean allowed = Manager.GetClients().Get(event.getPlayer()).GetRank().Has(event.getPlayer(), Rank.JNR_DEV, true);
|
||||
|
||||
boolean eventTestServer = _plugin.getConfig().getString("serverstatus.name").equalsIgnoreCase("SMTestServer-1");
|
||||
|
||||
if (!allowed)
|
||||
{
|
||||
allowed = _plugin.getConfig().getString("serverstatus.name").equalsIgnoreCase("SMTestServer-1") &&
|
||||
Manager.GetClients().Get(event.getPlayer()).GetRank().Has(event.getPlayer(), Rank.SNR_MODERATOR, true);
|
||||
}
|
||||
|
||||
if (!Manager.GetClients().Get(event.getPlayer()).GetRank().Has(event.getPlayer(), Rank.JNR_DEV, true)
|
||||
&& !event.getPlayer().isOp() &&
|
||||
(!eventTestServer && !Manager.GetClients().Get(event.getPlayer()).GetRank().Has(event.getPlayer(), Rank.SNR_MODERATOR, true)))
|
||||
if (!allowed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Manager.GetServerConfig().HostName = event.getMessage().split(" ")[1];
|
||||
|
||||
event.getPlayer().sendMessage("Set host to: " + event.getMessage().split(" ")[1]);
|
||||
|
|
|
@ -837,6 +837,9 @@ public class HideSeek extends TeamGame
|
|||
@EventHandler
|
||||
public void UseBoost(PlayerInteractEvent event)
|
||||
{
|
||||
if (!IsLive())
|
||||
return;
|
||||
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if (!UtilEvent.isAction(event, ActionType.R))
|
||||
|
@ -901,6 +904,9 @@ public class HideSeek extends TeamGame
|
|||
@EventHandler
|
||||
public void UseMeow(PlayerInteractEvent event)
|
||||
{
|
||||
if (!IsLive())
|
||||
return;
|
||||
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if (!UtilEvent.isAction(event, ActionType.R))
|
||||
|
@ -927,6 +933,9 @@ public class HideSeek extends TeamGame
|
|||
@EventHandler
|
||||
public void UseFirework(PlayerInteractEvent event)
|
||||
{
|
||||
if (!IsLive())
|
||||
return;
|
||||
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if (!UtilEvent.isAction(event, ActionType.R))
|
||||
|
|
|
@ -130,11 +130,6 @@ public class BombLobbers extends TeamGame implements IThrown
|
|||
_kills.put(player, _kills.containsKey(player) ? _kills.get(player) + 1 : 1);
|
||||
}
|
||||
|
||||
public void addAssist(Player player)
|
||||
{
|
||||
_kills.put(player, _kills.containsKey(player) ? _kills.get(player) + .5 : .5);
|
||||
}
|
||||
|
||||
public double getKills(Player player)
|
||||
{
|
||||
if (_kills.containsKey(player))
|
||||
|
@ -172,10 +167,6 @@ public class BombLobbers extends TeamGame implements IThrown
|
|||
{
|
||||
addKill(killer);
|
||||
}
|
||||
else
|
||||
{
|
||||
addAssist(killer);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -228,11 +219,23 @@ public class BombLobbers extends TeamGame implements IThrown
|
|||
tnt.setFuseTicks(60);
|
||||
|
||||
UtilAction.velocity(tnt, player.getLocation().getDirection(), 2.0D, false, 0.0D, 0.1D, 10.0D, false);
|
||||
Manager.GetProjectile().AddThrow(tnt, player, this, -1L, true, false, true, .2F);
|
||||
|
||||
|
||||
ArrayList<Player> canHit = new ArrayList<Player>();
|
||||
for (Player pos : GetPlayers(true))
|
||||
{
|
||||
if (GetTeam(player).HasPlayer(pos))
|
||||
continue;
|
||||
|
||||
canHit.add(pos);
|
||||
}
|
||||
|
||||
Manager.GetProjectile().AddThrow(tnt, player, this, -1L, true, false, true, .2F, canHit);
|
||||
|
||||
Manager.getPlugin().getServer().getPluginManager().callEvent(new TNTThrowEvent(player, tnt));
|
||||
|
||||
_tnt.put(tnt, new BombToken(player));
|
||||
|
||||
AddGems(player, 0.5, "TNT Thrown", true, true);
|
||||
}
|
||||
|
||||
public Player getThrower(TNTPrimed tnt)
|
||||
|
@ -562,6 +565,8 @@ public class BombLobbers extends TeamGame implements IThrown
|
|||
UtilAction.velocity(target, UtilAlg.getTrajectory2d(data.GetThrown().getLocation(), target.getLocation()), .2, false, 0, 0.2, .4, true);
|
||||
|
||||
Manager.GetDamage().NewDamageEvent(target, data.GetThrower(), null, DamageCause.PROJECTILE, 10.0, false, false, false, "Throwing TNT", "Throwing TNT Direct Hit");
|
||||
|
||||
AddGems((Player) data.GetThrower(), 4.0, "Direct Hit", true, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -4,6 +4,33 @@ import java.util.ArrayList;
|
|||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilAlg;
|
||||
import mineplex.core.common.util.UtilGear;
|
||||
import mineplex.core.common.util.UtilInv;
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.core.visibility.VisibilityManager;
|
||||
import mineplex.minecraft.game.core.combat.event.CombatDeathEvent;
|
||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.GameType;
|
||||
import nautilus.game.arcade.events.GameStateChangeEvent;
|
||||
import nautilus.game.arcade.game.GameTeam;
|
||||
import nautilus.game.arcade.game.GameTeam.PlayerState;
|
||||
import nautilus.game.arcade.game.SoloGame;
|
||||
import nautilus.game.arcade.game.games.milkcow.MilkRemoveEvent.RemoveType;
|
||||
import nautilus.game.arcade.game.games.milkcow.kits.KitCow;
|
||||
import nautilus.game.arcade.game.games.milkcow.kits.KitFarmerJump;
|
||||
import nautilus.game.arcade.game.games.milkcow.kits.KitSturdyFarmhand;
|
||||
import nautilus.game.arcade.kit.Kit;
|
||||
import nautilus.game.arcade.kit.NullKit;
|
||||
import net.minecraft.server.v1_7_R4.EntityCreature;
|
||||
import net.minecraft.server.v1_7_R4.Navigation;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
|
@ -25,31 +52,6 @@ import org.bukkit.inventory.ItemStack;
|
|||
import org.bukkit.scoreboard.DisplaySlot;
|
||||
import org.bukkit.scoreboard.Objective;
|
||||
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilAlg;
|
||||
import mineplex.core.common.util.UtilGear;
|
||||
import mineplex.core.common.util.UtilInv;
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.core.visibility.VisibilityManager;
|
||||
import mineplex.minecraft.game.core.combat.event.CombatDeathEvent;
|
||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.GameType;
|
||||
import nautilus.game.arcade.events.GameStateChangeEvent;
|
||||
import nautilus.game.arcade.game.GameTeam;
|
||||
import nautilus.game.arcade.game.SoloGame;
|
||||
import nautilus.game.arcade.game.GameTeam.PlayerState;
|
||||
import nautilus.game.arcade.game.games.milkcow.kits.*;
|
||||
import nautilus.game.arcade.kit.Kit;
|
||||
import nautilus.game.arcade.kit.NullKit;
|
||||
import net.minecraft.server.v1_7_R4.EntityCreature;
|
||||
import net.minecraft.server.v1_7_R4.Navigation;
|
||||
|
||||
public class MilkCow extends SoloGame
|
||||
{
|
||||
private GameTeam _farmers;
|
||||
|
@ -73,6 +75,7 @@ public class MilkCow extends SoloGame
|
|||
new Kit[]
|
||||
{
|
||||
new KitFarmerJump(manager),
|
||||
new KitSturdyFarmhand(manager),
|
||||
new NullKit(manager),
|
||||
new KitCow(manager),
|
||||
},
|
||||
|
@ -112,7 +115,7 @@ public class MilkCow extends SoloGame
|
|||
{
|
||||
if (team.GetColor() == ChatColor.RED)
|
||||
{
|
||||
if (kit.GetName().contains("Farmer"))
|
||||
if (kit.GetName().contains("Farm"))
|
||||
team.GetRestrictedKits().add(kit);
|
||||
}
|
||||
else
|
||||
|
@ -288,13 +291,17 @@ public class MilkCow extends SoloGame
|
|||
SetPlayerTeam(player, _cows, true);
|
||||
|
||||
//Kit
|
||||
Kit newKit = GetKits()[2];
|
||||
Kit newKit = GetKits()[3];
|
||||
|
||||
SetKit(player, newKit, false);
|
||||
newKit.ApplyKit(player);
|
||||
|
||||
//Refresh
|
||||
VisibilityManager.Instance.refreshPlayerToAll(player);
|
||||
|
||||
//Turn off flight
|
||||
player.setAllowFlight(false);
|
||||
player.setFlying(false);
|
||||
|
||||
if (forced)
|
||||
{
|
||||
|
@ -345,7 +352,9 @@ public class MilkCow extends SoloGame
|
|||
@EventHandler
|
||||
public void LoseMilk(PlayerDeathEvent event)
|
||||
{
|
||||
SetScore(event.getEntity(), Math.max(0, GetScore(event.getEntity()) - 5));
|
||||
MilkRemoveEvent e = new MilkRemoveEvent(event.getEntity(), 5, RemoveType.DEATH);
|
||||
Bukkit.getPluginManager().callEvent(e);
|
||||
SetScore(event.getEntity(), Math.max(0, GetScore(event.getEntity()) - e.GetMilk()));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
package nautilus.game.arcade.game.games.milkcow;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
public class MilkRemoveEvent extends Event
|
||||
{
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
private Player _player;
|
||||
private int _milk;
|
||||
private RemoveType _cause;
|
||||
|
||||
public MilkRemoveEvent(Player player, int milk, RemoveType cause)
|
||||
{
|
||||
_player = player;
|
||||
_milk = milk;
|
||||
_cause = cause;
|
||||
}
|
||||
|
||||
public HandlerList getHandlers()
|
||||
{
|
||||
return handlers;
|
||||
}
|
||||
|
||||
public static HandlerList getHandlerList()
|
||||
{
|
||||
return handlers;
|
||||
}
|
||||
|
||||
public Player GetPlayer()
|
||||
{
|
||||
return _player;
|
||||
}
|
||||
|
||||
public int GetMilk()
|
||||
{
|
||||
return _milk;
|
||||
}
|
||||
|
||||
public RemoveType GetCause()
|
||||
{
|
||||
return _cause;
|
||||
}
|
||||
|
||||
public void SetMilk(int milk)
|
||||
{
|
||||
_milk = milk;
|
||||
}
|
||||
|
||||
public static enum RemoveType
|
||||
{
|
||||
FLING, DEATH;
|
||||
}
|
||||
|
||||
}
|
|
@ -33,7 +33,7 @@ public class KitCow extends AbbreviatedKit
|
|||
new PerkKnockbackMultiplier(4),
|
||||
new PerkCharge(),
|
||||
new PerkCowBomb(),
|
||||
new PerkSeismicCow(),
|
||||
new PerkSeismicCow("Body Slam"),
|
||||
},
|
||||
EntityType.COW,
|
||||
null);
|
||||
|
@ -67,7 +67,7 @@ public class KitCow extends AbbreviatedKit
|
|||
new String[]
|
||||
{
|
||||
ChatColor.RESET + "Charge with great power, flinging",
|
||||
ChatColor.RESET + "filthy farmers out of your way!",
|
||||
ChatColor.RESET + "filthy farmers out of your way, making them drop the milk in their buckets!",
|
||||
}));
|
||||
|
||||
//Disguise
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue