mirror of
https://github.com/essentials/Essentials.git
synced 2025-08-12 01:25:26 +02:00
@@ -126,6 +126,8 @@ public interface IUser extends OfflinePlayer, CommandSender, IStorageObjectHolde
|
||||
|
||||
void setVanished(boolean set);
|
||||
|
||||
boolean checkSignThrottle(int throttle);
|
||||
|
||||
/**
|
||||
* Since the Player object should not be stored for a long time, this method should be called again with a null
|
||||
* value.
|
||||
|
@@ -50,6 +50,7 @@ public class User extends UserBase implements IUser
|
||||
@Getter
|
||||
@Setter
|
||||
private boolean enderSee = false;
|
||||
private long lastThrottledAction;
|
||||
private transient Location afkPosition;
|
||||
private AtomicBoolean gotMailInfo = new AtomicBoolean(false);
|
||||
private WeakReference<Player> playerCache;
|
||||
@@ -655,4 +656,26 @@ public class User extends UserBase implements IUser
|
||||
final boolean set = !vanished;
|
||||
this.setVanished(set);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkSignThrottle(int usageLimit)
|
||||
{
|
||||
if (isSignThrottled(usageLimit))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
updateThrottle();
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isSignThrottled(int usageLimit)
|
||||
{
|
||||
final long minTime = lastThrottledAction + (1000 / usageLimit);
|
||||
return (System.currentTimeMillis() < minTime);
|
||||
}
|
||||
|
||||
private void updateThrottle()
|
||||
{
|
||||
lastThrottledAction = System.currentTimeMillis();;
|
||||
}
|
||||
}
|
||||
|
@@ -1,5 +1,6 @@
|
||||
package net.ess3.chat;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Logger;
|
||||
@@ -18,7 +19,6 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
|
||||
//TODO: Translate the local/spy tags
|
||||
public abstract class EssentialsChatPlayer implements Listener
|
||||
{
|
||||
protected transient IEssentials ess;
|
||||
@@ -86,11 +86,14 @@ public abstract class EssentialsChatPlayer implements Listener
|
||||
String world = user.getPlayer().getWorld().getName();
|
||||
|
||||
IRanks groupSettings = ess.getRanks();
|
||||
MessageFormat format = groupSettings.getChatFormat(user);
|
||||
synchronized(format)
|
||||
{
|
||||
event.setFormat(groupSettings.getChatFormat(user).format(new Object[]
|
||||
{
|
||||
group, world, world.substring(0, 1).toUpperCase(Locale.ENGLISH)
|
||||
}));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//TODO: Flesh this out - '?' trigger is too easily accidentally triggered
|
||||
|
@@ -8,6 +8,7 @@ import net.ess3.api.ChargeException;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.economy.Trade;
|
||||
import net.ess3.signs.signs.SignException;
|
||||
import net.ess3.utils.FormatUtil;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
@@ -75,10 +76,14 @@ public class EssentialsSign
|
||||
return user.getName().substring(0, user.getName().length() > 13 ? 13 : user.getName().length());
|
||||
}
|
||||
|
||||
public final boolean onSignInteract(final Block block, final Player player, final IEssentials ess)
|
||||
public final boolean onSignInteract(final Block block, final Player player, final IEssentials ess, final ISignsPlugin isp)
|
||||
{
|
||||
final ISign sign = new BlockSign(block);
|
||||
final IUser user = ess.getUserMap().getUser(player);
|
||||
if (user.checkSignThrottle(isp.getSettings().getData().getSignUsePerSecond()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
try
|
||||
{
|
||||
return SignsPermissions.USE.isAuthorized(user, signName)
|
||||
@@ -466,7 +471,7 @@ public class EssentialsSign
|
||||
}
|
||||
|
||||
|
||||
static class BlockSign implements ISign
|
||||
public static class BlockSign implements ISign
|
||||
{
|
||||
private final transient Sign sign;
|
||||
private final transient Block block;
|
||||
|
@@ -5,6 +5,9 @@ import java.util.logging.Logger;
|
||||
import static net.ess3.I18n._;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.IPlugin;
|
||||
import net.ess3.signs.listeners.SignBlockListener;
|
||||
import net.ess3.signs.listeners.SignEntityListener;
|
||||
import net.ess3.signs.listeners.SignPlayerListener;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
40
EssentialsSigns/src/net/ess3/signs/SignConfig.java
Normal file
40
EssentialsSigns/src/net/ess3/signs/SignConfig.java
Normal file
@@ -0,0 +1,40 @@
|
||||
package net.ess3.signs;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import net.ess3.storage.Comment;
|
||||
import net.ess3.storage.StorageObject;
|
||||
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class SignConfig implements StorageObject
|
||||
{
|
||||
private Map<String, Boolean> signs;
|
||||
|
||||
public Map<String, Boolean> getSigns()
|
||||
{
|
||||
return signs == null
|
||||
? Collections.<String, Boolean>emptyMap()
|
||||
: Collections.unmodifiableMap(signs);
|
||||
}
|
||||
|
||||
public void setSigns(final Map<String, Boolean> signs)
|
||||
{
|
||||
this.signs = signs;
|
||||
}
|
||||
@Comment(
|
||||
{
|
||||
"How many times per second can Essentials signs be interacted with.",
|
||||
"Values should be between 1-20, 20 being virtually no lag protection.",
|
||||
"Lower numbers will reduce the possiblity of lag, but may annoy players."
|
||||
})
|
||||
private int signUsesPerSecond = 4;
|
||||
|
||||
public int getSignUsePerSecond() {
|
||||
|
||||
return signUsesPerSecond > 0 ? signUsesPerSecond : 1;
|
||||
}
|
||||
}
|
@@ -1,5 +1,23 @@
|
||||
package net.ess3.signs;
|
||||
|
||||
import net.ess3.signs.signs.SignMail;
|
||||
import net.ess3.signs.signs.SignDisposal;
|
||||
import net.ess3.signs.signs.SignBuy;
|
||||
import net.ess3.signs.signs.SignWarp;
|
||||
import net.ess3.signs.signs.SignSpawnmob;
|
||||
import net.ess3.signs.signs.SignTime;
|
||||
import net.ess3.signs.signs.SignWeather;
|
||||
import net.ess3.signs.signs.SignEnchant;
|
||||
import net.ess3.signs.signs.SignHeal;
|
||||
import net.ess3.signs.signs.SignFree;
|
||||
import net.ess3.signs.signs.SignInfo;
|
||||
import net.ess3.signs.signs.SignBalance;
|
||||
import net.ess3.signs.signs.SignSell;
|
||||
import net.ess3.signs.signs.SignGameMode;
|
||||
import net.ess3.signs.signs.SignKit;
|
||||
import net.ess3.signs.signs.SignTrade;
|
||||
import net.ess3.signs.signs.SignRepair;
|
||||
|
||||
|
||||
public enum Signs
|
||||
{
|
||||
|
@@ -1,23 +0,0 @@
|
||||
package net.ess3.signs;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
import net.ess3.storage.StorageObject;
|
||||
|
||||
|
||||
public class SignsConfig implements StorageObject
|
||||
{
|
||||
private Map<String, Boolean> signs;
|
||||
|
||||
public Map<String, Boolean> getSigns()
|
||||
{
|
||||
return signs == null
|
||||
? Collections.<String, Boolean>emptyMap()
|
||||
: Collections.unmodifiableMap(signs);
|
||||
}
|
||||
|
||||
public void setSigns(final Map<String, Boolean> signs)
|
||||
{
|
||||
this.signs = signs;
|
||||
}
|
||||
}
|
@@ -7,7 +7,7 @@ import net.ess3.storage.AsyncStorageObjectHolder;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
|
||||
public class SignsConfigHolder extends AsyncStorageObjectHolder<SignsConfig>
|
||||
public class SignsConfigHolder extends AsyncStorageObjectHolder<SignConfig>
|
||||
{
|
||||
private final transient Plugin plugin;
|
||||
private Set<EssentialsSign> enabledSigns = new HashSet<EssentialsSign>();
|
||||
@@ -15,7 +15,7 @@ public class SignsConfigHolder extends AsyncStorageObjectHolder<SignsConfig>
|
||||
|
||||
public SignsConfigHolder(final IEssentials ess, final Plugin plugin)
|
||||
{
|
||||
super(ess, SignsConfig.class, new File(plugin.getDataFolder(), "config.yml"));
|
||||
super(ess, SignConfig.class, new File(plugin.getDataFolder(), "signs.yml"));
|
||||
this.plugin = plugin;
|
||||
onReload();
|
||||
final Map<String, Boolean> signs = getData().getSigns();
|
||||
|
@@ -8,7 +8,6 @@ import net.ess3.permissions.DotStarPermission;
|
||||
public class SignsPermissions
|
||||
{
|
||||
public static final IPermission COLOR = new BasePermission("essentials.signs.", "color");
|
||||
public static final IPermission PROTECTION_OVERRIDE = new BasePermission("essentials.signs.protection.", "override");
|
||||
public static final IPermission TRADE_OVERRIDE = new BasePermission("essentials.signs.trade.", "override");
|
||||
public static final DotStarPermission CREATE = new DotStarPermission("essentials.signs.create");
|
||||
public static final DotStarPermission USE = new DotStarPermission("essentials.signs.use");
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.listeners;
|
||||
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
@@ -6,6 +6,9 @@ import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.ISettings;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.permissions.Permissions;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
import net.ess3.signs.ISignsPlugin;
|
||||
import net.ess3.signs.Signs;
|
||||
import net.ess3.utils.FormatUtil;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
@@ -1,6 +1,8 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.listeners;
|
||||
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
import net.ess3.signs.ISignsPlugin;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.event.EventHandler;
|
@@ -1,6 +1,8 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.listeners;
|
||||
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
import net.ess3.signs.ISignsPlugin;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.Sign;
|
||||
@@ -43,7 +45,7 @@ public class SignPlayerListener implements Listener
|
||||
{
|
||||
if (csign.getLine(0).equalsIgnoreCase(sign.getSuccessName()))
|
||||
{
|
||||
sign.onSignInteract(block, event.getPlayer(), ess);
|
||||
sign.onSignInteract(block, event.getPlayer(), ess, plugin);
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
@@ -1,8 +1,9 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.signs;
|
||||
|
||||
import static net.ess3.I18n._;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
import net.ess3.utils.FormatUtil;
|
||||
|
||||
|
@@ -1,9 +1,10 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.signs;
|
||||
|
||||
import net.ess3.api.ChargeException;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.economy.Trade;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
|
||||
|
||||
public class SignBuy extends EssentialsSign
|
@@ -1,7 +1,8 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.signs;
|
||||
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
|
||||
|
||||
public class SignDisposal extends EssentialsSign
|
@@ -1,4 +1,4 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.signs;
|
||||
|
||||
import java.util.Locale;
|
||||
import static net.ess3.I18n._;
|
||||
@@ -7,6 +7,7 @@ import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.bukkit.Enchantments;
|
||||
import net.ess3.economy.Trade;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.signs;
|
||||
|
||||
|
||||
public class SignException extends Exception
|
@@ -1,10 +1,11 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.signs;
|
||||
|
||||
import static net.ess3.I18n._;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.craftbukkit.InventoryWorkaround;
|
||||
import net.ess3.economy.Trade;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.signs;
|
||||
|
||||
import java.util.Locale;
|
||||
import static net.ess3.I18n._;
|
||||
@@ -6,6 +6,7 @@ import net.ess3.api.ChargeException;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.economy.Trade;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
import org.bukkit.GameMode;
|
||||
|
||||
|
@@ -1,10 +1,11 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.signs;
|
||||
|
||||
import static net.ess3.I18n._;
|
||||
import net.ess3.api.ChargeException;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.economy.Trade;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
|
||||
|
||||
public class SignHeal extends EssentialsSign
|
@@ -1,10 +1,11 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.signs;
|
||||
|
||||
import java.io.IOException;
|
||||
import net.ess3.api.ChargeException;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.economy.Trade;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
import net.ess3.utils.textreader.IText;
|
||||
import net.ess3.utils.textreader.KeywordReplacer;
|
||||
import net.ess3.utils.textreader.TextInput;
|
@@ -1,4 +1,4 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.signs;
|
||||
|
||||
import java.util.Locale;
|
||||
import net.ess3.api.ChargeException;
|
||||
@@ -7,6 +7,7 @@ import net.ess3.api.IUser;
|
||||
import net.ess3.economy.Trade;
|
||||
import net.ess3.permissions.Permissions;
|
||||
import net.ess3.settings.Kit;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
|
||||
|
||||
public class SignKit extends EssentialsSign
|
@@ -1,9 +1,10 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.signs;
|
||||
|
||||
import java.util.List;
|
||||
import static net.ess3.I18n._;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
|
||||
|
||||
public class SignMail extends EssentialsSign
|
@@ -1,4 +1,4 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.signs;
|
||||
|
||||
import static net.ess3.I18n._;
|
||||
import net.ess3.api.ChargeException;
|
||||
@@ -6,6 +6,7 @@ import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.commands.Commandrepair;
|
||||
import net.ess3.economy.Trade;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
|
||||
|
||||
public class SignRepair extends EssentialsSign
|
@@ -1,9 +1,10 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.signs;
|
||||
|
||||
import net.ess3.api.ChargeException;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.economy.Trade;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
|
||||
|
||||
public class SignSell extends EssentialsSign
|
@@ -1,10 +1,11 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.signs;
|
||||
|
||||
import net.ess3.api.ChargeException;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.commands.Commandspawnmob;
|
||||
import net.ess3.economy.Trade;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
|
||||
|
||||
public class SignSpawnmob extends EssentialsSign
|
@@ -1,10 +1,11 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.signs;
|
||||
|
||||
import static net.ess3.I18n._;
|
||||
import net.ess3.api.ChargeException;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.economy.Trade;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
import org.bukkit.World;
|
||||
|
||||
|
@@ -1,10 +1,12 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.signs;
|
||||
|
||||
import static net.ess3.I18n._;
|
||||
import net.ess3.api.ChargeException;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.economy.Trade;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
import net.ess3.signs.SignsPermissions;
|
||||
import net.ess3.utils.FormatUtil;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
@@ -1,10 +1,11 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.signs;
|
||||
|
||||
import net.ess3.api.ChargeException;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.economy.Trade;
|
||||
import net.ess3.permissions.Permissions;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
||||
|
||||
|
@@ -1,10 +1,11 @@
|
||||
package net.ess3.signs;
|
||||
package net.ess3.signs.signs;
|
||||
|
||||
import static net.ess3.I18n._;
|
||||
import net.ess3.api.ChargeException;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.economy.Trade;
|
||||
import net.ess3.signs.EssentialsSign;
|
||||
import org.bukkit.World;
|
||||
|
||||
|
Reference in New Issue
Block a user