1
0
mirror of https://github.com/essentials/Essentials.git synced 2025-08-13 18:14:38 +02:00

Fixing up kits.

This commit is contained in:
KHobbits
2012-01-04 03:12:21 +00:00
parent 781f42fba1
commit 2678be90e3
19 changed files with 261 additions and 60 deletions

View File

@@ -58,6 +58,7 @@ public class Essentials extends JavaPlugin implements IEssentials
private transient ISettings settings;
private final transient TNTExplodeListener tntListener = new TNTExplodeListener(this);
private transient IJails jails;
private transient IKits kits;
private transient IWarps warps;
private transient IWorth worth;
private transient List<IReload> reloadList;
@@ -158,6 +159,8 @@ public class Essentials extends JavaPlugin implements IEssentials
itemDb = new ItemDb(this);
reloadList.add(itemDb);
execTimer.mark("Init(Worth/ItemDB)");
kits = new Kits(this);
reloadList.add(kits);
commandHandler = new EssentialsCommandHandler(Essentials.class.getClassLoader(), "com.earth2me.essentials.commands.Command", "essentials.", this);
reloadList.add(commandHandler);
reload();
@@ -221,7 +224,6 @@ public class Essentials extends JavaPlugin implements IEssentials
pm.registerEvent(Type.ENTITY_REGAIN_HEALTH, entityListener, Priority.Lowest, this);
pm.registerEvent(Type.FOOD_LEVEL_CHANGE, entityListener, Priority.Lowest, this);
//TODO: Check if this should be here, and not above before reload()
jails = new Jails(this);
reloadList.add(jails);
@@ -273,6 +275,12 @@ public class Essentials extends JavaPlugin implements IEssentials
{
return jails;
}
@Override
public IKits getKits()
{
return kits;
}
@Override
public IWarps getWarps()

View File

@@ -9,7 +9,7 @@ import java.util.*;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
/*
public class Kit
{
//TODO: Convert this to use one of the new text classes?
@@ -35,31 +35,7 @@ public class Kit
}
public static void checkTime(final IUser user, final String kitName, final Map<String, Object> els) throws NoChargeException
{
final double delay = els.containsKey("delay") ? ((Number)els.get("delay")).doubleValue() : 0L;
final Calendar c = new GregorianCalendar();
c.add(Calendar.SECOND, -(int)delay);
c.add(Calendar.MILLISECOND, -(int)((delay * 1000.0) % 1000.0));
final long mintime = c.getTimeInMillis();
final Long lastTime = user.getKitTimestamp(kitName);
if (lastTime == null || lastTime < mintime)
{
final Calendar now = new GregorianCalendar();
user.setKitTimestamp(kitName, now.getTimeInMillis());
}
else
{
final Calendar future = new GregorianCalendar();
future.setTimeInMillis(lastTime);
future.add(Calendar.SECOND, (int)delay);
future.add(Calendar.MILLISECOND, (int)((delay * 1000.0) % 1000.0));
user.sendMessage(_("kitTimed", Util.formatDateDiff(future.getTimeInMillis())));
throw new NoChargeException();
}
}
public static List<String> getItems(final IUser user, final Map<String, Object> els) throws Exception
{
@@ -112,4 +88,32 @@ public class Kit
throw new Exception(_("kitError2"));
}
}
public static void checkTime(final IUser user, final String kitName, final Map<String, Object> els) throws NoChargeException
{
final double delay = els.containsKey("delay") ? ((Number)els.get("delay")).doubleValue() : 0L;
final Calendar c = new GregorianCalendar();
c.add(Calendar.SECOND, -(int)delay);
c.add(Calendar.MILLISECOND, -(int)((delay * 1000.0) % 1000.0));
final long mintime = c.getTimeInMillis();
final Long lastTime = user.getKitTimestamp(kitName);
if (lastTime == null || lastTime < mintime)
{
final Calendar now = new GregorianCalendar();
user.setKitTimestamp(kitName, now.getTimeInMillis());
}
else
{
final Calendar future = new GregorianCalendar();
future.setTimeInMillis(lastTime);
future.add(Calendar.SECOND, (int)delay);
future.add(Calendar.MILLISECOND, (int)((delay * 1000.0) % 1000.0));
user.sendMessage(_("kitTimed", Util.formatDateDiff(future.getTimeInMillis())));
throw new NoChargeException();
}
}
}
*/

