diff --git a/Plugins/Mineplex.Core/.externalToolBuilders/asdf.launch b/Plugins/Mineplex.Core/.externalToolBuilders/asdf.launch index 88af961d4..c531d22bb 100644 --- a/Plugins/Mineplex.Core/.externalToolBuilders/asdf.launch +++ b/Plugins/Mineplex.Core/.externalToolBuilders/asdf.launch @@ -1,6 +1,7 @@ + @@ -10,7 +11,7 @@ - + diff --git a/Plugins/Mineplex.Core/.project b/Plugins/Mineplex.Core/.project index 62da8a3cf..83838c414 100644 --- a/Plugins/Mineplex.Core/.project +++ b/Plugins/Mineplex.Core/.project @@ -12,7 +12,7 @@ org.eclipse.ui.externaltools.ExternalToolBuilder - full,incremental, + auto,full,incremental, LaunchConfigHandle diff --git a/Plugins/Mineplex.Core/src/mineplex/core/inventory/ClientInventory.java b/Plugins/Mineplex.Core/src/mineplex/core/inventory/ClientInventory.java index 8f8ff2ecc..501bddf52 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/inventory/ClientInventory.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/inventory/ClientInventory.java @@ -1,14 +1,32 @@ package mineplex.core.inventory; -import java.util.ArrayList; -import java.util.List; +import mineplex.core.common.util.NautHashMap; public class ClientInventory { - public List Items = new ArrayList(); - + public NautHashMap Items = new NautHashMap(); + public int getChestCount() { - return 0; + return Items.containsKey("LootChest") ? Items.get("LootChest").Count : 0; + } + + public void addItem(ClientItem item) + { + if (!Items.containsKey(item.Item.Name)) + Items.put(item.Item.Name, new ClientItem(item.Item, 0)); + + Items.get(item.Item.Name).Count += item.Count; + } + + public void removeItem(ClientItem item) + { + if (!Items.containsKey(item.Item.Name)) + return; + + Items.get(item.Item.Name).Count -= item.Count; + + if (Items.get(item.Item.Name).Count == 0) + Items.remove(item.Item.Name); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/inventory/ClientItem.java b/Plugins/Mineplex.Core/src/mineplex/core/inventory/ClientItem.java index 1faa80d4f..26a47144b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/inventory/ClientItem.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/inventory/ClientItem.java @@ -6,4 +6,10 @@ public class ClientItem { public Item Item; public int Count; + + public ClientItem(Item item, int count) + { + Item = item; + Count = count; + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/inventory/GemBooster.java b/Plugins/Mineplex.Core/src/mineplex/core/inventory/GemBooster.java new file mode 100644 index 000000000..955c44465 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/inventory/GemBooster.java @@ -0,0 +1,29 @@ +package mineplex.core.inventory; + +import org.bukkit.Material; +import org.bukkit.entity.Player; + +import mineplex.core.common.CurrencyType; +import mineplex.core.common.util.C; +import mineplex.core.shop.item.SalesPackageBase; + +public class GemBooster extends SalesPackageBase +{ + public GemBooster(int gemBoosters) + { + super("20 Gem Booster Pack", Material.EMERALD, (byte)0, new String[] + { + C.cYellow + "1000 Coins", + " ", + C.cWhite + "Use in game lobbies to boost gems earned for all.", + C.cWhite + "Your Gem Boosters: " + C.cGreen + gemBoosters + }, 1000); + + KnownPackage = false; + } + + @Override + public void Sold(Player player, CurrencyType currencyType) + { + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java b/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java index 42b7364e3..4a23656e3 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java @@ -1,8 +1,11 @@ package mineplex.core.inventory; +import java.util.List; + import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerInteractEvent; @@ -16,8 +19,7 @@ import mineplex.core.common.util.C; import mineplex.core.common.util.NautHashMap; import mineplex.core.donation.DonationManager; import mineplex.core.gadget.GadgetManager; -import mineplex.core.gadget.types.Gadget; -import mineplex.core.gadget.types.GadgetType; + import mineplex.core.inventory.data.Category; import mineplex.core.inventory.data.InventoryRepository; import mineplex.core.inventory.data.Item; @@ -27,7 +29,9 @@ import mineplex.core.mount.MountManager; import mineplex.core.pet.PetManager; public class InventoryManager extends MiniClientPlugin -{ +{ + private static Object _inventoryLock = new Object(); + private GadgetManager _gadgetManager; private MountManager _mountManager; private PetManager _petManager; @@ -36,8 +40,8 @@ public class InventoryManager extends MiniClientPlugin private InventoryRepository _repository; - private NautHashMap _items; - private NautHashMap _categories; + private NautHashMap _items = new NautHashMap(); + private NautHashMap _categories = new NautHashMap(); public InventoryManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, GadgetManager gadgetManager, MountManager mountManager, PetManager petManager) { @@ -51,21 +55,79 @@ public class InventoryManager extends MiniClientPlugin _repository = new InventoryRepository(plugin); - /* - for (GadgetType gadgetType : GadgetType.values()) + Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(GetPlugin(), new Runnable() { - if (!_categories.containsKey(gadgetType.name())) - _repository.addCategory(new Category(0, gadgetType.name())); - - for (Gadget gadget : _gadgetManager.getGadgets(gadgetType)) + public void run() { - if (!_items.containsKey(gadget.GetName())) - _repository.addItem(new Item(0, gadget.GetName(), null)); + updateItems(); + updateCategories(); } - } - */ + }, 20L); } + private void updateItems() + { + List items = _repository.retrieveItems(); + + synchronized (_inventoryLock) + { + for (Item item : items) + { + _items.put(item.Name, item); + } + } + } + + private void updateCategories() + { + List categories = _repository.retrieveCategories(); + + synchronized (_inventoryLock) + { + for (Category category : categories) + { + _categories.put(category.Name, category); + } + } + } + + public void addItemToInventory(final Player player, final String category, final String item, final int count) + { + final String uuidString = player.getUniqueId().toString(); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(GetPlugin(), new Runnable() + { + public void run() + { + synchronized (_inventoryLock) + { + if (!_categories.containsKey(category)) + { + _repository.addCategory(category); + } + } + + updateCategories(); + + synchronized (_inventoryLock) + { + if (!_items.containsKey(item)) + { + _repository.addItem(item, _categories.get(category).Id); + } + } + + updateItems(); + + synchronized (_inventoryLock) + { + _repository.incrementClientInventoryItem(uuidString, _items.get(item).Id, count); + Get(player).addItem(new ClientItem(_items.get(item), count)); + } + } + }); + } + @Override protected ClientInventory AddPlayer(String player) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/inventory/data/InventoryRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/inventory/data/InventoryRepository.java index 64b290d74..37d1c186e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/inventory/data/InventoryRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/inventory/data/InventoryRepository.java @@ -1,6 +1,5 @@ package mineplex.core.inventory.data; -import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; @@ -8,7 +7,6 @@ import java.util.List; import org.bukkit.plugin.java.JavaPlugin; -import mineplex.core.common.util.NautHashMap; import mineplex.core.database.RepositoryBase; import mineplex.core.database.ResultSetCallable; import mineplex.core.database.column.ColumnInt; @@ -18,18 +16,18 @@ import mineplex.core.inventory.ClientItem; public class InventoryRepository extends RepositoryBase { - private static String CREATE_INVENTORY_TABLE = "CREATE TABLE IF NOT EXISTS items (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100), categoryId INT, rarity INT, PRIMARY KEY (id), FOREIGN KEY (categoryId) REFERENCES itemCategories(id), INDEX uniqueNameCategoryIndex (name, categoryId));"; - private static String CREATE_INVENTORY_CATEGORY_TABLE = "CREATE TABLE IF NOT EXISTS itemCategories (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100), PRIMARY KEY (id), INDEX nameIndex (name));"; + private static String CREATE_INVENTORY_TABLE = "CREATE TABLE IF NOT EXISTS items (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100), categoryId INT, rarity INT, PRIMARY KEY (id), FOREIGN KEY (categoryId) REFERENCES itemCategories(id), UNIQUE INDEX uniqueNameCategoryIndex (name, categoryId));"; + private static String CREATE_INVENTORY_CATEGORY_TABLE = "CREATE TABLE IF NOT EXISTS itemCategories (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100), PRIMARY KEY (id), UNIQUE INDEX nameIndex (name));"; private static String CREATE_INVENTORY_RELATION_TABLE = "CREATE TABLE IF NOT EXISTS accountInventory (id INT NOT NULL AUTO_INCREMENT, accountId INT NOT NULL, itemId INT NOT NULL, count INT NOT NULL, PRIMARY KEY (id), FOREIGN KEY (accountId) REFERENCES accounts(id), FOREIGN KEY (itemId) REFERENCES items(id), UNIQUE INDEX accountItemIndex (accountId, itemId));"; - private static String INSERT_ITEM = "INSERT INTO items (name, categoryId, rarity) VALUES (?, ?, ?);"; - private static String RETRIEVE_ITEMS = "SELECT items.id, items.name, itemCategories.id, itemCategories.name, rarity FROM items INNER JOIN itemCategories ON itemCategories.id = items.categoryId;"; + private static String INSERT_ITEM = "INSERT INTO items (name, categoryId) VALUES (?, ?);"; + private static String RETRIEVE_ITEMS = "SELECT items.id, items.name, itemCategories.name FROM items INNER JOIN itemCategories ON itemCategories.id = items.categoryId;"; - private static String INSERT_CATEGORY = "INSERT INTO category (name) VALUES (?);"; + private static String INSERT_CATEGORY = "INSERT INTO itemCategories (name) VALUES (?);"; private static String RETRIEVE_CATEGORIES = "SELECT id, name FROM itemCategories;"; - private static String INSERT_CLIENT_INVENTORY = "INSERT INTO accountInventory (accountId, itemId, count) SELECT accounts.id, ?, ? FROM accounts WHERE accounts.uuid = ? ON DUPLICATE KEY UPDATE count=VALUES(count);"; - private static String RETRIEVE_CLIENT_INVENTORY = "SELECT items.id, items.name, ic.id, ic.name as category, count FROM accountInventory AS ai INNER JOIN items ON items.id = ai.itemId INNER JOIN itemCategories AS ic ON ic.id = items.categoryId INNER JOIN accounts ON accounts.id = ai.accountId WHERE accounts.uuid = ?;"; + private static String INSERT_CLIENT_INVENTORY = "INSERT INTO accountInventory (accountId, itemId, count) SELECT accounts.id, ?, ? FROM accounts WHERE accounts.uuid = ? ON DUPLICATE KEY UPDATE count=count + VALUES(count);"; + private static String RETRIEVE_CLIENT_INVENTORY = "SELECT items.name, ic.name as category, count FROM accountInventory AS ai INNER JOIN items ON items.id = ai.itemId INNER JOIN itemCategories AS ic ON ic.id = items.categoryId INNER JOIN accounts ON accounts.id = ai.accountId WHERE accounts.uuid = ?;"; public InventoryRepository(JavaPlugin plugin) { @@ -67,14 +65,14 @@ public class InventoryRepository extends RepositoryBase return categories; } - public void addItem(Item item) + public void addItem(String name, int categoryId) { - executeUpdate(INSERT_ITEM, new ColumnVarChar("name", 100, item.Name), new ColumnInt("categoryId", item.Category.Id), new ColumnInt("rarity", item.Rarity)); + executeUpdate(INSERT_ITEM, new ColumnVarChar("name", 100, name), new ColumnInt("categoryId", categoryId)); } - public void addCategory(Category category) + public void addCategory(String name) { - executeUpdate(INSERT_CATEGORY, new ColumnVarChar("name", 100, category.Name)); + executeUpdate(INSERT_CATEGORY, new ColumnVarChar("name", 100, name)); } public List retrieveItems() @@ -87,7 +85,7 @@ public class InventoryRepository extends RepositoryBase { while (resultSet.next()) { - items.add(new Item(resultSet.getInt(1), resultSet.getString(2), new Category(resultSet.getInt(3), resultSet.getString(4)), resultSet.getInt(5))); + items.add(new Item(resultSet.getInt(1), resultSet.getString(2), resultSet.getString(3))); } } }); @@ -95,46 +93,9 @@ public class InventoryRepository extends RepositoryBase return items; } - public void updateClientInventories(NautHashMap> clientInventories) + public void incrementClientInventoryItem(String uuid, int itemId, int count) { - PreparedStatement preparedStatement = null; - - try - { - preparedStatement = getConnection().prepareStatement(INSERT_CLIENT_INVENTORY); - - for (String uuid : clientInventories.keySet()) - { - for (ClientItem item : clientInventories.get(uuid)) - { - preparedStatement.setInt(1, item.Item.Id); - preparedStatement.setInt(2, item.Count); - preparedStatement.setString(3, uuid); - - preparedStatement.addBatch(); - } - } - - preparedStatement.executeBatch(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } + executeUpdate(INSERT_CLIENT_INVENTORY, new ColumnInt("itemid", itemId), new ColumnInt("count", count), new ColumnVarChar("uuid", 100, uuid)); } public ClientInventory loadClientInformation(String uuid) @@ -147,12 +108,7 @@ public class InventoryRepository extends RepositoryBase { while (resultSet.next()) { - ClientItem item = new ClientItem(); - - item.Item = new Item(resultSet.getInt(1), resultSet.getString(2), new Category(resultSet.getInt(3), resultSet.getString(4))); - item.Count = resultSet.getInt(4); - - clientInventory.Items.add(item); + clientInventory.addItem(new ClientItem(new Item(resultSet.getString(1), resultSet.getString(2)), resultSet.getInt(3))); } } }, new ColumnVarChar("uuid", 100, uuid)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/inventory/data/Item.java b/Plugins/Mineplex.Core/src/mineplex/core/inventory/data/Item.java index 71256be94..5f4b3efdb 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/inventory/data/Item.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/inventory/data/Item.java @@ -2,21 +2,19 @@ package mineplex.core.inventory.data; public class Item { - public int Id = -1; + public int Id; public String Name; - public Category Category; - public int Rarity = 0; + public String Category; - public Item(int id, String name, Category category, int rarity) + public Item(String name, String category) + { + this(-1, name, category); + } + + public Item(int id, String name, String category) { Id = id; Name = name; Category = category; - Rarity = rarity; - } - - public Item(int id, String name, Category category) - { - this(id, name, category, 0); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/inventory/ui/page/GadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/inventory/ui/page/GadgetPage.java index fff32e67d..d36bcf243 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/inventory/ui/page/GadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/inventory/ui/page/GadgetPage.java @@ -109,6 +109,7 @@ public class GadgetPage extends ShopPageBase { public void run() { + Plugin.addItemToInventory(Player, gadget.getGadgetType().name(), gadget.GetName(), 1); Shop.OpenPageForPlayer(Player, new Menu(Plugin, Shop, ClientManager, DonationManager, player)); } }, null, gadget, CurrencyType.Coins, Player)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/inventory/ui/page/Menu.java b/Plugins/Mineplex.Core/src/mineplex/core/inventory/ui/page/Menu.java index ba2184aff..783147bb9 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/inventory/ui/page/Menu.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/inventory/ui/page/Menu.java @@ -4,10 +4,13 @@ import org.bukkit.Material; import org.bukkit.entity.Player; import mineplex.core.account.CoreClientManager; +import mineplex.core.common.CurrencyType; +import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.donation.DonationManager; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; +import mineplex.core.inventory.GemBooster; import mineplex.core.inventory.InventoryManager; import mineplex.core.inventory.ui.InventoryShop; import mineplex.core.inventory.ui.button.DeactivateGadgetButton; @@ -20,6 +23,8 @@ import mineplex.core.inventory.ui.button.OpenParticles; import mineplex.core.inventory.ui.button.OpenPets; import mineplex.core.mount.Mount; import mineplex.core.shop.item.ShopItem; +import mineplex.core.shop.item.SingleButton; +import mineplex.core.shop.page.ConfirmationPage; import mineplex.core.shop.page.ShopPageBase; public class Menu extends ShopPageBase @@ -36,7 +41,44 @@ public class Menu extends ShopPageBase { AddItem(11, new ShopItem(175, DonationManager.Get(Player.getName()).getCoins() + " Coins", 1, false)); AddItem(13, new ShopItem(Material.CHEST, Plugin.Get(Player).getChestCount() + " Chests", 1, false)); - AddItem(15, new ShopItem(Material.EMERALD, DonationManager.Get(Player.getName()).GetGems() + " Gems", 1, false)); + + int gemBoosters = Plugin.Get(Player).Items.containsKey("Gem Booster") ? Plugin.Get(Player).Items.get("Gem Booster").Count : 0; + final GemBooster gemBoosterItem = new GemBooster(gemBoosters); + + if (DonationManager.Get(Player.getName()).GetBalance(CurrencyType.Coins) >= gemBoosterItem.GetCost(CurrencyType.Coins)) + { + AddButton(15, new ShopItem( + gemBoosterItem.GetDisplayMaterial(), + gemBoosterItem.GetDisplayName(), + gemBoosterItem.GetDescription(), + 1, + false), + new SingleButton() + { + @Override + public void Clicked(Player player) + { + Shop.OpenPageForPlayer(Player, new ConfirmationPage(Plugin, Shop, ClientManager, DonationManager, new Runnable() + { + public void run() + { + Plugin.addItemToInventory(Player, "Utility", "Gem Booster", 20); + Shop.OpenPageForPlayer(Player, new Menu(Plugin, Shop, ClientManager, DonationManager, Player)); + } + }, null, gemBoosterItem, CurrencyType.Coins, Player)); + } + } + ); + } + else + { + AddItem(15, new ShopItem( + gemBoosterItem.GetDisplayMaterial(), + gemBoosterItem.GetDisplayName(), + gemBoosterItem.GetDescription(), + 1, + false)); + } AddButton(27, new ShopItem(Material.NETHER_STAR, "Particle Effects", 1, false), new OpenParticles(this)); AddButton(29, new ShopItem(Material.BOW, "Gadgets", 1, false), new OpenGadgets(this)); @@ -46,7 +88,6 @@ public class Menu extends ShopPageBase if (Plugin.getGadgetManager().getActive(Player, GadgetType.Particle) != null) { - System.out.println("found active particle."); Gadget gadget = Plugin.getGadgetManager().getActive(Player, GadgetType.Particle); AddButton(36, diff --git a/Plugins/Mineplex.Core/src/mineplex/core/inventory/ui/page/MountPage.java b/Plugins/Mineplex.Core/src/mineplex/core/inventory/ui/page/MountPage.java index 11df3849e..2e3883dd8 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/inventory/ui/page/MountPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/inventory/ui/page/MountPage.java @@ -86,15 +86,16 @@ public class MountPage extends ShopPageBase }); } - public void purchaseMount(final Player player, final Mount _mount) + public void purchaseMount(final Player player, final Mount mount) { Shop.OpenPageForPlayer(Player, new ConfirmationPage(Plugin, Shop, ClientManager, DonationManager, new Runnable() { public void run() { + Plugin.addItemToInventory(Player, "Mount", mount.GetName(), 1); Shop.OpenPageForPlayer(Player, new Menu(Plugin, Shop, ClientManager, DonationManager, player)); } - }, null, _mount, CurrencyType.Coins, Player)); + }, null, mount, CurrencyType.Coins, Player)); } public void activateMount(Player player, Mount _mount) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/inventory/ui/page/PetTagPage.java b/Plugins/Mineplex.Core/src/mineplex/core/inventory/ui/page/PetTagPage.java index d0144c045..46091ddb1 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/inventory/ui/page/PetTagPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/inventory/ui/page/PetTagPage.java @@ -98,7 +98,8 @@ public class PetTagPage extends ShopPageBase Plugin.getPetManager().Get(Player).GetPets().put(_pet.GetPetType(), token.PetName); - Player.closeInventory(); + Plugin.addItemToInventory(Player, "Pet", _pet.GetPetType().toString(), 1); + Shop.OpenPageForPlayer(Player, new Menu(Plugin, Shop, ClientManager, DonationManager, Player)); } }, null, _petPurchase ? _pet : tag, CurrencyType.Coins, Player)); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/punish/Punish.java b/Plugins/Mineplex.Core/src/mineplex/core/punish/Punish.java index 324958a50..ae364e196 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/punish/Punish.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/punish/Punish.java @@ -97,7 +97,7 @@ public class Punish extends MiniPlugin if (client != null && client.IsMuted()) { - event.getPlayer().sendMessage(F.main(GetName(), "Shh, you're muted for " + C.cGreen + UtilTime.convertString(client.GetPunishment(PunishmentSentence.Mute).GetRemaining(), 1, TimeUnit.FIT) + ".")); + event.getPlayer().sendMessage(F.main(GetName(), "Shh, you're muted because " + client.GetPunishment(PunishmentSentence.Mute).GetReason() + " by " + client.GetPunishment(PunishmentSentence.Mute).GetAdmin() + " for " + C.cGreen + UtilTime.convertString(client.GetPunishment(PunishmentSentence.Mute).GetRemaining(), 1, TimeUnit.FIT) + ".")); event.setCancelled(true); } } @@ -109,7 +109,7 @@ public class Punish extends MiniPlugin if (client != null && client.IsMuted()) { - event.getPlayer().sendMessage(F.main(GetName(), "Shh, you're muted for " + C.cGreen + UtilTime.convertString(client.GetPunishment(PunishmentSentence.Mute).GetRemaining(), 1, TimeUnit.FIT) + ".")); + event.getPlayer().sendMessage(F.main(GetName(), "Shh, you're muted because " + client.GetPunishment(PunishmentSentence.Mute).GetReason() + " by " + client.GetPunishment(PunishmentSentence.Mute).GetAdmin() + " for " + C.cGreen + UtilTime.convertString(client.GetPunishment(PunishmentSentence.Mute).GetRemaining(), 1, TimeUnit.FIT) + ".")); event.setMessage(" "); event.setCancelled(true); } diff --git a/Website/LOCWebsite.suo b/Website/LOCWebsite.suo index cfa74081d..17c33e71f 100644 Binary files a/Website/LOCWebsite.suo and b/Website/LOCWebsite.suo differ