mirror of
https://github.com/essentials/Essentials.git
synced 2025-08-23 23:03:05 +02:00
Less locks please
This commit is contained in:
@@ -1,11 +1,10 @@
|
||||
package net.ess3.signs;
|
||||
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.ISettings;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.utils.Util;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import net.ess3.permissions.Permissions;
|
||||
import net.ess3.utils.FormatUtil;
|
||||
import org.bukkit.Material;
|
||||
@@ -36,7 +35,6 @@ public class SignBlockListener implements Listener
|
||||
public void onBlockBreak(final BlockBreakEvent event)
|
||||
{
|
||||
ISettings settings = ess.getSettings();
|
||||
settings.acquireReadLock();
|
||||
if (plugin.getSettings().areSignsDisabled())
|
||||
{
|
||||
return;
|
||||
|
@@ -16,16 +16,7 @@ public class SignMail extends EssentialsSign
|
||||
@Override
|
||||
protected boolean onSignInteract(final ISign sign, final IUser player, final String username, final IEssentials ess) throws SignException
|
||||
{
|
||||
final List<String> mail;
|
||||
player.acquireReadLock();
|
||||
try
|
||||
{
|
||||
mail = player.getData().getMails();
|
||||
}
|
||||
finally
|
||||
{
|
||||
player.unlock();
|
||||
}
|
||||
final List<String> mail = player.getData().getMails();
|
||||
if (mail == null || mail.isEmpty())
|
||||
{
|
||||
player.sendMessage(_("noNewMail"));
|
||||
|
@@ -1,19 +1,21 @@
|
||||
package net.ess3.signs;
|
||||
|
||||
import net.ess3.storage.StorageObject;
|
||||
import java.util.HashMap;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
import net.ess3.storage.StorageObject;
|
||||
|
||||
|
||||
public class SignsConfig implements StorageObject
|
||||
{
|
||||
private Map<String, Boolean> signs = new HashMap<String, Boolean>();
|
||||
|
||||
private Map<String, Boolean> signs;
|
||||
|
||||
public Map<String, Boolean> getSigns()
|
||||
{
|
||||
return signs;
|
||||
return signs == null
|
||||
? Collections.<String, Boolean>emptyMap()
|
||||
: Collections.unmodifiableMap(signs);
|
||||
}
|
||||
|
||||
|
||||
public void setSigns(final Map<String, Boolean> signs)
|
||||
{
|
||||
this.signs = signs;
|
||||
|
@@ -19,43 +19,29 @@ public class SignsConfigHolder extends AsyncStorageObjectHolder<SignsConfig>
|
||||
super(ess, SignsConfig.class);
|
||||
this.plugin = plugin;
|
||||
onReload();
|
||||
acquireReadLock();
|
||||
try
|
||||
final Map<String, Boolean> signs = getData().getSigns();
|
||||
for (Map.Entry<String, Boolean> entry : signs.entrySet())
|
||||
{
|
||||
final Map<String, Boolean> signs = getData().getSigns();
|
||||
for (Map.Entry<String, Boolean> entry : signs.entrySet())
|
||||
if (entry.getKey().trim().toUpperCase(Locale.ENGLISH).equals("COLOR") || entry.getKey().trim().toUpperCase(Locale.ENGLISH).equals("COLOUR"))
|
||||
{
|
||||
if (entry.getKey().trim().toUpperCase(Locale.ENGLISH).equals("COLOR") || entry.getKey().trim().toUpperCase(Locale.ENGLISH).equals("COLOUR"))
|
||||
{
|
||||
signsEnabled = true;
|
||||
continue;
|
||||
}
|
||||
final Signs sign = Signs.valueOf(entry.getKey().toUpperCase(Locale.ENGLISH));
|
||||
if (sign != null && entry.getValue())
|
||||
{
|
||||
enabledSigns.add(sign.getSign());
|
||||
signsEnabled = true;
|
||||
}
|
||||
signsEnabled = true;
|
||||
continue;
|
||||
}
|
||||
final Signs sign = Signs.valueOf(entry.getKey().toUpperCase(Locale.ENGLISH));
|
||||
if (sign != null && entry.getValue())
|
||||
{
|
||||
enabledSigns.add(sign.getSign());
|
||||
signsEnabled = true;
|
||||
}
|
||||
}
|
||||
finally
|
||||
|
||||
final Map<String, Boolean> signs2 = new HashMap<String, Boolean>();
|
||||
for (Signs sign : Signs.values())
|
||||
{
|
||||
unlock();
|
||||
}
|
||||
acquireWriteLock();
|
||||
try
|
||||
{
|
||||
final Map<String, Boolean> signs = new HashMap<String, Boolean>();
|
||||
for (Signs sign : Signs.values())
|
||||
{
|
||||
signs.put(sign.toString(), enabledSigns.contains(sign.getSign()));
|
||||
}
|
||||
getData().setSigns(signs);
|
||||
}
|
||||
finally
|
||||
{
|
||||
unlock();
|
||||
signs2.put(sign.toString(), enabledSigns.contains(sign.getSign()));
|
||||
}
|
||||
getData().setSigns(signs2);
|
||||
queueSave();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user