View File

@@ -0,0 +1,95 @@
package com.earth2me.essentials;
import com.earth2me.essentials.api.IEssentials;
import com.earth2me.essentials.api.IKits;
import com.earth2me.essentials.settings.Kit;
import com.earth2me.essentials.storage.AsyncStorageObjectHolder;
import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.api.IUser;
import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.inventory.ItemStack;
public class Kits extends AsyncStorageObjectHolder<com.earth2me.essentials.settings.Kits> implements IKits
{
private static final transient Logger LOGGER = Bukkit.getLogger();
public Kits(final IEssentials ess)
{
super(ess, com.earth2me.essentials.settings.Kits.class);
onReload();
}
@Override
public File getStorageFile() throws IOException
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Kit getKit(String kitName) throws Exception
{
acquireReadLock();
try
{
if (getData().getKits() == null || kitName == null
|| !getData().getKits().containsKey(kitName.toLowerCase(Locale.ENGLISH)))
{
throw new Exception(_("kitError2"));
}
Kit kit = getData().getKits().get(kitName.toLowerCase(Locale.ENGLISH));
if (kit == null)
{
throw new Exception(_("kitError2"));
}
return kit;
}
finally
{
unlock();
}
}
@Override
public void sendKit(IUser user, String kitName) throws Exception
{
final Kit kit = getKit(kitName);
sendKit(user, kit);
}
@Override
public void sendKit(IUser user, Kit kit) throws Exception
{
final List<ItemStack> itemList = kit.getItems();
user.giveItems(itemList);
}
@Override
public Collection<String> getList() throws Exception
{
acquireReadLock();
try
{
if (getData().getKits() == null)
{
return Collections.emptyList();
}
return new ArrayList<String>(getData().getKits().keySet());
}
finally
{
unlock();
}
}
@Override
public boolean isEmpty()
{
return getData().getKits().isEmpty();
}
}

View File

@@ -27,6 +27,8 @@ public interface IEssentials extends Plugin
IGroups getGroups();
IJails getJails();
IKits getKits();
IWarps getWarps();

View File

@@ -0,0 +1,20 @@
package com.earth2me.essentials.api;
import com.earth2me.essentials.settings.Kit;
import java.util.Collection;
import java.util.List;
import org.bukkit.Location;
public interface IKits extends IReload
{
Kit getKit(String kit)throws Exception;
void sendKit(IUser user, String kit) throws Exception;
void sendKit(IUser user, Kit kit) throws Exception;
Collection<String> getList() throws Exception;
boolean isEmpty();
}

View File

@@ -7,6 +7,7 @@ import java.util.List;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public interface IUser extends Player, IStorageObjectHolder<UserData>, IReload, IReplyTo, Comparable<IUser>
@@ -28,6 +29,10 @@ public interface IUser extends Player, IStorageObjectHolder<UserData>, IReload,
void giveMoney(double value);
void giveMoney(double value, CommandSender initiator);
void giveItems(ItemStack itemStack);
void giveItems(List<ItemStack> itemStacks);
void setMoney(double value);

View File

