diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilWorld.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilWorld.java index f156f7f5a..19281c9ce 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilWorld.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilWorld.java @@ -1,8 +1,8 @@ package mineplex.core.common.util; import java.util.Collection; +import java.util.Iterator; import java.util.List; -import java.util.function.Predicate; import org.bukkit.Chunk; import org.bukkit.Location; @@ -10,10 +10,18 @@ import org.bukkit.World; import org.bukkit.World.Environment; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; import org.bukkit.util.Vector; import com.google.common.collect.Lists; +import net.minecraft.server.v1_8_R3.EntityHuman; +import net.minecraft.server.v1_8_R3.EntityPlayer; +import net.minecraft.server.v1_8_R3.Explosion; +import net.minecraft.server.v1_8_R3.PacketPlayOutExplosion; +import net.minecraft.server.v1_8_R3.Vec3D; + public class UtilWorld { public static World getWorld(String world) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/incognito/IncognitoManager.java b/Plugins/Mineplex.Core/src/mineplex/core/incognito/IncognitoManager.java index afb328093..18b94a27b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/incognito/IncognitoManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/incognito/IncognitoManager.java @@ -2,8 +2,6 @@ package mineplex.core.incognito; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -13,8 +11,6 @@ import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.plugin.java.JavaPlugin; -import com.google.common.base.Function; - import mineplex.core.MiniDbClientPlugin; import mineplex.core.account.CoreClientManager; import mineplex.core.common.Rank; @@ -27,6 +23,7 @@ import mineplex.core.incognito.events.IncognitoStatusChangeEvent; import mineplex.core.incognito.repository.IncognitoClient; import mineplex.core.incognito.repository.IncognitoRepository; import mineplex.core.packethandler.PacketHandler; +import mineplex.core.preferences.PreferencesManager; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; @@ -34,11 +31,12 @@ public class IncognitoManager extends MiniDbClientPlugin { private CoreClientManager _clientManager; private IncognitoRepository _repository; + private PreferencesManager _preferencesManager; public IncognitoManager(JavaPlugin plugin, CoreClientManager clientManager, PacketHandler packetHandler) { super("Incognito", plugin, clientManager); - + _repository = new IncognitoRepository(this); _clientManager = clientManager; } @@ -131,6 +129,41 @@ public class IncognitoManager extends MiniDbClientPlugin } } } + + @EventHandler + public void update(UpdateEvent event) + { + if (event.getType() != UpdateType.FAST) + { + return; + } + + for (Player player : UtilServer.getPlayers()) + { + for (Player other : UtilServer.getPlayers()) + { + if (Get(player).Status) + { + IncognitoHidePlayerEvent customEvent = UtilServer.CallEvent(new IncognitoHidePlayerEvent(player)); + + if (!customEvent.isCancelled() && !_clientManager.hasRank(other, _clientManager.Get(player).GetRank())) + { + other.hidePlayer(player); + } + } + + if (Get(other).Status) + { + IncognitoHidePlayerEvent customEvent = UtilServer.CallEvent(new IncognitoHidePlayerEvent(other)); + + if (!customEvent.isCancelled() && !_clientManager.hasRank(player, _clientManager.Get(other).GetRank())) + { + player.hidePlayer(other); + } + } + } + } + } @EventHandler(priority = EventPriority.HIGHEST) public void Quit(PlayerQuitEvent event) @@ -182,4 +215,14 @@ public class IncognitoManager extends MiniDbClientPlugin Get(playerName).Status = resultSet.getInt("status") == 1; } } + + public PreferencesManager getPreferences() + { + return _preferencesManager; + } + + public void setPreferencesManager(PreferencesManager preferencesManager) + { + _preferencesManager = preferencesManager; + } } \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/incognito/commands/IncognitoToggleCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/incognito/commands/IncognitoToggleCommand.java index 23f54dca7..83eefcdc9 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/incognito/commands/IncognitoToggleCommand.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/incognito/commands/IncognitoToggleCommand.java @@ -18,6 +18,12 @@ public class IncognitoToggleCommand extends CommandBase @Override public void Execute(Player caller, String[] args) { + if (Plugin.getPreferences().Get(caller).Invisibility) + { + UtilPlayer.message(caller, F.main("Incognito", "You are not allowed to toggle incognito on while Hub Invisibility is enabled.")); + return; + } + if (Plugin.toggle(caller)) { UtilPlayer.message(caller, F.main("Incognito", "You are now incognito. Your status will only change when you run " + F.elem(AliasUsed) + " again.")); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/preferences/PreferencesManager.java b/Plugins/Mineplex.Core/src/mineplex/core/preferences/PreferencesManager.java index ae7f67755..9d6439e46 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/preferences/PreferencesManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/preferences/PreferencesManager.java @@ -4,20 +4,6 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.Map.Entry; -import mineplex.core.MiniDbClientPlugin; -import mineplex.core.account.CoreClientManager; -import mineplex.core.common.util.C; -import mineplex.core.common.util.NautHashMap; -import mineplex.core.common.util.UtilGear; -import mineplex.core.common.util.UtilInv; -import mineplex.core.donation.DonationManager; -import mineplex.core.itemstack.ItemStackFactory; -import mineplex.core.preferences.command.PreferencesCommand; -import mineplex.core.preferences.ui.ExclusivePreferencesShop; -import mineplex.core.preferences.ui.PreferencesShop; -import mineplex.core.updater.UpdateType; -import mineplex.core.updater.event.UpdateEvent; - import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -29,17 +15,35 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.SkullMeta; import org.bukkit.plugin.java.JavaPlugin; +import mineplex.core.MiniDbClientPlugin; +import mineplex.core.account.CoreClientManager; +import mineplex.core.common.util.C; +import mineplex.core.common.util.NautHashMap; +import mineplex.core.common.util.UtilGear; +import mineplex.core.common.util.UtilInv; +import mineplex.core.donation.DonationManager; +import mineplex.core.incognito.IncognitoManager; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.packethandler.PacketHandler; +import mineplex.core.preferences.command.PreferencesCommand; +import mineplex.core.preferences.ui.ExclusivePreferencesShop; +import mineplex.core.preferences.ui.PreferencesShop; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; + public class PreferencesManager extends MiniDbClientPlugin { private PreferencesRepository _repository; private PreferencesShop _shop; private ExclusivePreferencesShop _exclusiveShop; + private IncognitoManager _incognitoManager; + private NautHashMap _saveBuffer = new NautHashMap(); public boolean GiveItem; - public PreferencesManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager) + public PreferencesManager(JavaPlugin plugin, IncognitoManager incognito, CoreClientManager clientManager, DonationManager donationManager) { super("Preferences", plugin, clientManager); @@ -47,6 +51,8 @@ public class PreferencesManager extends MiniDbClientPlugin _exclusiveShop = new ExclusivePreferencesShop(this, clientManager, donationManager); _shop = new PreferencesShop(this, clientManager, donationManager, _exclusiveShop); + _incognitoManager = incognito; + _exclusiveShop.setPreferencesShop(_shop); addCommand(new PreferencesCommand(this)); @@ -138,4 +144,9 @@ public class PreferencesManager extends MiniDbClientPlugin { return "SELECT games, visibility, showChat, friendChat, privateMessaging, partyRequests, invisibility, forcefield, showMacReports, ignoreVelocity, pendingFriendRequests, friendDisplayInventoryUI, clanTips, hubMusic, disableAds FROM accountPreferences WHERE accountPreferences.uuid = '" + uuid + "' LIMIT 1;"; } + + public IncognitoManager getIncognitoManager() + { + return _incognitoManager; + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/preferences/ui/ExclusivePreferencesPage.java b/Plugins/Mineplex.Core/src/mineplex/core/preferences/ui/ExclusivePreferencesPage.java index 2cde41914..65f7d4b58 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/preferences/ui/ExclusivePreferencesPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/preferences/ui/ExclusivePreferencesPage.java @@ -8,6 +8,8 @@ import org.bukkit.event.inventory.ClickType; import mineplex.core.account.CoreClientManager; import mineplex.core.common.Rank; import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilUI; import mineplex.core.donation.DonationManager; import mineplex.core.preferences.PreferencesManager; @@ -149,6 +151,12 @@ public class ExclusivePreferencesPage extends ShopPageBaseimplements IRelati // Spawn area - public ClansManager(JavaPlugin plugin/*, ClansBanManager clansBans*/, String serverName, PacketHandler packetHandler, Punish punish, CoreClientManager clientManager, DonationManager donationManager, PreferencesManager preferencesManager, BlockRestore blockRestore, StatsManager statsManager, Teleport teleport, Chat chat, GearManager gearManager, HologramManager hologramManager, String webServerAddress) + public ClansManager(JavaPlugin plugin/*, ClansBanManager clansBans*/, String serverName, IncognitoManager incognitoManager, PacketHandler packetHandler, Punish punish, CoreClientManager clientManager, DonationManager donationManager, PreferencesManager preferencesManager, BlockRestore blockRestore, StatsManager statsManager, Teleport teleport, Chat chat, GearManager gearManager, HologramManager hologramManager, String webServerAddress) { super("Clans Manager", plugin); @@ -236,7 +236,7 @@ public class ClansManager extends MiniClientPluginimplements IRelati /*_clansBans = clansBans;*/ _punish = punish; - _incognitoManager = new IncognitoManager(plugin, clientManager, packetHandler); + _incognitoManager = incognitoManager; _serverName = serverName; _clientManager = clientManager; _combatManager = new CombatManager(plugin); diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/SiegeManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/SiegeManager.java index e48801344..902aa968a 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/SiegeManager.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/SiegeManager.java @@ -112,6 +112,7 @@ public class SiegeManager extends MiniPlugin if (!part) { + System.out.println("Removing slime..."); slime.remove(); } else @@ -162,11 +163,13 @@ public class SiegeManager extends MiniPlugin { if (((ArmorStand) entity).getHelmet() != null && ((ArmorStand) entity).getHelmet().getType().equals(Material.SPONGE)) { + System.out.println("Removing armor stand"); entity.remove(); } if (entity.getPassenger() != null && entity.getPassenger() instanceof Slime && entity.getPassenger().getPassenger() instanceof Slime) { + System.out.println("Removing armostand + children"); entity.getPassenger().getPassenger().remove(); entity.getPassenger().remove(); entity.remove(); diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/repository/SiegeWeaponRepository.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/repository/SiegeWeaponRepository.java index 452e3a396..302329ccb 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/repository/SiegeWeaponRepository.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/repository/SiegeWeaponRepository.java @@ -24,183 +24,151 @@ import mineplex.serverdata.database.column.ColumnVarChar; public class SiegeWeaponRepository extends MinecraftRepository { - private static final String CREATE = "CREATE TABLE IF NOT EXISTS clansSiegeWeapons (uniqueId INT NOT NULL," - + "serverId INT NOT NULL," - + "location VARCHAR(30)," - + "ownerClan INT NOT NULL," - + "weaponType TINYINT NOT NULL," - + "health INT NOT NULL," - + "yaw INT NOT NULL," - + "lastFired LONG," - + "entities VARCHAR(200)," - + "PRIMARY KEY (uniqueId));"; + private static final String CREATE = "CREATE TABLE IF NOT EXISTS clansSiegeWeapons (uniqueId INT NOT NULL," + + "serverId INT NOT NULL," + + "location VARCHAR(30)," + + "ownerClan INT NOT NULL," + + "weaponType TINYINT NOT NULL," + + "health INT NOT NULL," + + "yaw INT NOT NULL," + + "lastFired LONG," + + "entities VARCHAR(200)," + + "PRIMARY KEY (uniqueId));"; - private static final String GET_WEAPON_BY_ID = "SELECT * FROM clansSiegeWeapons WHERE uniqueId=?;"; - private static final String GET_WEAPONS_BY_CLAN = "SELECT * FROM clansSiegeWeapons WHERE ownerClan=?;"; - private static final String GET_WEAPONS_BY_SERVER = "SELECT * FROM clansSiegeWeapons WHERE serverId=?;"; + private static final String GET_WEAPON_BY_ID = "SELECT * FROM clansSiegeWeapons WHERE uniqueId=?;"; + private static final String GET_WEAPONS_BY_CLAN = "SELECT * FROM clansSiegeWeapons WHERE ownerClan=?;"; + private static final String GET_WEAPONS_BY_SERVER = "SELECT * FROM clansSiegeWeapons WHERE serverId=?;"; - private static final String UPDATE_WEAPON = "UPDATE clansSiegeWeapons SET health=?,yaw=?,lastFired=? WHERE uniqueId=?;"; - private static final String INSERT_WEAPON = "INSERT INTO clansSiegeWeapons VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);"; + private static final String UPDATE_WEAPON = "UPDATE clansSiegeWeapons SET health=?,yaw=?,lastFired=? WHERE uniqueId=?;"; + private static final String INSERT_WEAPON = "INSERT INTO clansSiegeWeapons VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);"; - private static final String DELETE_WEAPON = "DELETE FROM clansSiegeWeapons WHERE uniqueId=?;"; + private static final String DELETE_WEAPON = "DELETE FROM clansSiegeWeapons WHERE uniqueId=?;"; - private SiegeManager _siegeManager; + private SiegeManager _siegeManager; - public SiegeWeaponRepository(JavaPlugin plugin, SiegeManager siegeManager) - { - super(plugin, DBPool.getAccount()); + public SiegeWeaponRepository(JavaPlugin plugin, SiegeManager siegeManager) + { + super(plugin, DBPool.getAccount()); - _siegeManager = siegeManager; - } + _siegeManager = siegeManager; + } - public void deleteWeapon(final int uniqueId) - { - System.out.println("Siege Repo> Deleting weapon " + uniqueId); + public void deleteWeapon(final int uniqueId) + { + System.out.println("Siege Repo> Deleting weapon " + uniqueId); - _siegeManager.runAsync(() -> - executeUpdate(DELETE_WEAPON, new ColumnInt("uniqueId", uniqueId)) - ); - } + _siegeManager.runAsync(() -> + executeUpdate(DELETE_WEAPON, new ColumnInt("uniqueId", uniqueId)) + ); + } - public void getWeaponById(final int uniqueId, final Callback callback) - { - _siegeManager.runAsync(() -> - executeQuery(GET_WEAPON_BY_ID, resultSet -> { - SiegeWeaponToken token = new SiegeWeaponToken(); + public void getWeaponById(final int uniqueId, final Callback callback) + { + _siegeManager.runAsync(() -> + executeQuery(GET_WEAPON_BY_ID, resultSet -> { + SiegeWeaponToken token = new SiegeWeaponToken(); - resultSet.next(); + resultSet.next(); - load(token, resultSet); + load(token, resultSet); - callback.run(token); - }, new ColumnInt("uniqueId", uniqueId)) - ); - } + callback.run(token); + }, new ColumnInt("uniqueId", uniqueId)) + ); + } - public void getWeaponsByServer(final int serverId, final Callback> callback) - { - _siegeManager.runAsync(() -> - executeQuery(GET_WEAPONS_BY_SERVER, resultSet -> { - List tokens = Lists.newArrayList(); + public void getWeaponsByServer(final int serverId, final Callback> callback) + { + _siegeManager.runAsync(() -> + executeQuery(GET_WEAPONS_BY_SERVER, resultSet -> { + List tokens = Lists.newArrayList(); - while (resultSet.next()) - { - SiegeWeaponToken token = new SiegeWeaponToken(); + while (resultSet.next()) + { + SiegeWeaponToken token = new SiegeWeaponToken(); - load(token, resultSet); + load(token, resultSet); - tokens.add(token); - } + tokens.add(token); + } - callback.run(tokens); - }, new ColumnInt("serverId", serverId)) - ); - } + callback.run(tokens); + }, new ColumnInt("serverId", serverId)) + ); + } - public void getWeaponsByClan(final ClanInfo clan, final Callback> callback) - { - _siegeManager.runAsync(() -> - executeQuery(GET_WEAPONS_BY_CLAN, resultSet -> { - List tokens = Lists.newArrayList(); + public void getWeaponsByClan(final ClanInfo clan, final Callback> callback) + { + _siegeManager.runAsync(() -> + executeQuery(GET_WEAPONS_BY_CLAN, resultSet -> { + List tokens = Lists.newArrayList(); - while (resultSet.next()) - { - SiegeWeaponToken token = new SiegeWeaponToken(); + while (resultSet.next()) + { + SiegeWeaponToken token = new SiegeWeaponToken(); - load(token, resultSet); + load(token, resultSet); - tokens.add(token); - } + tokens.add(token); + } - callback.run(tokens); - }, new ColumnInt("ownerClan", clan.getId())) - ); - } + callback.run(tokens); + }, new ColumnInt("ownerClan", clan.getId())) + ); + } - private void load(SiegeWeaponToken token, ResultSet columns) throws SQLException - { - token.UniqueId = columns.getInt("uniqueId"); - token.Location = UtilWorld.strToLoc(columns.getString("location")); - token.OwnerClan = _siegeManager.getClansManager().getClanUtility().getClanById(columns.getInt("ownerClan")); - token.WeaponType = columns.getByte("weaponType"); - token.Health = columns.getShort("health"); - token.Yaw = columns.getShort("yaw"); - token.LastFired = columns.getTimestamp("lastFired").getTime(); - token.Entities = decodeEntities(columns.getString("entities")); + private void load(SiegeWeaponToken token, ResultSet columns) throws SQLException + { + token.UniqueId = columns.getInt("uniqueId"); + token.Location = UtilWorld.strToLoc(columns.getString("location")); + token.OwnerClan = _siegeManager.getClansManager().getClanUtility().getClanById(columns.getInt("ownerClan")); + token.WeaponType = columns.getByte("weaponType"); + token.Health = columns.getShort("health"); + token.Yaw = columns.getShort("yaw"); + token.LastFired = columns.getTimestamp("lastFired").getTime(); - System.out.println("Siege Repo> Loaded weapon " + token.UniqueId); - } + System.out.println("Siege Repo> Loaded weapon " + token.UniqueId); + } - public void updateWeapon(SiegeWeaponToken token) - { - System.out.println("Siege Repo> Updating weapon " + token.UniqueId); + public void updateWeapon(SiegeWeaponToken token) + { + System.out.println("Siege Repo> Updating weapon " + token.UniqueId); - _siegeManager.runAsync(() -> - executeUpdate(UPDATE_WEAPON, - new ColumnInt("health", token.Health), - new ColumnInt("yaw", token.Yaw), - new ColumnTimestamp("lastFired", new Timestamp(token.LastFired)), - new ColumnInt("uniqueId", token.UniqueId)) - ); - } + _siegeManager.runAsync(() -> + executeUpdate(UPDATE_WEAPON, + new ColumnInt("health", token.Health), + new ColumnInt("yaw", token.Yaw), + new ColumnTimestamp("lastFired", new Timestamp(token.LastFired)), + new ColumnInt("uniqueId", token.UniqueId)) + ); + } - public void insertWeapon(SiegeWeaponToken token) - { - System.out.println("Siege Repo> Inserting new weapon " + token.UniqueId); + public void insertWeapon(SiegeWeaponToken token) + { + System.out.println("Siege Repo> Inserting new weapon " + token.UniqueId); - _siegeManager.runAsync(() -> - executeUpdate(INSERT_WEAPON, - new ColumnInt("uniqueId", token.UniqueId), - new ColumnInt("serverId", _siegeManager.getClansManager().getServerId()), - new ColumnVarChar("location", 30, UtilWorld.locToStr(token.Location)), - new ColumnInt("ownerClan", token.OwnerClan.getId()), - new ColumnInt("weaponType", token.WeaponType), - new ColumnInt("health", token.Health), - new ColumnInt("yaw", token.Yaw), - new ColumnTimestamp("lastFired", new Timestamp(token.LastFired)), - new ColumnVarChar("entities", 100, encodeEntities(token.Entities))) - ); - } + _siegeManager.runAsync(() -> + executeUpdate(INSERT_WEAPON, + new ColumnInt("uniqueId", token.UniqueId), + new ColumnInt("serverId", _siegeManager.getClansManager().getServerId()), + new ColumnVarChar("location", 30, UtilWorld.locToStr(token.Location)), + new ColumnInt("ownerClan", token.OwnerClan.getId()), + new ColumnInt("weaponType", token.WeaponType), + new ColumnInt("health", token.Health), + new ColumnInt("yaw", token.Yaw), + new ColumnTimestamp("lastFired", new Timestamp(token.LastFired)), + new ColumnVarChar("entities", 100, "")) + ); + } - private String encodeEntities(Map entities) - { - StringBuilder builder = new StringBuilder(); - - int l = 0; - for (String name : entities.keySet()) - { - if (l != 0) - { - builder.append(","); - } - - builder.append(name + ":" + entities.get(name)); - l++; - } - - return builder.toString(); - } - - private Map decodeEntities(String data) - { - Map map = new HashMap<>(); - - for (String entries : data.split(",")) - { - map.put(entries.split(":")[0], entries.split(":")[1]); - } - - return map; - } - - @Override - protected void initialize() - { + @Override + protected void initialize() + { executeUpdate(CREATE); - } + } - @Override - protected void update() - { - } + @Override + protected void update() + { + } } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/repository/tokens/SiegeWeaponToken.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/repository/tokens/SiegeWeaponToken.java index 876e73935..638aa800c 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/repository/tokens/SiegeWeaponToken.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/repository/tokens/SiegeWeaponToken.java @@ -16,6 +16,5 @@ public class SiegeWeaponToken public int Health; public int Yaw; public long LastFired; - public Map Entities; } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/Cannon.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/Cannon.java index 45510438c..cd0e77876 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/Cannon.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/Cannon.java @@ -55,6 +55,13 @@ public class Cannon extends SiegeWeapon { super(300, "Cannon", token, siegeManager.getClansManager(), siegeManager); + if (_ownerClan == null) + { + System.out.println("[cannon] owner clan null, killing"); + kill(); + return; + } + System.out.println("Siege> Loading Cannon from token " + token.UniqueId); setBoundingBox(1); @@ -107,11 +114,11 @@ public class Cannon extends SiegeWeapon enableInventory(UtilServer.getServer().createInventory(null, InventoryType.DISPENSER, C.cDAquaB + _name), new AccessRule(AccessType.RCLICK_BB, player -> player.equals(getRider()))); setRideable(new AccessRule(AccessType.RCLICK_BB, player -> { -// if (!_ownerClan.isMember(player)) -// { -// UtilPlayer.message(player, F.main("Clans", "This Cannon is not owned by your Clan.")); -// return false; -// } + if (!_ownerClan.isMember(player)) + { + UtilPlayer.message(player, F.main("Clans", "This Cannon is not owned by your Clan.")); + return false; + } if (getRider() != null && !getRider().equals(player)) { @@ -140,7 +147,7 @@ public class Cannon extends SiegeWeapon setStateInfo("Unloaded", new WeaponStateInfo(Material.SPONGE, (byte) 1)); setStateInfo("Loaded", new WeaponStateInfo(Material.SPONGE, (byte) 0)); - loadEntities(); + loadEntities(true); setFirepowerType(Material.SULPHUR); setAmmunitionType(Material.TNT); @@ -179,9 +186,9 @@ public class Cannon extends SiegeWeapon return false; } - if (System.currentTimeMillis() - _lastFired < 20000) + if (System.currentTimeMillis() - _lastFired < 30000) { - UtilPlayer.message(player, F.main("Clans", "Cannon is cooling down (" + F.time(UtilTime.MakeStr(20000 - (System.currentTimeMillis() - _lastFired))) + ")")); + UtilPlayer.message(player, F.main("Clans", "Cannon is cooling down (" + F.time(UtilTime.MakeStr(30000 - (System.currentTimeMillis() - _lastFired))) + ")")); return false; } @@ -191,11 +198,11 @@ public class Cannon extends SiegeWeapon enableInventory(UtilServer.getServer().createInventory(null, InventoryType.DISPENSER, C.cDAquaB + _name), new AccessRule(AccessType.RCLICK_BB, player -> player.equals(getRider()))); setRideable(new AccessRule(AccessType.RCLICK_BB, player -> { -// if (!_ownerClan.isMember(player)) -// { -// UtilPlayer.message(player, F.main("Clans", "This Cannon is not owned by your Clan.")); -// return false; -// } + if (!_ownerClan.isMember(player)) + { + UtilPlayer.message(player, F.main("Clans", "This Cannon is not owned by your Clan.")); + return false; + } if (getRider() != null && !getRider().equals(player)) { @@ -298,7 +305,7 @@ public class Cannon extends SiegeWeapon return true; // all slots are now filled; slot == 0 || slot == 1 || slot == 2; } - private void loadEntities() + private void loadEntities(boolean insert) { Slime filler = _location.getWorld().spawn(_location.clone(), Slime.class); @@ -332,8 +339,10 @@ public class Cannon extends SiegeWeapon addEntity(weapon, "WEAPON"); - - insert(); + if (insert) + { + insert(); + } } @Override @@ -341,20 +350,13 @@ public class Cannon extends SiegeWeapon { Lists.newArrayList(_location.getWorld().getEntities()) .forEach(entity -> { - for (Entry entry : _loadedToken.Entities.entrySet()) + if (Integer.toString(_uniqueId).equals(entity.getCustomName())) { - if (entity.getUniqueId().toString().equals(entry.getValue())) - { - addEntity(entity, entry.getKey()); - } + entity.remove(); } }); - if (getEntity("WEAPON") == null || getEntity("Filler_1") == null || getEntity("PLAYERMOUNT") == null) - { - System.out.println("[Cannon] Could not find all entities, killing."); - kill(); - } + loadEntities(false); } @Override @@ -428,12 +430,12 @@ public class Cannon extends SiegeWeapon @EventHandler public void explosionEffects(SiegeWeaponExplodeEvent event) { - for (int i = 0; i < 8; i++) - { - // Explosion particle effects. - Location point = UtilAlg.getRandomLocation(event.getProjectile().getLocation(), 5); - UtilParticle.PlayParticle(ParticleType.HUGE_EXPLOSION, point, 0, 0, 0, 1, 2, ViewDist.MAX); - } +// for (int i = 0; i < 8; i++) +// { +// // Explosion particle effects. +// Location point = UtilAlg.getRandomLocation(event.getProjectile().getLocation(), 5); +// UtilParticle.PlayParticle(ParticleType.HUGE_EXPLOSION, point, 0, 0, 0, 1, 2, ViewDist.MAX); +// } // Block explosion. ArrayList blocks = new ArrayList<>(); @@ -449,7 +451,7 @@ public class Cannon extends SiegeWeapon attempts++; } - _siegeManager.getClansManager().getExplosion().BlockExplosion( + _clans.getExplosion().BlockExplosion( blocks, event.getProjectile().getLocation(), false diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/SiegeWeapon.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/SiegeWeapon.java index ba9089851..474b3f7d2 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/SiegeWeapon.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/SiegeWeapon.java @@ -536,6 +536,9 @@ public abstract class SiegeWeapon implements Listener protected final void addEntity(Entity entity, String uniqueName) { + entity.setCustomName(Integer.toString(_uniqueId)); + entity.setCustomNameVisible(false); + _comprisedOf.add(entity); _entityMapping.put(uniqueName, entity); @@ -942,29 +945,19 @@ public abstract class SiegeWeapon implements Listener token.Location = _location; token.Health = _health; token.Yaw = (int) _yaw; - token.Entities = new HashMap<>(); - - _entityMapping.entrySet().forEach(entry -> - token.Entities.put(entry.getKey(), entry.getValue().getUniqueId().toString()) - ); return token; } public boolean isPartOf(UUID uniqueId) { - if (_loadedToken == null) + for (Entity entity : _comprisedOf) { - for (Entity entity : _comprisedOf) - { - if (entity.getUniqueId().equals(uniqueId)) - return true; - } - - return false; + if (entity.getUniqueId().equals(uniqueId)) + return true; } - return _loadedToken.Entities.values().contains(uniqueId.toString()); + return false; } public void setInvincible(boolean invincible) diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/projectile/Crater.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/projectile/Crater.java index 6443697b8..c16f4f5c5 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/projectile/Crater.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/siege/weapon/projectile/Crater.java @@ -26,9 +26,9 @@ import mineplex.core.common.util.UtilServer; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.game.clans.clans.ClansManager; -import mineplex.game.clans.clans.nameblacklist.ClansBlacklist; import mineplex.game.clans.clans.siege.weapon.SiegeWeapon; import mineplex.game.clans.core.repository.ClanTerritory; +import net.minecraft.server.v1_8_R3.Explosion; public class Crater implements Listener { @@ -108,124 +108,52 @@ public class Crater implements Listener return; } - _blocks.add(new CraterBlock(_origin, 0, Material.AIR)); + boolean explosion = _origin.getWorld().createExplosion(_origin, 2.6f); - HashMap blockList = new HashMap(); - int iR = (int) _size + 1; + boolean floating = _origin.distance(UtilBlock.nearestFloor(_origin)) > 0.6; - for (int x = -iR; x <= iR; x++) + if (explosion) { - for (int z = -iR; z <= iR; z++) + for (Block block : UtilBlock.getInRadius(_origin.getBlock(), 2.6f).keySet()) { - for (int y = -iR; y <= iR; y++) + boolean charred = false; + double dist = block.getLocation().distance(_origin); + + if (floating) { - Block curBlock = _origin.getBlock().getRelative(x, y, z); - - double offset = UtilMath.offset(_origin, curBlock.getLocation()); - - if (offset <= _size) + if (!block.getRelative(BlockFace.DOWN).getType().equals(CHARRED_TYPE) + && !block.getRelative(BlockFace.DOWN).getType().equals(Material.AIR) + && Math.random() > 0.79) { - blockList.put(curBlock, Double.valueOf(offset)); + charred = true; } } + else + { + if (block.getRelative(BlockFace.UP).getType().equals(Material.AIR) + && !block.getRelative(BlockFace.DOWN).getType().equals(CHARRED_TYPE) + && !block.getRelative(BlockFace.DOWN).getType().equals(Material.AIR) + && Math.random() > 0.79) + { + charred = true; + } + } + + if (block.getType().equals(Material.SMOOTH_BRICK)) + { + charred = false; + } + + if (charred) + { + CraterBlock charredBlock = new CraterBlock(block.getLocation(), dist, CHARRED_TYPE, (byte) 0); + + charredBlock.set(); + + _blocks.add(charredBlock); + } } } - - for (Entry entry : blockList.entrySet()) - { - Block block = entry.getKey(); - - ClanTerritory territory = _weapon.getClans().getClanUtility().getClaim(block.getLocation()); - - if (territory != null && !ClansManager.getInstance().getBlacklist().allowed(territory.Owner)) - { - continue; - } - - double distance = entry.getValue().doubleValue(); - - boolean air = distance <= _airChance || (Math.random() > (distance) / 3.65d); - - if (block.getState() instanceof Chest) continue; - - if (block.getType() == Material.AIR) continue; - - if (air) - { - _blocks.add(new CraterBlock(block.getLocation(), distance, Material.AIR)); - - Block above = block; - - while (!UtilItem.isBoundless((above = above.getRelative(BlockFace.UP)).getType())) - { - _blocks.add(new CraterBlock(above.getLocation(), distance, Material.AIR)); - } - - if (!UtilItem.isBoundless(block.getRelative(BlockFace.DOWN).getType())) - { - if (_fire && Math.random() >= .5) - { - _blocks.add(new CraterBlock(block.getLocation(), distance, Material.FIRE)); - } - } - } - } - - _blocks.forEach(CraterBlock::set); - - for (Entry entry : blockList.entrySet()) - { - Block block = entry.getKey(); - - ClanTerritory territory = _weapon.getClans().getClanUtility().getClaim(block.getLocation()); - - if (territory != null && !ClansManager.getInstance().getBlacklist().allowed(territory.Owner)) - { - continue; - } - - double distance = entry.getValue().doubleValue(); - - if (block.getType() == Material.AIR) continue; - - if (block.getState() instanceof Chest) - { - Chest chest = (Chest) block.getState(); - - for (ItemStack item : chest.getBlockInventory().getContents()) - { - if (item == null) - { - continue; - } - - if (item.getType() == Material.AIR) - { - continue; - } - - _origin.getWorld().dropItemNaturally(_origin, item); - } - } - - if ( - distance > _airChance && - Math.random() > .75 && - UtilItem.isBoundless(block.getRelative(BlockFace.UP).getType()) && - !UtilItem.isBoundless(block.getRelative(BlockFace.DOWN).getType()) && - !block.getRelative(BlockFace.UP).getType().equals(CHARRED_TYPE) && - !block.getRelative(BlockFace.DOWN).getType().equals(CHARRED_TYPE)) - { - _blocks.add(new CraterBlock(block.getLocation(), distance, CHARRED_TYPE)); - - if (_fire) - { - _blocks.add(new CraterBlock(block.getRelative(BlockFace.UP).getLocation(), distance, Material.FIRE)); - } - } - } - - _blocks.forEach(CraterBlock::set); } } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/economy/GoldManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/economy/GoldManager.java index 96cbf228b..ab3a0b03c 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/economy/GoldManager.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/economy/GoldManager.java @@ -41,7 +41,7 @@ import mineplex.game.clans.shop.bank.BankShop; public class GoldManager extends MiniPlugin { - public static final double GEM_CONVERSION_RATE = 32; // The number of gold coins when converted from a single gem + public static final double GEM_CONVERSION_RATE = 16; // The number of gold coins when converted from a single gem public static final double DEATH_TAX = 0.04d; // Percentage of gold lost on death public static final String META_STRING = "clans.goldAmount"; diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java b/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java index b663e7f1d..3aa1d6eed 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java @@ -106,7 +106,11 @@ public class Hub extends JavaPlugin implements IRelation //Other Modules PacketHandler packetHandler = new PacketHandler(this); DisguiseManager disguiseManager = new DisguiseManager(this, packetHandler); - PreferencesManager preferenceManager = new PreferencesManager(this, clientManager, donationManager); + IncognitoManager incognito = new IncognitoManager(this, clientManager, packetHandler); + PreferencesManager preferenceManager = new PreferencesManager(this, incognito, clientManager, donationManager); + + incognito.setPreferencesManager(preferenceManager); + preferenceManager.GiveItem = true; Creature creature = new Creature(this); NpcManager npcManager = new NpcManager(this, creature); @@ -140,7 +144,6 @@ public class Hub extends JavaPlugin implements IRelation QueueManager queueManager = new QueueManager(this, clientManager, donationManager, new EloManager(this, clientManager), partyManager); - IncognitoManager incognito = new IncognitoManager(this, clientManager, packetHandler); new ServerManager(this, clientManager, donationManager, portal, partyManager, serverStatusManager, hubManager, new StackerManager(hubManager), queueManager); Chat chat = new Chat(this, incognito, clientManager, preferenceManager, achievementManager, serverStatusManager.getCurrentServerName()); diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/StaffServer.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/StaffServer.java index 33e1eb2d5..14d2f9958 100644 --- a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/StaffServer.java +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/StaffServer.java @@ -57,7 +57,7 @@ public class StaffServer extends JavaPlugin Punish punish = new Punish(this, webServerAddress, clientManager); new NpcManager(this, new Creature(this)); ServerStatusManager serverStatusManager = new ServerStatusManager(this, clientManager, new LagMeter(this, clientManager)); - PreferencesManager preferenceManager = new PreferencesManager(this, clientManager, donationManager); + PreferencesManager preferenceManager = new PreferencesManager(this, null, clientManager, donationManager); preferenceManager.GiveItem = false; Portal portal = new Portal(this, clientManager, serverStatusManager.getCurrentServerName()); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java index 72b1024b1..08553888b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java @@ -109,15 +109,19 @@ public class Arcade extends JavaPlugin _serverConfiguration = new ServerConfiguration(this, _clientManager); - PreferencesManager preferenceManager = new PreferencesManager(this, _clientManager, _donationManager); + PacketHandler packetHandler = new PacketHandler(this); + + IncognitoManager incognito = new IncognitoManager(this, _clientManager, packetHandler); + PreferencesManager preferenceManager = new PreferencesManager(this, incognito, _clientManager, _donationManager); + incognito.setPreferencesManager(preferenceManager); + Creature creature = new Creature(this); ServerStatusManager serverStatusManager = new ServerStatusManager(this, _clientManager, new LagMeter(this, _clientManager)); LeaderboardManager leaderboardManager = new LeaderboardManager(this, _clientManager); Teleport teleport = new Teleport(this, _clientManager); Portal portal = new Portal(this, _clientManager, serverStatusManager.getCurrentServerName()); new FileUpdater(this, portal, serverStatusManager.getCurrentServerName(), serverStatusManager.getRegion()); - PacketHandler packetHandler = new PacketHandler(this); DisguiseManager disguiseManager = new DisguiseManager(this, packetHandler); @@ -128,8 +132,6 @@ public class Arcade extends JavaPlugin AntiHack.Initialize(this, punish, portal, preferenceManager, _clientManager); AntiHack.Instance.setKick(false); - IncognitoManager incognito = new IncognitoManager(this, _clientManager, packetHandler); - IgnoreManager ignoreManager = new IgnoreManager(this, _clientManager, preferenceManager, portal); StatsManager statsManager = new StatsManager(this, _clientManager); AchievementManager achievementManager = new AchievementManager(statsManager, _clientManager, _donationManager);