Skip to content

Commit

Permalink
Allow list of items in FakeItem
Browse files Browse the repository at this point in the history
  • Loading branch information
Morphan1 committed Feb 7, 2016
1 parent 9200939 commit 419478a
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 22 deletions.
2 changes: 1 addition & 1 deletion src/main/java/net/aufdemrand/denizen/objects/dItem.java
Expand Up @@ -68,7 +68,7 @@ public static dItem valueOf(String string, TagContext context) {
* @return an Item, or null if incorrectly formatted
*/
public static dItem valueOf(String string, dPlayer player, dNPC npc) {
if (string == null) {
if (string == null || string.equals("")) {
return null;
}

Expand Down
Expand Up @@ -1137,7 +1137,7 @@ public void registerCoreMembers() {

// <--[command]
// @Name FakeItem
// @Syntax fakeitem [<item>] [slot:<#>] (duration:<duration>) (players:<player>|...) (player_only)
// @Syntax fakeitem [<item>|...] [slot:<#>] (duration:<duration>) (players:<player>|...) (player_only)
// @Required 2
// @Stable stable
// @Short Show a fake item in a player's inventory.
Expand Down
Expand Up @@ -46,8 +46,8 @@ else if (!scriptEntry.hasObject("duration")
}

else if (!scriptEntry.hasObject("item")
&& arg.matchesArgumentType(dItem.class)) {
scriptEntry.addObject("item", arg.asType(dItem.class));
&& arg.matchesArgumentList(dItem.class)) {
scriptEntry.addObject("item", arg.asType(dList.class).filter(dItem.class));
}

else if (!scriptEntry.hasObject("players")
Expand Down Expand Up @@ -83,33 +83,45 @@ else if (!scriptEntry.hasObject("player_only")
@Override
public void execute(ScriptEntry scriptEntry) throws CommandExecutionException {

dItem item = scriptEntry.getdObject("item");
final Element slot = scriptEntry.getElement("slot");
List<dItem> items = (List<dItem>) scriptEntry.getObject("item");
final Element elSlot = scriptEntry.getElement("slot");
Duration duration = scriptEntry.getdObject("duration");
final List<dPlayer> players = (List<dPlayer>) scriptEntry.getObject("players");
final Element player_only = scriptEntry.getElement("player_only");

dB.report(scriptEntry, getName(), item.debug() + slot.debug() + duration.debug()
dB.report(scriptEntry, getName(), aH.debugList("items", items) + elSlot.debug() + duration.debug()
+ aH.debugList("players", players) + player_only.debug());

net.minecraft.server.v1_8_R3.ItemStack itemStack = CraftItemStack.asNMSCopy(item.getItemStack());
int slot = elSlot.asInt() - 1;

for (dPlayer player : players) {
setSlot((CraftPlayer) player.getPlayerEntity(), slot.asInt() - 1, itemStack, player_only.asBoolean());
}
for (dItem item : items) {
if (item == null) {
slot++;
continue;
}

net.minecraft.server.v1_8_R3.ItemStack itemStack = CraftItemStack.asNMSCopy(item.getItemStack());

if (duration.getSeconds() > 0) {
DenizenCore.schedule(new OneTimeSchedulable(new Runnable() {
@Override
public void run() {
for (dPlayer player : players) {
CraftPlayer craftPlayer = (CraftPlayer) player.getPlayerEntity();
ItemStack original = CraftItemStack.asNMSCopy(craftPlayer.getOpenInventory()
.getItem(translateSlot(craftPlayer, slot.asInt() - 1, player_only.asBoolean())));
setSlot(craftPlayer, slot.asInt() - 1, original, player_only.asBoolean());
for (dPlayer player : players) {
setSlot((CraftPlayer) player.getPlayerEntity(), slot, itemStack, player_only.asBoolean());
}

final int slotSnapshot = slot;
slot++;

if (duration.getSeconds() > 0) {
DenizenCore.schedule(new OneTimeSchedulable(new Runnable() {
@Override
public void run() {
for (dPlayer player : players) {
CraftPlayer craftPlayer = (CraftPlayer) player.getPlayerEntity();
ItemStack original = CraftItemStack.asNMSCopy(craftPlayer.getOpenInventory()
.getItem(translateSlot(craftPlayer, slotSnapshot, player_only.asBoolean())));
setSlot(craftPlayer, slotSnapshot, original, player_only.asBoolean());
}
}
}
}, (float) duration.getSeconds()));
}, (float) duration.getSeconds()));
}
}
}

Expand Down

0 comments on commit 419478a

Please sign in to comment.