mirror of
https://github.com/essentials/Essentials.git
synced 2025-08-17 03:54:19 +02:00
Cleaning up item spawning and kits.
This commit is contained in:
@@ -3,10 +3,12 @@ package com.earth2me.essentials;
|
|||||||
import static com.earth2me.essentials.I18n._;
|
import static com.earth2me.essentials.I18n._;
|
||||||
import com.earth2me.essentials.api.IEssentials;
|
import com.earth2me.essentials.api.IEssentials;
|
||||||
import com.earth2me.essentials.api.IItemDb;
|
import com.earth2me.essentials.api.IItemDb;
|
||||||
|
import com.earth2me.essentials.api.IUser;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import lombok.Cleanup;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
@@ -58,6 +60,31 @@ public class ItemDb implements IItemDb
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ItemStack get(final String id, final IUser user) throws Exception
|
||||||
|
{
|
||||||
|
final ItemStack stack = get(id.toLowerCase(Locale.ENGLISH));
|
||||||
|
|
||||||
|
int defaultStackSize = 0;
|
||||||
|
int oversizedStackSize = 0;
|
||||||
|
@Cleanup
|
||||||
|
com.earth2me.essentials.api.ISettings settings = ess.getSettings();
|
||||||
|
settings.acquireReadLock();
|
||||||
|
|
||||||
|
defaultStackSize = settings.getData().getGeneral().getDefaultStacksize();
|
||||||
|
oversizedStackSize = settings.getData().getGeneral().getOversizedStacksize();
|
||||||
|
|
||||||
|
if (defaultStackSize > 0)
|
||||||
|
{
|
||||||
|
stack.setAmount(defaultStackSize);
|
||||||
|
}
|
||||||
|
else if (oversizedStackSize > 0 && user.isAuthorized("essentials.oversizedstacks"))
|
||||||
|
{
|
||||||
|
stack.setAmount(oversizedStackSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
|
||||||
public ItemStack get(final String id, final int quantity) throws Exception
|
public ItemStack get(final String id, final int quantity) throws Exception
|
||||||
{
|
{
|
||||||
final ItemStack retval = get(id.toLowerCase(Locale.ENGLISH));
|
final ItemStack retval = get(id.toLowerCase(Locale.ENGLISH));
|
||||||
|
@@ -65,7 +65,7 @@ public class Kits extends AsyncStorageObjectHolder<com.earth2me.essentials.setti
|
|||||||
public void sendKit(IUser user, Kit kit) throws Exception
|
public void sendKit(IUser user, Kit kit) throws Exception
|
||||||
{
|
{
|
||||||
final List<ItemStack> itemList = kit.getItems();
|
final List<ItemStack> itemList = kit.getItems();
|
||||||
user.giveItems(itemList);
|
user.giveItems(itemList, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -5,6 +5,8 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
|
|
||||||
public interface IItemDb extends IReload
|
public interface IItemDb extends IReload
|
||||||
{
|
{
|
||||||
|
ItemStack get(final String name, final IUser user) throws Exception;
|
||||||
|
|
||||||
ItemStack get(final String name, final int quantity) throws Exception;
|
ItemStack get(final String name, final int quantity) throws Exception;
|
||||||
|
|
||||||
ItemStack get(final String name) throws Exception;
|
ItemStack get(final String name) throws Exception;
|
||||||
|
@@ -30,9 +30,9 @@ public interface IUser extends Player, IStorageObjectHolder<UserData>, IReload,
|
|||||||
|
|
||||||
void giveMoney(double value, CommandSender initiator);
|
void giveMoney(double value, CommandSender initiator);
|
||||||
|
|
||||||
void giveItems(ItemStack itemStack);
|
void giveItems(ItemStack itemStack, Boolean canSpew);
|
||||||
|
|
||||||
void giveItems(List<ItemStack> itemStacks);
|
void giveItems(List<ItemStack> itemStacks, Boolean canSpew);
|
||||||
|
|
||||||
void setMoney(double value);
|
void setMoney(double value);
|
||||||
|
|
||||||
|
@@ -23,7 +23,9 @@ public class Commandgive extends EssentialsCommand
|
|||||||
throw new NotEnoughArgumentsException();
|
throw new NotEnoughArgumentsException();
|
||||||
}
|
}
|
||||||
|
|
||||||
final ItemStack stack = ess.getItemDb().get(args[1]);
|
final IUser giveTo = getPlayer(args, 0);
|
||||||
|
|
||||||
|
final ItemStack stack = ess.getItemDb().get(args[1], giveTo);
|
||||||
|
|
||||||
final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
|
final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
|
||||||
if (sender instanceof Player
|
if (sender instanceof Player
|
||||||
@@ -33,33 +35,10 @@ public class Commandgive extends EssentialsCommand
|
|||||||
throw new Exception(ChatColor.RED + "You are not allowed to spawn the item " + itemname);
|
throw new Exception(ChatColor.RED + "You are not allowed to spawn the item " + itemname);
|
||||||
}
|
}
|
||||||
|
|
||||||
final IUser giveTo = getPlayer(args, 0);
|
|
||||||
|
|
||||||
int defaultStackSize = 0;
|
|
||||||
int oversizedStackSize = 0;
|
|
||||||
ISettings settings = ess.getSettings();
|
|
||||||
settings.acquireReadLock();
|
|
||||||
try
|
|
||||||
{
|
|
||||||
defaultStackSize = settings.getData().getGeneral().getDefaultStacksize();
|
|
||||||
oversizedStackSize = settings.getData().getGeneral().getOversizedStacksize();
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
settings.unlock();
|
|
||||||
}
|
|
||||||
if (args.length > 2 && Integer.parseInt(args[2]) > 0)
|
if (args.length > 2 && Integer.parseInt(args[2]) > 0)
|
||||||
{
|
{
|
||||||
stack.setAmount(Integer.parseInt(args[2]));
|
stack.setAmount(Integer.parseInt(args[2]));
|
||||||
}
|
}
|
||||||
else if (defaultStackSize > 0)
|
|
||||||
{
|
|
||||||
stack.setAmount(defaultStackSize);
|
|
||||||
}
|
|
||||||
else if (oversizedStackSize > 0 && giveTo.isAuthorized("essentials.oversizedstacks"))
|
|
||||||
{
|
|
||||||
stack.setAmount(oversizedStackSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.length > 3)
|
if (args.length > 3)
|
||||||
{
|
{
|
||||||
@@ -89,16 +68,10 @@ public class Commandgive extends EssentialsCommand
|
|||||||
throw new Exception(ChatColor.RED + "You can't give air.");
|
throw new Exception(ChatColor.RED + "You can't give air.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
giveTo.giveItems(stack, false);
|
||||||
|
|
||||||
final String itemName = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace('_', ' ');
|
final String itemName = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace('_', ' ');
|
||||||
sender.sendMessage(ChatColor.BLUE + "Giving " + stack.getAmount() + " of " + itemName + " to " + giveTo.getDisplayName() + ".");
|
sender.sendMessage(ChatColor.BLUE + "Giving " + stack.getAmount() + " of " + itemName + " to " + giveTo.getDisplayName() + ".");
|
||||||
if (giveTo.isAuthorized("essentials.oversizedstacks"))
|
|
||||||
{
|
|
||||||
InventoryWorkaround.addItem(giveTo.getInventory(), true, oversizedStackSize, stack);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
InventoryWorkaround.addItem(giveTo.getInventory(), true, stack);
|
|
||||||
}
|
|
||||||
giveTo.updateInventory();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,7 +19,7 @@ public class Commanditem extends EssentialsCommand
|
|||||||
{
|
{
|
||||||
throw new NotEnoughArgumentsException();
|
throw new NotEnoughArgumentsException();
|
||||||
}
|
}
|
||||||
final ItemStack stack = ess.getItemDb().get(args[0]);
|
final ItemStack stack = ess.getItemDb().get(args[0], user);
|
||||||
|
|
||||||
final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
|
final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
|
||||||
if (!user.isAuthorized("essentials.itemspawn.item-" + itemname)
|
if (!user.isAuthorized("essentials.itemspawn.item-" + itemname)
|
||||||
@@ -28,31 +28,10 @@ public class Commanditem extends EssentialsCommand
|
|||||||
throw new Exception(_("cantSpawnItem", itemname));
|
throw new Exception(_("cantSpawnItem", itemname));
|
||||||
}
|
}
|
||||||
|
|
||||||
int defaultStackSize = 0;
|
|
||||||
int oversizedStackSize = 0;
|
|
||||||
ISettings settings = ess.getSettings();
|
|
||||||
settings.acquireReadLock();
|
|
||||||
try
|
|
||||||
{
|
|
||||||
defaultStackSize = settings.getData().getGeneral().getDefaultStacksize();
|
|
||||||
oversizedStackSize = settings.getData().getGeneral().getOversizedStacksize();
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
settings.unlock();
|
|
||||||
}
|
|
||||||
if (args.length > 1 && Integer.parseInt(args[1]) > 0)
|
if (args.length > 1 && Integer.parseInt(args[1]) > 0)
|
||||||
{
|
{
|
||||||
stack.setAmount(Integer.parseInt(args[1]));
|
stack.setAmount(Integer.parseInt(args[1]));
|
||||||
}
|
}
|
||||||
else if (defaultStackSize > 0)
|
|
||||||
{
|
|
||||||
stack.setAmount(defaultStackSize);
|
|
||||||
}
|
|
||||||
else if (oversizedStackSize > 0 && user.isAuthorized("essentials.oversizedstacks"))
|
|
||||||
{
|
|
||||||
stack.setAmount(oversizedStackSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.length > 2)
|
if (args.length > 2)
|
||||||
{
|
{
|
||||||
@@ -82,16 +61,9 @@ public class Commanditem extends EssentialsCommand
|
|||||||
throw new Exception(_("cantSpawnItem", "Air"));
|
throw new Exception(_("cantSpawnItem", "Air"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
user.giveItems(stack, false);
|
||||||
|
|
||||||
final String displayName = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace('_', ' ');
|
final String displayName = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace('_', ' ');
|
||||||
user.sendMessage(_("itemSpawn", stack.getAmount(), displayName));
|
user.sendMessage(_("itemSpawn", stack.getAmount(), displayName));
|
||||||
if (user.isAuthorized("essentials.oversizedstacks"))
|
|
||||||
{
|
|
||||||
InventoryWorkaround.addItem(user.getInventory(), true, oversizedStackSize, stack);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
InventoryWorkaround.addItem(user.getInventory(), true, stack);
|
|
||||||
}
|
|
||||||
user.updateInventory();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,7 +19,8 @@ public class Commandrealname extends EssentialsCommand
|
|||||||
{
|
{
|
||||||
throw new NotEnoughArgumentsException();
|
throw new NotEnoughArgumentsException();
|
||||||
}
|
}
|
||||||
@Cleanup final ISettings settings = ess.getSettings();
|
@Cleanup
|
||||||
|
final ISettings settings = ess.getSettings();
|
||||||
final String whois = args[0].toLowerCase(Locale.ENGLISH);
|
final String whois = args[0].toLowerCase(Locale.ENGLISH);
|
||||||
for (Player onlinePlayer : server.getOnlinePlayers())
|
for (Player onlinePlayer : server.getOnlinePlayers())
|
||||||
{
|
{
|
||||||
|
@@ -104,6 +104,7 @@ public class Commandunlimited extends EssentialsCommand
|
|||||||
user.sendMessage(_(message, itemname, target.getDisplayName()));
|
user.sendMessage(_(message, itemname, target.getDisplayName()));
|
||||||
}
|
}
|
||||||
target.sendMessage(_(message, itemname, target.getDisplayName()));
|
target.sendMessage(_(message, itemname, target.getDisplayName()));
|
||||||
|
target.acquireWriteLock();
|
||||||
target.getData().setUnlimited(stack.getType(), enableUnlimited);
|
target.getData().setUnlimited(stack.getType(), enableUnlimited);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@@ -654,21 +654,21 @@ public class User extends UserBase implements IUser
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void giveItems(ItemStack itemStack)
|
public void giveItems(ItemStack itemStack, Boolean canSpew)
|
||||||
{
|
{
|
||||||
if (giveItemStack(itemStack))
|
if (giveItemStack(itemStack, canSpew))
|
||||||
{
|
{
|
||||||
sendMessage(_("InvFull"));
|
sendMessage(_("InvFull"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void giveItems(List<ItemStack> itemStacks)
|
public void giveItems(List<ItemStack> itemStacks, Boolean canSpew)
|
||||||
{
|
{
|
||||||
boolean spew = false;
|
boolean spew = false;
|
||||||
for (ItemStack itemStack : itemStacks)
|
for (ItemStack itemStack : itemStacks)
|
||||||
{
|
{
|
||||||
if (giveItemStack(itemStack))
|
if (giveItemStack(itemStack, canSpew))
|
||||||
{
|
{
|
||||||
spew = true;
|
spew = true;
|
||||||
}
|
}
|
||||||
@@ -679,9 +679,15 @@ public class User extends UserBase implements IUser
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean giveItemStack(ItemStack itemStack)
|
private boolean giveItemStack(ItemStack itemStack, Boolean canSpew)
|
||||||
{
|
{
|
||||||
boolean spew = false;
|
boolean spew = false;
|
||||||
|
|
||||||
|
if (itemStack == null || itemStack.getType() == Material.AIR)
|
||||||
|
{
|
||||||
|
return spew;
|
||||||
|
}
|
||||||
|
|
||||||
final Map<Integer, ItemStack> overfilled;
|
final Map<Integer, ItemStack> overfilled;
|
||||||
if (isAuthorized("essentials.oversizedstacks"))
|
if (isAuthorized("essentials.oversizedstacks"))
|
||||||
{
|
{
|
||||||
@@ -696,10 +702,13 @@ public class User extends UserBase implements IUser
|
|||||||
{
|
{
|
||||||
overfilled = InventoryWorkaround.addItem(getInventory(), true, itemStack);
|
overfilled = InventoryWorkaround.addItem(getInventory(), true, itemStack);
|
||||||
}
|
}
|
||||||
for (ItemStack overflowStack : overfilled.values())
|
if (canSpew)
|
||||||
{
|
{
|
||||||
getWorld().dropItemNaturally(getLocation(), overflowStack);
|
for (ItemStack overflowStack : overfilled.values())
|
||||||
spew = true;
|
{
|
||||||
|
getWorld().dropItemNaturally(getLocation(), overflowStack);
|
||||||
|
spew = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return spew;
|
return spew;
|
||||||
}
|
}
|
||||||
|
@@ -3,6 +3,7 @@ package com.earth2me.essentials.signs;
|
|||||||
import com.earth2me.essentials.*;
|
import com.earth2me.essentials.*;
|
||||||
import com.earth2me.essentials.api.IEssentials;
|
import com.earth2me.essentials.api.IEssentials;
|
||||||
import com.earth2me.essentials.api.IUser;
|
import com.earth2me.essentials.api.IUser;
|
||||||
|
import com.earth2me.essentials.settings.Kit;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -31,7 +32,7 @@ public class SignKit extends EssentialsSign
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ess.getSettings().getKit(kitName);
|
ess.getKits().getKit(kitName);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -58,10 +59,9 @@ public class SignKit extends EssentialsSign
|
|||||||
charge.isAffordableFor(player);
|
charge.isAffordableFor(player);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
final Object kit = ess.getSettings().getKit(kitName);
|
final Kit kit = ess.getKits().getKit(kitName);
|
||||||
final Map<String, Object> els = (Map<String, Object>)kit;
|
ess.getKits().sendKit(player, kit);
|
||||||
final List<String> items = Kit.getItems(player, els);
|
|
||||||
Kit.expandItems(ess, player, items);
|
|
||||||
charge.charge(player);
|
charge.charge(player);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
Reference in New Issue
Block a user