From 0ff434cf916f300e755541c4a2835e3658db653a Mon Sep 17 00:00:00 2001 From: Ben Date: Tue, 8 Mar 2016 16:49:32 +0000 Subject: [PATCH 1/5] progress --- .../mineplex/core/common/function/Result.java | 7 ++ .../core/common/util/EnclosedObject.java | 26 +++++++ .../core/common/util/NonFinalInteger.java | 33 -------- .../core/common/util/NumberFloater.java | 28 +++++++ .../core/common/util/NumericalPulser.java | 42 ---------- .../account/repository/AccountRepository.java | 18 ++--- .../src/mineplex/core/vanish/Vanish.java | 77 +++++++++++++++++++ .../core/vanish/commands/VanishCommand.java | 21 +++++ .../core/vanish/events/PreVanishEvent.java | 52 +++++++++++++ .../core/vanish/repository/VanishClient.java | 6 ++ .../vanish/repository/VanishRepository.java | 53 +++++++++++++ 11 files changed, 278 insertions(+), 85 deletions(-) create mode 100644 Plugins/Mineplex.Core.Common/src/mineplex/core/common/function/Result.java create mode 100644 Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/EnclosedObject.java delete mode 100644 Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/NonFinalInteger.java create mode 100644 Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/NumberFloater.java delete mode 100644 Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/NumericalPulser.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/vanish/Vanish.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/vanish/commands/VanishCommand.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/vanish/events/PreVanishEvent.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/vanish/repository/VanishClient.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/vanish/repository/VanishRepository.java diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/function/Result.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/function/Result.java new file mode 100644 index 000000000..cb45540e3 --- /dev/null +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/function/Result.java @@ -0,0 +1,7 @@ +package mineplex.core.common.function; + +@FunctionalInterface +public interface Result +{ + public void Get(T result); +} diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/EnclosedObject.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/EnclosedObject.java new file mode 100644 index 000000000..d985c1b13 --- /dev/null +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/EnclosedObject.java @@ -0,0 +1,26 @@ +package mineplex.core.common.util; + +public class EnclosedObject +{ + private T _value; + + public EnclosedObject() + { + this(null); + } + + public EnclosedObject(T t) + { + _value = t; + } + + public T Get() + { + return _value; + } + + public T Set(T value) + { + return _value = value; + } +} diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/NonFinalInteger.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/NonFinalInteger.java deleted file mode 100644 index 6638cbed9..000000000 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/NonFinalInteger.java +++ /dev/null @@ -1,33 +0,0 @@ -package mineplex.core.common.util; - -public class NonFinalInteger -{ - private int _value; - - public NonFinalInteger() - { - this(0); - } - - public NonFinalInteger(int value) - { - _value = value; - } - - public NonFinalInteger add(int value) - { - _value += value; - return this; - } - - public NonFinalInteger subtract(int value) - { - _value -= value; - return this; - } - - public int get() - { - return _value; - } -} diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/NumberFloater.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/NumberFloater.java new file mode 100644 index 000000000..7a07934f5 --- /dev/null +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/NumberFloater.java @@ -0,0 +1,28 @@ +package mineplex.core.common.util; + +public class NumberFloater +{ + private double _min; + private double _max; + private double _modifyPerCall; + + private double _cur; + private boolean _up; + + public NumberFloater(double min, double max, double modify) + { + _min = min; + _max = max; + _modifyPerCall = modify; + } + + public double pulse() + { + if (_up && (_cur = UtilMath.clamp(_cur += _modifyPerCall, _min, _max)) >= _max) + _up = false; + else if ((_cur = UtilMath.clamp(_cur -= _modifyPerCall, _min, _max)) <= _min) + _up = true; + + return _cur; + } +} diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/NumericalPulser.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/NumericalPulser.java deleted file mode 100644 index e0de3e7d2..000000000 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/NumericalPulser.java +++ /dev/null @@ -1,42 +0,0 @@ -package mineplex.core.common.util; - -public class NumericalPulser -{ - private double _min; - private double _max; - private double _modifyPerCall; - - private double _cur; - private boolean _up; - - public NumericalPulser(double min, double max, double modify) - { - _min = min; - _max = max; - _modifyPerCall = modify; - } - - public double pulse() - { - if (_up) - { - _cur = UtilMath.clamp(_cur += _modifyPerCall, _min, _max); - - if (_cur >= _max) - { - _up = false; - } - } - else - { - _cur = UtilMath.clamp(_cur -= _modifyPerCall, _min, _max); - - if (_cur <= _min) - { - _up = true; - } - } - - return _cur; - } -} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/account/repository/AccountRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/account/repository/AccountRepository.java index 746b3cf6b..1cd0d96cf 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/account/repository/AccountRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/account/repository/AccountRepository.java @@ -10,26 +10,27 @@ import java.util.LinkedList; import java.util.List; import java.util.UUID; -import mineplex.core.database.MinecraftRepository; import org.bukkit.Bukkit; -import com.google.gson.reflect.TypeToken; import org.bukkit.plugin.java.JavaPlugin; +import com.google.gson.reflect.TypeToken; + import mineplex.core.account.ILoginProcessor; import mineplex.core.account.IQuerylessLoginProcessor; import mineplex.core.account.repository.token.LoginToken; import mineplex.core.account.repository.token.RankUpdateToken; import mineplex.core.common.Rank; import mineplex.core.common.util.Callback; +import mineplex.core.common.util.EnclosedObject; import mineplex.core.common.util.NautHashMap; +import mineplex.core.database.MinecraftRepository; +import mineplex.core.server.remotecall.JsonWebCall; import mineplex.serverdata.database.DBPool; import mineplex.serverdata.database.DatabaseRunnable; -import mineplex.serverdata.database.RepositoryBase; import mineplex.serverdata.database.ResultSetCallable; import mineplex.serverdata.database.column.ColumnBoolean; import mineplex.serverdata.database.column.ColumnTimestamp; import mineplex.serverdata.database.column.ColumnVarChar; -import mineplex.core.server.remotecall.JsonWebCall; public class AccountRepository extends MinecraftRepository { @@ -189,7 +190,7 @@ public class AccountRepository extends MinecraftRepository public UUID getClientUUID(String name) { - final List uuids = new ArrayList(); + EnclosedObject uuid = new EnclosedObject<>(); executeQuery(SELECT_ACCOUNT_UUID_BY_NAME, new ResultSetCallable() { @@ -198,15 +199,12 @@ public class AccountRepository extends MinecraftRepository { while (resultSet.next()) { - uuids.add(UUID.fromString(resultSet.getString(1))); + uuid.Set(UUID.fromString(resultSet.getString(1))); } } }, new ColumnVarChar("name", 100, name)); - if (uuids.size() > 0) - return uuids.get(0); - else - return null; + return uuid.Get(); } public void saveRank(final Callback callback, final String name, final UUID uuid, final Rank rank, final boolean perm) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/vanish/Vanish.java b/Plugins/Mineplex.Core/src/mineplex/core/vanish/Vanish.java new file mode 100644 index 000000000..54df46561 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/vanish/Vanish.java @@ -0,0 +1,77 @@ +package mineplex.core.vanish; + +import java.sql.ResultSet; +import java.sql.SQLException; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.plugin.java.JavaPlugin; + +import mineplex.core.MiniClientPlugin; +import mineplex.core.account.CoreClientManager; +import mineplex.core.account.event.ClientWebResponseEvent; +import mineplex.core.common.util.UtilServer; +import mineplex.core.vanish.commands.VanishCommand; +import mineplex.core.vanish.events.PreVanishEvent; +import mineplex.core.vanish.repository.VanishClient; +import mineplex.core.vanish.repository.VanishRepository; + +public class Vanish extends MiniClientPlugin +{ + private CoreClientManager _clientManager; + private VanishRepository _repository; + + public Vanish(JavaPlugin plugin, CoreClientManager clientManager) + { + super("Vanish", plugin); + + _repository = new VanishRepository(this); + _clientManager = clientManager; + } + + public void addCommands() + { + addCommand(new VanishCommand(this)); + } + + public boolean toggle(Player caller) + { + boolean enabled = !Get(caller).State; + + PreVanishEvent event = new PreVanishEvent(caller, enabled);//UtilServer.callEvent(new PreVanishEvent(caller, true)); + + UtilServer.getServer().getPluginManager().callEvent(event); + + if (event.isCancelled()) + { + return; + } + + Get(caller).State = enabled; + + return enabled; + } + + @EventHandler + public void ClientLoad(ClientWebResponseEvent event) + { + Get(event.get + } + + public String getQuery(int accountId, String uuid, String name) + { + return "CREATE TABLE IF NOT EXISTS incognitoStaff (accountId INT NOT NULL, enabled TINYINT(1) NOT NULL, enabledTime BIGINT)"; + } + + public void processLoginResultSet(String playerName, int accountId, ResultSet resultSet) throws SQLException + { + int accountId = resultSet.getInt("accountId"); + boolean enabled = resultSet.getBoolean("enabled"); + } + + protected VanishClient AddPlayer(String player) + { + return new VanishClient(); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/vanish/commands/VanishCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/vanish/commands/VanishCommand.java new file mode 100644 index 000000000..e1c32da32 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/vanish/commands/VanishCommand.java @@ -0,0 +1,21 @@ +package mineplex.core.vanish.commands; + +import org.bukkit.entity.Player; + +import mineplex.core.command.CommandBase; +import mineplex.core.common.Rank; +import mineplex.core.vanish.Vanish; + +public class VanishCommand extends CommandBase +{ + public VanishCommand(Vanish plugin) + { + super(plugin, Rank.HELPER, "incognito", "vanish"); + } + + @Override + public void Execute(Player caller, String[] args) + { + Plugin.toggle(caller); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/vanish/events/PreVanishEvent.java b/Plugins/Mineplex.Core/src/mineplex/core/vanish/events/PreVanishEvent.java new file mode 100644 index 000000000..77cfa676a --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/vanish/events/PreVanishEvent.java @@ -0,0 +1,52 @@ +package mineplex.core.vanish.events; + +import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class PreVanishEvent extends Event +{ + private static final HandlerList handlers = new HandlerList(); + + private Player _player; + private boolean _newState; + + private boolean _cancelled; + + public PreVanishEvent(Player player, boolean newState) + { + _player = player; + _newState = newState; + } + + public boolean getNewState() + { + return _newState; + } + + public Player getPlayer() + { + return _player; + } + + public void setCancelled(boolean cancelled) + { + _cancelled = cancelled; + } + + public boolean isCancelled() + { + return _cancelled; + } + + public HandlerList getHandlers() + { + return handlers; + } + + public static HandlerList getHandlerList() + { + return handlers; + } + +} \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/vanish/repository/VanishClient.java b/Plugins/Mineplex.Core/src/mineplex/core/vanish/repository/VanishClient.java new file mode 100644 index 000000000..4d64d6960 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/vanish/repository/VanishClient.java @@ -0,0 +1,6 @@ +package mineplex.core.vanish.repository; + +public class VanishClient +{ + public boolean State; +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/vanish/repository/VanishRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/vanish/repository/VanishRepository.java new file mode 100644 index 000000000..1d3cf0239 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/vanish/repository/VanishRepository.java @@ -0,0 +1,53 @@ +package mineplex.core.vanish.repository; + +import mineplex.core.common.util.EnclosedObject; +import mineplex.core.database.MinecraftRepository; +import mineplex.core.vanish.Vanish; +import mineplex.serverdata.database.DBPool; +import mineplex.serverdata.database.column.ColumnBoolean; +import mineplex.serverdata.database.column.ColumnInt; + +public class VanishRepository extends MinecraftRepository +{ + private static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS incognitoStaff (accountId INT NOT NULL, status TINYINT(1) DEFAULT '0');"; + private static final String GET_STATUS = "SELECT * FROM incognitoStaff WHERE accountId = ?;"; + private static final String SET_STATUS = "INSERT INTO incognitoStaff (accountId, status) VALUES (?, ?);"; + + private Vanish _vanish; + + public VanishRepository(Vanish vanish) + { + super(vanish.getPlugin(), DBPool.getAccount()); + + _vanish = vanish; + } + + public void setStatus(int accountId, boolean status) + { + executeUpdate(SET_STATUS, new ColumnInt("accountId", accountId), new ColumnBoolean("status", status)); + } + + public boolean getStatus(int accountId) + { + EnclosedObject status = new EnclosedObject<>(); + + executeQuery(GET_STATUS, result -> { + if (result.next()) + status.Set(Boolean.valueOf(result.getBoolean("accountId"))); + else + status.Set(Boolean.FALSE); + }, new ColumnInt("accountId", accountId)); + + return status.GetDispose().booleanValue(); + } + + protected void initialize() + { + executeUpdate(CREATE_TABLE); + } + + protected void update() + { + } + +} From 036565abb772828e3c2bf93e676527cddc7db35a Mon Sep 17 00:00:00 2001 From: Ben Date: Tue, 8 Mar 2016 17:44:15 +0000 Subject: [PATCH 2/5] more --- .../src/mineplex/core/vanish/Vanish.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/vanish/Vanish.java b/Plugins/Mineplex.Core/src/mineplex/core/vanish/Vanish.java index 54df46561..7f8a6eba9 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/vanish/Vanish.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/vanish/Vanish.java @@ -5,11 +5,13 @@ import java.sql.SQLException; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.player.AsyncPlayerPreLoginEvent; +import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.plugin.java.JavaPlugin; import mineplex.core.MiniClientPlugin; import mineplex.core.account.CoreClientManager; -import mineplex.core.account.event.ClientWebResponseEvent; import mineplex.core.common.util.UtilServer; import mineplex.core.vanish.commands.VanishCommand; import mineplex.core.vanish.events.PreVanishEvent; @@ -44,7 +46,7 @@ public class Vanish extends MiniClientPlugin if (event.isCancelled()) { - return; + return false; } Get(caller).State = enabled; @@ -52,10 +54,18 @@ public class Vanish extends MiniClientPlugin return enabled; } - @EventHandler - public void ClientLoad(ClientWebResponseEvent event) + @EventHandler(priority = EventPriority.LOWEST) + public void ClientLoad(AsyncPlayerPreLoginEvent event) { - Get(event.get + _clientManager.getRepository().getAccountId(event.getUniqueId(), accountId -> { + Get(event.getName()).State = _repository.getStatus(accountId); + }); + } + + @EventHandler(priority = EventPriority.LOWEST) + public void ClientLoad(PlayerJoinEvent event) + { + Get( } public String getQuery(int accountId, String uuid, String name) From 6b61d4aecde30a18ebb6009f18ffcc6f1eddde2a Mon Sep 17 00:00:00 2001 From: Ben Date: Tue, 8 Mar 2016 18:03:07 +0000 Subject: [PATCH 3/5] Disable Alpha Manager. --- .../src/mineplex/game/clans/clans/ClansManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java index 7981a5a5e..ac5b5064f 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java @@ -276,7 +276,7 @@ public class ClansManager extends MiniClientPluginimplements IRelati new ClanEnergyTracker(plugin, this); new StuckManager(this); - new ClansAlphaManager(this, taskManager); +// new ClansAlphaManager(this, taskManager); new PotatoManager(plugin, this); From 86ef10456cf5640c4923de64dc8bf98f3c248c7a Mon Sep 17 00:00:00 2001 From: Ben Date: Tue, 8 Mar 2016 18:10:57 +0000 Subject: [PATCH 4/5] packet hnadler beginning, switching to clans to fix errors --- .../core/packethandler/PacketHandler.java | 3 +- .../src/mineplex/core/vanish/Vanish.java | 36 ++++++++++++------- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketHandler.java b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketHandler.java index 44f2086be..5e76bf104 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketHandler.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketHandler.java @@ -87,7 +87,8 @@ public class PacketHandler extends MiniPlugin return _playerVerifierMap.get(player); } - public void addPacketHandler(IPacketHandler packetHandler, Class... packetsToListen) + @SafeVarargs + public final void addPacketHandler(IPacketHandler packetHandler, Class... packetsToListen) { if (packetsToListen.length == 0) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/vanish/Vanish.java b/Plugins/Mineplex.Core/src/mineplex/core/vanish/Vanish.java index 7f8a6eba9..c6f51cc64 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/vanish/Vanish.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/vanish/Vanish.java @@ -1,8 +1,5 @@ package mineplex.core.vanish; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -12,23 +9,31 @@ import org.bukkit.plugin.java.JavaPlugin; import mineplex.core.MiniClientPlugin; import mineplex.core.account.CoreClientManager; +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; +import mineplex.core.packethandler.PacketHandler; import mineplex.core.vanish.commands.VanishCommand; import mineplex.core.vanish.events.PreVanishEvent; import mineplex.core.vanish.repository.VanishClient; import mineplex.core.vanish.repository.VanishRepository; +import net.minecraft.server.v1_8_R3.PacketPlayOutChat; public class Vanish extends MiniClientPlugin { private CoreClientManager _clientManager; private VanishRepository _repository; - public Vanish(JavaPlugin plugin, CoreClientManager clientManager) + public Vanish(JavaPlugin plugin, CoreClientManager clientManager, PacketHandler packetHandler) { super("Vanish", plugin); _repository = new VanishRepository(this); _clientManager = clientManager; + + packetHandler.addPacketHandler(packet -> { + + }, PacketPlayOutChat.class); } public void addCommands() @@ -54,18 +59,30 @@ public class Vanish extends MiniClientPlugin return enabled; } + @EventHandler + public void join + @EventHandler(priority = EventPriority.LOWEST) public void ClientLoad(AsyncPlayerPreLoginEvent event) { _clientManager.getRepository().getAccountId(event.getUniqueId(), accountId -> { - Get(event.getName()).State = _repository.getStatus(accountId); + Get(event.getName()).State = _repository.getStatus(accountId.intValue()); }); } @EventHandler(priority = EventPriority.LOWEST) public void ClientLoad(PlayerJoinEvent event) { - Get( + if (Get(event.getPlayer()).State) + { + event.setJoinMessage(null); + informVanished(event.getPlayer()); + } + } + + private void informVanished(Player player) + { + UtilPlayer.message(player, C.cGold + ""); } public String getQuery(int accountId, String uuid, String name) @@ -73,15 +90,8 @@ public class Vanish extends MiniClientPlugin return "CREATE TABLE IF NOT EXISTS incognitoStaff (accountId INT NOT NULL, enabled TINYINT(1) NOT NULL, enabledTime BIGINT)"; } - public void processLoginResultSet(String playerName, int accountId, ResultSet resultSet) throws SQLException - { - int accountId = resultSet.getInt("accountId"); - boolean enabled = resultSet.getBoolean("enabled"); - } - protected VanishClient AddPlayer(String player) { return new VanishClient(); } - } From 26b7ea2d5925a756d06c1ffb6a80f5c4cbb443c1 Mon Sep 17 00:00:00 2001 From: Ben Date: Tue, 8 Mar 2016 18:19:12 +0000 Subject: [PATCH 5/5] fixes --- .../core/common/util/EnclosedObject.java | 88 ++++++++++++++++++- .../clans/clans/ban/ClansBanRepository.java | 7 +- .../clans/clans/siege/outpost/Outpost.java | 10 +-- 3 files changed, 95 insertions(+), 10 deletions(-) diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/EnclosedObject.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/EnclosedObject.java index d985c1b13..37038f8ca 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/EnclosedObject.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/EnclosedObject.java @@ -6,7 +6,7 @@ public class EnclosedObject public EnclosedObject() { - this(null); + this((T) null); } public EnclosedObject(T t) @@ -23,4 +23,90 @@ public class EnclosedObject { return _value = value; } + + public String toString() + { + return _value.toString(); + } + + // Arithmetic operations, will only work if T is an instance of Number + public long Add(Number number) + { + if (!(_value instanceof Number)) + { + throw new RuntimeException("Type of T must be an instance of Number to perform arithmetic."); + } + + return ((Number) _value).longValue() + number.longValue(); + } + + public long Subtract(Number number) + { + if (!(_value instanceof Number)) + { + throw new RuntimeException("Type of T must be an instance of Number to perform arithmetic."); + } + + return ((Number) _value).longValue() - number.longValue(); + } + + public long Multiply(Number number) + { + if (!(_value instanceof Number)) + { + throw new RuntimeException("Type of T must be an instance of Number to perform arithmetic."); + } + + return ((Number) _value).longValue() * number.longValue(); + } + + public long Divide(Number number) + { + if (!(_value instanceof Number)) + { + throw new RuntimeException("Type of T must be an instance of Number to perform arithmetic."); + } + + return ((Number) _value).longValue() / number.longValue(); + } + + public double PreciseAdd(Number number) + { + if (!(_value instanceof Number)) + { + throw new RuntimeException("Type of T must be an instance of Number to perform arithmetic."); + } + + return ((Number) _value).doubleValue() + number.doubleValue(); + } + + public double PreciseSubtract(Number number) + { + if (!(_value instanceof Number)) + { + throw new RuntimeException("Type of T must be an instance of Number to perform arithmetic."); + } + + return ((Number) _value).doubleValue() - number.doubleValue(); + } + + public double PreciseMultiply(Number number) + { + if (!(_value instanceof Number)) + { + throw new RuntimeException("Type of T must be an instance of Number to perform arithmetic."); + } + + return ((Number) _value).doubleValue() * number.doubleValue(); + } + + public double PreciseDivide(Number number) + { + if (!(_value instanceof Number)) + { + throw new RuntimeException("Type of T must be an instance of Number to perform arithmetic."); + } + + return ((Number) _value).doubleValue() / number.doubleValue(); + } } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ban/ClansBanRepository.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ban/ClansBanRepository.java index 287d3c1de..0e2449ea6 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ban/ClansBanRepository.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ban/ClansBanRepository.java @@ -6,14 +6,13 @@ import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; -import mineplex.core.database.MinecraftRepository; import org.bukkit.plugin.java.JavaPlugin; import mineplex.core.account.CoreClient; import mineplex.core.common.util.Callback; -import mineplex.core.common.util.NonFinalInteger; +import mineplex.core.common.util.EnclosedObject; +import mineplex.core.database.MinecraftRepository; import mineplex.serverdata.database.DBPool; -import mineplex.serverdata.database.RepositoryBase; import mineplex.serverdata.database.ResultSetCallable; import mineplex.serverdata.database.column.ColumnBoolean; import mineplex.serverdata.database.column.ColumnInt; @@ -127,7 +126,7 @@ public class ClansBanRepository extends MinecraftRepository public void processResultSet(ResultSet resultSet) throws SQLException { final List clients = new ArrayList<>(); - final NonFinalInteger resultsProcessed = new NonFinalInteger(); + final EnclosedObject resultsProcessed = new EnclosedObject<>(); int resultsFound = 0; while (resultSet.next()) diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/outpost/Outpost.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/outpost/Outpost.java index 332ec8f47..15ddf2aa9 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/outpost/Outpost.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/outpost/Outpost.java @@ -27,9 +27,9 @@ import org.bukkit.util.Vector; import mineplex.core.common.util.C; import mineplex.core.common.util.ColorFader; +import mineplex.core.common.util.EnclosedObject; import mineplex.core.common.util.F; import mineplex.core.common.util.LoopIterator; -import mineplex.core.common.util.NonFinalInteger; import mineplex.core.common.util.RGBData; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; @@ -543,18 +543,18 @@ public class Outpost implements Listener { _state = OutpostState.DESTRUCTING; - NonFinalInteger wait = new NonFinalInteger(0); + EnclosedObject wait = new EnclosedObject<>(0); _blocks.values().stream().filter(block -> UtilMath.random.nextBoolean() && UtilMath.random.nextBoolean()).filter(block -> UtilMath.random.nextBoolean()).limit(13).forEach(block -> _outpostManager.runSyncLater(() -> { UtilParticle.PlayParticleToAll(ParticleType.HUGE_EXPLOSION, block.getLocation(), new Vector(0,0,0), 1f, 1, ViewDist.MAX); _origin.getWorld().playSound(block.getLocation(), Sound.EXPLODE, 1.0f, 1.0f); - }, wait.add(4 + UtilMath.random.nextInt(4)).get()) + }, wait.Add(Integer.valueOf(4 + UtilMath.random.nextInt(4)))) ); _outpostManager.runSyncLater(() -> { _blocks.values().stream().forEach(OutpostBlock::restore); - }, wait.get() + 5L); + }, wait.Get().intValue() + 5L); _outpostManager.runSyncLater(() -> { _blocks.values().stream().forEach(block -> { @@ -578,7 +578,7 @@ public class Outpost implements Listener }); cleanup(); - }, wait.get() + 6L); + }, wait.Get().intValue() + 6L); if (_lifetimeLeft != null) _lifetimeLeft.stop();