@@ -1,12 +1,12 @@
package com.earth2me.essentials.commands;
import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.Kit;
import com.earth2me.essentials.Kits;
import com.earth2me.essentials.Trade;
import com.earth2me.essentials.Util;
import com.earth2me.essentials.api.IUser;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import com.earth2me.essentials.settings.Kit;
import java.util.*;
public class Commandkit extends EssentialsCommand
@@ -16,35 +16,40 @@ public class Commandkit extends EssentialsCommand
{
if (args.length < 1)
{
final String kitList = Kit.listKits(ess, user);
if (kitList.length() > 0)
Collection<String> kitList = ess.getKits().getList();
if (kitList.isEmpty())
{
user.sendMessage(_("kits", kitList));
user.sendMessage(_("noKits"));
}
else
{
user.sendMessage(_("noKits"));
for (String kitName : kitList)
{
if (!user.isAuthorized("essentials.kit." + kitName))
{
kitList.remove(kitName);
}
}
user.sendMessage(_("kits", Util.joinList(kitList)));
}
throw new NoChargeException();
}
else
{
final String kitName = args[0].toLowerCase(Locale.ENGLISH);
final Object kit = ess.getSettings().getKit(kitName);
final Kit kit = ess.getKits().getKit(kitName);
if (!user.isAuthorized("essentials.kit." + kitName))
{
throw new Exception(_("noKitPermission", "essentials.kit." + kitName));
}
final Map<String, Object> els = (Map<String, Object>)kit;
final List<String> items = Kit.getItems(user, els);
Kit.checkTime(user, kitName, els);
//TODO: Check kit delay
final Trade charge = new Trade("kit-" + kitName, ess);
charge.isAffordableFor(user);
Kit.expandItems(ess, user, items);
ess.getKits().sendKit(user, kit);
charge.charge(user);
user.sendMessage(_("kitGive", kitName));

View File

@@ -19,7 +19,6 @@ public class Commands implements StorageObject
private God god = new God();
private Help help = new Help();
private Home home = new Home();
private Kit kit = new Kit();
private Lightning lightning = new Lightning();
private com.earth2me.essentials.settings.commands.List list = new com.earth2me.essentials.settings.commands.List();
private Spawnmob spawnmob = new Spawnmob();

View File

@@ -1,4 +1,4 @@
package com.earth2me.essentials.settings.commands;
package com.earth2me.essentials.settings;
import com.earth2me.essentials.storage.ListType;
import com.earth2me.essentials.storage.StorageObject;
@@ -11,7 +11,7 @@ import org.bukkit.inventory.ItemStack;
@Data
@EqualsAndHashCode(callSuper = false)
public class KitObject implements StorageObject
public class Kit implements StorageObject
{
@ListType(ItemStack.class)
private List<ItemStack> items = new ArrayList<ItemStack>();

View File

@@ -1,4 +1,4 @@
package com.earth2me.essentials.settings.commands;
package com.earth2me.essentials.settings;
import com.earth2me.essentials.storage.MapValueType;
import com.earth2me.essentials.storage.StorageObject;
@@ -12,17 +12,17 @@ import org.bukkit.inventory.ItemStack;
@Data
@EqualsAndHashCode(callSuper = false)
public class Kit implements StorageObject
public class Kits implements StorageObject
{
public Kit()
public Kits()
{
final KitObject kit = new KitObject();
final Kit kit = new Kit();
kit.setDelay(10.0);
kit.getItems().add(new ItemStack(Material.DIAMOND_SPADE, 1));
kit.getItems().add(new ItemStack(Material.DIAMOND_PICKAXE, 1));
kit.getItems().add(new ItemStack(Material.DIAMOND_AXE, 1));
kits.put("tools", kit);
}
@MapValueType(KitObject.class)
private Map<String, KitObject> kits = new HashMap<String, KitObject>();
@MapValueType(Kit.class)
private Map<String, Kit> kits = new HashMap<String, Kit>();
}

View File

@@ -6,11 +6,14 @@ import com.earth2me.essentials.Teleport;
import com.earth2me.essentials.Util;
import com.earth2me.essentials.api.*;
import com.earth2me.essentials.commands.IEssentialsCommand;
import com.earth2me.essentials.craftbukkit.InventoryWorkaround;
import com.earth2me.essentials.register.payment.Method;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Level;
import java.util.logging.Logger;
import lombok.Cleanup;
import lombok.Getter;
@@ -20,6 +23,7 @@ import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public class User extends UserBase implements IUser
@@ -626,15 +630,65 @@ public class User extends UserBase implements IUser
{
return replyTo;
}
@Override
public boolean gotMailInfo() {
public boolean gotMailInfo()
{
return gotMailInfo.getAndSet(true);
}
@Override
public void addMail(String mail) {
public void addMail(String mail)
{
super.addMail(mail);
gotMailInfo.set(false);
}
@Override
public void giveItems(ItemStack itemStack)
{
if (giveItemStack(itemStack))
{
sendMessage(_("InvFull"));
}
}
@Override
public void giveItems(List<ItemStack> itemStacks)
{
boolean spew = false;
for (ItemStack itemStack : itemStacks)
{
if (giveItemStack(itemStack))
{
spew = true;
}
}
if (spew)
{
sendMessage(_("InvFull"));
}
}
private boolean giveItemStack(ItemStack itemStack)
{
boolean spew = false;
final Map<Integer, ItemStack> overfilled;
if (isAuthorized("essentials.oversizedstacks"))
{
int oversizedStackSize = ess.getSettings().getData().getGeneral().getOversizedStacksize();
overfilled = InventoryWorkaround.addItem(getInventory(), true, oversizedStackSize, itemStack);
}
else
{
overfilled = InventoryWorkaround.addItem(getInventory(), true, itemStack);
}
for (ItemStack overflowStack : overfilled.values())
{
getWorld().dropItemNaturally(getLocation(), overflowStack);
spew = true;
}
return spew;
}
}

View File

@@ -159,7 +159,7 @@ kitError2=\u00a7cThat kit does not exist or is improperly defined.
kitError=\u00a7cThere are no valid kits.
kitErrorHelp=\u00a7cPerhaps an item is missing a quantity in the configuration?
kitGive=\u00a77Giving kit {0}.
kitInvFull=\u00a7cYour inventory was full, placing kit on the floor
InvFull=\u00a7cYour inventory was full, dropping items on the floor
kitTimed=\u00a7cYou can''t use that kit again for another {0}.
kits=\u00a77Kits: {0}
lightningSmited=\u00a77You have just been smited

View File

@@ -159,7 +159,7 @@ kitError2=\u00a7cDette kit eksisterer ikke eller er forkert defineret.
kitError=\u00a7cDer er ikke nogen gyldige kits.
kitErrorHelp=\u00a7cM\u00e5ske mangler en ting en m\u00e6ngde i konfigurationen? Eller m\u00c3\u00a5ske er der nisser p\u00c3\u00a5 spil?
kitGive=\u00a77Giver kit til {0} (oversat korrekt?).
kitInvFull=\u00a7cDin inventory er fuld, placerer kit p\u00e5 gulvet.
InvFull=\u00a7cYour inventory was full, dropping items on the floor
kitTimed=\u00a7cDu kan ikke benytte dette kit igen i {0}.
kits=\u00a77Kits: {0}
lightningSmited=\u00a77Du er blevet ramt af Guds vrede (din admin)

View File

@@ -159,7 +159,7 @@ kitError2=\u00a7cDiese Ausr\u00fcstung existiert nicht oder ist ung\u00fcltig.
kitError=\u00a7cEs gibt keine g\u00fcltigen Ausr\u00fcstungen.
kitErrorHelp=\u00a7cEventuell fehlt bei einem Gegenstand die Menge?
kitGive=\u00a77Gebe Ausr\u00fcstung {0}.
kitInvFull=\u00a7cDein Inventar ist voll, lege Ausr\u00fcstung auf den Boden
InvFull=\u00a7cYour inventory was full, dropping items on the floor
kitTimed=\u00a7cDu kannst diese Ausr\u00fcstung nicht innerhalb von {0} anfordern.
kits=\u00a77Ausr\u00fcstungen: {0}
lightningSmited=\u00a77Du wurdest gepeinigt.

View File

@@ -159,7 +159,7 @@ kitError2=\u00a7cEse kit no existe o esta mal escrito.
kitError=\u00a7cNo hay ningun kit valido.
kitErrorHelp=\u00a7cPerhaps an item is missing a quantity in the configuration?
kitGive=\u00a77Dando kit a {0}.
kitInvFull=\u00a7cTu inventario esta lleno, su kit se pondra en el suelo
InvFull=\u00a7cYour inventory was full, dropping items on the floor
kitTimed=\u00a7c No puedes usar ese kit de nuevo para otro{0}.
kits=\u00a77Kits: {0}
lightningSmited=\u00a77Acabas de ser golpeado

View File

@@ -159,7 +159,7 @@ kitError2=\u00a7cCe kit n''existe pas ou a \u00e9t\u00e9 mal d\u00e9fini.
kitError=\u00a7cIl n''y a pas de kits valides.
kitErrorHelp=\u00a7cPeut-\u00eatre qu''un objet manque d''une quantit\u00e9 dans la configuration ?
kitGive=\u00a77Donner le kit {0}.
kitInvFull=\u00a7cVotre inventaire \u00e9tait plein, le kit est parre-terre.
InvFull=\u00a7cYour inventory was full, dropping items on the floor
kitTimed=\u00a7cVous ne pouvez pas utiliser ce kit pendant encore {0}.
kits=\u00a77Kits :{0}
lightningSmited=\u00a77Vous venez d''\u00eatre foudroy\u00e9.

View File

@@ -159,7 +159,7 @@ kitError2=\u00a7cDie kit bestaat niet of is verkeerde beschreven.
kitError=\u00a7cEr zijn geen geldige kits.
kitErrorHelp=\u00a7cMisschien mist er een hoeveelheid van het item in de configuratie?
kitGive=\u00a77Kit {0} wordt gegeven.
kitInvFull=\u00a7cJe inventory was vol, de kit wordt op de grond geplaatst
InvFull=\u00a7cYour inventory was full, dropping items on the floor
kitTimed=\u00a7cJe kan die kit pas weer gebruiken over {0}.
kits=\u00a77Kits: {0}
lightningSmited=\u00a77Je bent zojuist verbrand

View File

@@ -873,6 +873,14 @@ is divided into following sections:
-->
<target depends="init" if="have.sources" name="-javadoc-build">
<mkdir dir="${dist.javadoc.dir}"/>
<condition else="" property="javadoc.endorsed.classpath.cmd.line.arg" value="-J${endorsed.classpath.cmd.line.arg}">
<and>
<isset property="endorsed.classpath.cmd.line.arg"/>
<not>
<equals arg1="${endorsed.classpath.cmd.line.arg}" arg2=""/>
</not>
</and>
</condition>
<javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
<classpath>
<path path="${javac.classpath}"/>
@@ -884,6 +892,7 @@ is divided into following sections:
<include name="**/*.java"/>
<exclude name="*.java"/>
</fileset>
<arg line="${javadoc.endorsed.classpath.cmd.line.arg}"/>
</javadoc>
<copy todir="${dist.javadoc.dir}">
<fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">

View File

@@ -4,5 +4,5 @@ build.xml.stylesheet.CRC32=28e38971@1.47.1.46
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=4bedf084
nbproject/build-impl.xml.script.CRC32=154412d6
nbproject/build-impl.xml.stylesheet.CRC32=c12040a1@1.47.1.46
nbproject/build-impl.xml.script.CRC32=5a15f942
nbproject/build-impl.xml.stylesheet.CRC32=fcddb364@1.50.1.46