Added /cstoggle to disable spam messages.

This commit is contained in:
KingFaris10 2014-05-20 22:13:25 +01:00
parent bd0a40e16c
commit dffbb7f06a
7 changed files with 86 additions and 7 deletions

View File

@ -3,6 +3,7 @@ package com.Acrobot.ChestShop;
import com.Acrobot.Breeze.Configuration.Configuration; import com.Acrobot.Breeze.Configuration.Configuration;
import com.Acrobot.ChestShop.Commands.Give; import com.Acrobot.ChestShop.Commands.Give;
import com.Acrobot.ChestShop.Commands.ItemInfo; import com.Acrobot.ChestShop.Commands.ItemInfo;
import com.Acrobot.ChestShop.Commands.Toggle;
import com.Acrobot.ChestShop.Commands.Version; import com.Acrobot.ChestShop.Commands.Version;
import com.Acrobot.ChestShop.Configuration.Messages; import com.Acrobot.ChestShop.Configuration.Messages;
import com.Acrobot.ChestShop.Configuration.Properties; import com.Acrobot.ChestShop.Configuration.Properties;
@ -19,10 +20,7 @@ import com.Acrobot.ChestShop.Listeners.Item.ItemMoveListener;
import com.Acrobot.ChestShop.Listeners.ItemInfoListener; import com.Acrobot.ChestShop.Listeners.ItemInfoListener;
import com.Acrobot.ChestShop.Listeners.Modules.DiscountModule; import com.Acrobot.ChestShop.Listeners.Modules.DiscountModule;
import com.Acrobot.ChestShop.Listeners.Modules.PriceRestrictionModule; import com.Acrobot.ChestShop.Listeners.Modules.PriceRestrictionModule;
import com.Acrobot.ChestShop.Listeners.Player.PlayerConnect; import com.Acrobot.ChestShop.Listeners.Player.*;
import com.Acrobot.ChestShop.Listeners.Player.PlayerInteract;
import com.Acrobot.ChestShop.Listeners.Player.PlayerInventory;
import com.Acrobot.ChestShop.Listeners.Player.PlayerTeleport;
import com.Acrobot.ChestShop.Listeners.PostShopCreation.CreationFeeGetter; import com.Acrobot.ChestShop.Listeners.PostShopCreation.CreationFeeGetter;
import com.Acrobot.ChestShop.Listeners.PostShopCreation.MessageSender; import com.Acrobot.ChestShop.Listeners.PostShopCreation.MessageSender;
import com.Acrobot.ChestShop.Listeners.PostShopCreation.ShopCreationLogger; import com.Acrobot.ChestShop.Listeners.PostShopCreation.ShopCreationLogger;
@ -133,6 +131,7 @@ public class ChestShop extends JavaPlugin {
getCommand("iteminfo").setExecutor(new ItemInfo()); getCommand("iteminfo").setExecutor(new ItemInfo());
getCommand("csVersion").setExecutor(new Version()); getCommand("csVersion").setExecutor(new Version());
getCommand("csGive").setExecutor(new Give()); getCommand("csGive").setExecutor(new Give());
getCommand("cstoggle").setExecutor(new Toggle());
startStatistics(); startStatistics();
startUpdater(); startUpdater();
@ -240,6 +239,8 @@ public class ChestShop extends JavaPlugin {
public void onDisable() { public void onDisable() {
getServer().getScheduler().cancelTasks(this); getServer().getScheduler().cancelTasks(this);
Toggle.clearToggledPlayers();
if (handler != null) { if (handler != null) {
handler.close(); handler.close();
getLogger().removeHandler(handler); getLogger().removeHandler(handler);
@ -266,6 +267,7 @@ public class ChestShop extends JavaPlugin {
registerEvent(new PlayerConnect()); registerEvent(new PlayerConnect());
registerEvent(new PlayerInteract()); registerEvent(new PlayerInteract());
registerEvent(new PlayerInventory()); registerEvent(new PlayerInventory());
registerEvent(new PlayerLeave());
registerEvent(new PlayerTeleport()); registerEvent(new PlayerTeleport());
registerEvent(new ItemInfoListener()); registerEvent(new ItemInfoListener());

View File

@ -0,0 +1,57 @@
package com.Acrobot.ChestShop.Commands;
import com.Acrobot.ChestShop.Configuration.Messages;
import com.Acrobot.ChestShop.Permission;
import org.apache.commons.lang.Validate;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
/**
* @author KingFaris10
*/
public class Toggle implements CommandExecutor {
private static final List<String> toggledPlayers = new ArrayList<String>();
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (sender instanceof Player) {
Player player = (Player) sender;
if (Permission.has(player, Permission.NOTIFY_TOGGLE)) {
if (setIgnoring(player, !toggledPlayers.contains(player.getName()))) player.sendMessage(Messages.TOGGLE_MESSAGES_OFF);
else player.sendMessage(Messages.TOGGLE_MESSAGES_ON);
} else {
player.sendMessage(Messages.ACCESS_DENIED);
}
return true;
} else {
return false;
}
}
public static void clearToggledPlayers() {
toggledPlayers.clear();
}
public static boolean isIgnoring(OfflinePlayer player) {
return player != null && toggledPlayers.contains(player.getName());
}
public static boolean setIgnoring(Player player, boolean ignoring) {
Validate.notNull(player); // Make sure the player instance is not null. I believe this should be here instead of (object != null) because if the player is null, it shows there is an error with the code.
if (ignoring) {
if (!toggledPlayers.contains(player.getName()))
toggledPlayers.add(player.getName());
} else {
if (toggledPlayers.contains(player.getName()))
toggledPlayers.remove(player.getName());
}
return ignoring;
}
}

View File

@ -67,6 +67,10 @@ public class Messages {
@PrecededBySpace @PrecededBySpace
public static String CANNOT_CREATE_SHOP_HERE = "You can't create shop here!"; public static String CANNOT_CREATE_SHOP_HERE = "You can't create shop here!";
@PrecededBySpace
public static String TOGGLE_MESSAGES_OFF = "You will no longer receive messages from your shop(s).";
public static String TOGGLE_MESSAGES_ON = "You will now receive messages from your shop(s)..";
public static String prefix(String message) { public static String prefix(String message) {
return prefix + message; return prefix + message;
} }

View File

@ -0,0 +1,7 @@
package com.Acrobot.ChestShop.Listeners.Player;
/**
* @author KingFaris10
*/
public class PlayerLeave {
}

View File

@ -2,6 +2,7 @@ package com.Acrobot.ChestShop.Listeners.PostTransaction;
import com.Acrobot.Breeze.Utils.InventoryUtil; import com.Acrobot.Breeze.Utils.InventoryUtil;
import com.Acrobot.Breeze.Utils.MaterialUtil; import com.Acrobot.Breeze.Utils.MaterialUtil;
import com.Acrobot.ChestShop.Commands.Toggle;
import com.Acrobot.ChestShop.Configuration.Messages; import com.Acrobot.ChestShop.Configuration.Messages;
import com.Acrobot.ChestShop.Configuration.Properties; import com.Acrobot.ChestShop.Configuration.Properties;
import com.Acrobot.ChestShop.Economy.Economy; import com.Acrobot.ChestShop.Economy.Economy;
@ -45,7 +46,7 @@ public class TransactionMessageSender implements Listener {
player.sendMessage(message); player.sendMessage(message);
} }
if (Properties.SHOW_TRANSACTION_INFORMATION_OWNER) { if (Properties.SHOW_TRANSACTION_INFORMATION_OWNER && !Toggle.isIgnoring(event.getOwner())) {
String message = formatMessage(Messages.SOMEBODY_BOUGHT_FROM_YOUR_SHOP, itemName, price); String message = formatMessage(Messages.SOMEBODY_BOUGHT_FROM_YOUR_SHOP, itemName, price);
message = message.replace("%buyer", player.getName()); message = message.replace("%buyer", player.getName());
@ -68,7 +69,7 @@ public class TransactionMessageSender implements Listener {
player.sendMessage(message); player.sendMessage(message);
} }
if (Properties.SHOW_TRANSACTION_INFORMATION_OWNER) { if (Properties.SHOW_TRANSACTION_INFORMATION_OWNER && !Toggle.isIgnoring(event.getOwner())) {
String message = formatMessage(Messages.SOMEBODY_SOLD_TO_YOUR_SHOP, itemName, price); String message = formatMessage(Messages.SOMEBODY_SOLD_TO_YOUR_SHOP, itemName, price);
message = message.replace("%seller", player.getName()); message = message.replace("%seller", player.getName());

View File

@ -24,7 +24,9 @@ public enum Permission {
GROUP("ChestShop.group."), GROUP("ChestShop.group."),
NOFEE("ChestShop.nofee"), NOFEE("ChestShop.nofee"),
DISCOUNT("ChestShop.discount."); DISCOUNT("ChestShop.discount."),
NOTIFY_TOGGLE("ChestShop.toggle");
private final String permission; private final String permission;

View File

@ -31,6 +31,9 @@ commands:
aliases: [chestshop] aliases: [chestshop]
description: Shows the ChestShop's version description: Shows the ChestShop's version
usage: /<command> usage: /<command>
cstoggle:
description: Toggle messages to the owner of a shop
usage: /<command>
permissions: permissions:
ChestShop.*: ChestShop.*:
@ -67,6 +70,9 @@ permissions:
description: Allows user to sell to a shop description: Allows user to sell to a shop
ChestShop.nofee: ChestShop.nofee:
description: User doesn't have to pay the shop creation fee. description: User doesn't have to pay the shop creation fee.
ChestShop.toggle:
description: Allows user to toggle messages.
default: true
ChestShop.admin: ChestShop.admin:
description: Allows user to modify/destroy other stores and create an Admin Shops description: Allows user to modify/destroy other stores and create an Admin Shops
default: op default: op