Skip to content
This repository has been archived by the owner on Apr 12, 2022. It is now read-only.

Commit

Permalink
Improve item script queue linkage tendency
Browse files Browse the repository at this point in the history
also uuids
  • Loading branch information
mcmonkey4eva committed May 21, 2018
1 parent 8049dd6 commit 309a16d
Show file tree
Hide file tree
Showing 10 changed files with 31 additions and 12 deletions.
Expand Up @@ -23,6 +23,7 @@ public void preReload() {
GameCommandScript.clear();
AdvancementScript.oldAdvancementScripts = new HashSet<>(AdvancementScript.currentAdvancementScripts.keySet());
AdvancementScript.currentAdvancementScripts.clear();
Denizen2Sponge.itemScripts.clear();
}

@Override
Expand Down
Expand Up @@ -54,7 +54,7 @@ public int getMaximumArguments() {

@Override
public void execute(CommandQueue queue, CommandEntry entry) {
ItemTag item = ItemTag.getFor(queue.error, entry.getArgumentObject(queue, 0));
ItemTag item = ItemTag.getFor(queue.error, entry.getArgumentObject(queue, 0), queue);
LocationTag locationTag = LocationTag.getFor(queue.error, entry.getArgumentObject(queue, 1));
UtilLocation location = locationTag.getInternal();
if (location.world == null) {
Expand Down
Expand Up @@ -61,7 +61,7 @@ public void execute(CommandQueue queue, CommandEntry entry) {
EntityTag ent = EntityTag.getFor(queue.error, entry.getArgumentObject(queue, 0));
MapTag map = MapTag.getFor(queue.error, entry.getArgumentObject(queue, 1));
for (Map.Entry<String, AbstractTagObject> mapentry : map.getInternal().entrySet()) {
ItemTag itm = ItemTag.getFor(queue.error, mapentry.getValue());
ItemTag itm = ItemTag.getFor(queue.error, mapentry.getValue(), queue);
Equipment.equippers.get(CoreUtilities.toLowerCase(mapentry.getKey())).run(new Tuple<>((Living) ent.getInternal(), itm));
}
if (queue.shouldShowGood()) {
Expand Down
Expand Up @@ -62,7 +62,7 @@ public int getMaximumArguments() {
@Override
public void execute(CommandQueue queue, CommandEntry entry) {
PlayerTag player = PlayerTag.getFor(queue.error, entry.getArgumentObject(queue, 0));
ItemTag item = ItemTag.getFor(queue.error, entry.getArgumentObject(queue, 1));
ItemTag item = ItemTag.getFor(queue.error, entry.getArgumentObject(queue, 1), queue);
if (queue.shouldShowGood()) {
queue.outGood("Giving " + ColorSet.emphasis + player.debug() + ColorSet.good
+ ": " + ColorSet.emphasis + item.debug());
Expand Down
Expand Up @@ -60,7 +60,7 @@ public int getMaximumArguments() {
@Override
public void execute(CommandQueue queue, CommandEntry entry) {
PlayerTag player = PlayerTag.getFor(queue.error, entry.getArgumentObject(queue, 0));
ItemTag item = ItemTag.getFor(queue.error, entry.getArgumentObject(queue, 1));
ItemTag item = ItemTag.getFor(queue.error, entry.getArgumentObject(queue, 1), queue);
String type;
if (entry.namedArgs.containsKey("operation")) {
type = entry.getNamedArgumentObject(queue, "operation").toString();
Expand Down
Expand Up @@ -169,7 +169,7 @@ public ItemStack generateItem(CommandQueue queue) {
Action<String> error = (es) -> {
throw new ErrorInducedException(es);
};
ItemStack.Builder its = ItemStack.builder().from(ItemTag.getFor(error, parseVal(queue, material)).getInternal()).quantity(1);
ItemStack.Builder its = ItemStack.builder().from(ItemTag.getFor(error, parseVal(queue, material), queue).getInternal()).quantity(1);
if (displayName != null) {
its = its.add(Keys.DISPLAY_NAME, Denizen2Sponge.parseColor(parseVal(queue, displayName).toString()));
}
Expand Down
Expand Up @@ -26,6 +26,6 @@ public AbstractTagObject handle(TagData data) {
data.error.run("Invalid item tag-base: expected a modifier! See documentation for this tag!");
return null;
}
return ItemTag.getFor(data.error, data.getNextModifier()).handle(data.shrink());
return ItemTag.getFor(data.error, data.getNextModifier(), data.currentQueue).handle(data.shrink());
}
}
Expand Up @@ -66,7 +66,7 @@ public Inventory getInternal() {
// @Returns whether the inventory contains the specified quantity or more of the specified item.
// @Example "block/0,1,2,world" .contains[diamond/3] might return "false".
// -->
handlers.put("contains", (dat, obj) -> new BooleanTag(((InventoryTag) obj).internal.contains(ItemTag.getFor(dat.error, dat.getNextModifier()).getInternal())));
handlers.put("contains", (dat, obj) -> new BooleanTag(((InventoryTag) obj).internal.contains(ItemTag.getFor(dat.error, dat.getNextModifier(), dat.currentQueue).getInternal())));
// <--[tag]
// @Since 0.3.0
// @Name InventoryTag.contains_any[<ItemTag>]
Expand All @@ -76,7 +76,7 @@ public Inventory getInternal() {
// @Returns whether the inventory contains any quantity of the specified item.
// @Example "block/0,1,2,world" .contains_any[diamond] might return "true".
// -->
handlers.put("contains_any", (dat, obj) -> new BooleanTag(((InventoryTag) obj).internal.containsAny(ItemTag.getFor(dat.error, dat.getNextModifier()).getInternal())));
handlers.put("contains_any", (dat, obj) -> new BooleanTag(((InventoryTag) obj).internal.containsAny(ItemTag.getFor(dat.error, dat.getNextModifier(), dat.currentQueue).getInternal())));
// <--[tag]
// @Since 0.4.0
// @Name InventoryTag.fuel
Expand Down
@@ -1,5 +1,6 @@
package com.denizenscript.denizen2sponge.tags.objects;

import com.denizenscript.denizen2core.commands.CommandQueue;
import com.denizenscript.denizen2core.tags.AbstractTagObject;
import com.denizenscript.denizen2core.tags.TagData;
import com.denizenscript.denizen2core.tags.objects.*;
Expand Down Expand Up @@ -365,7 +366,7 @@ public ItemScript getSourceScript() {
});
}

public static ItemTag getFor(Action<String> error, String text) {
public static ItemTag getFor(Action<String> error, String text, CommandQueue queue) {
List<String> split = CoreUtilities.split(text, '/', 3);
int q = 1;
if (split.size() > 1) {
Expand All @@ -379,7 +380,7 @@ public static ItemTag getFor(Action<String> error, String text) {
else {
String tlow = CoreUtilities.toLowerCase(text);
if (Denizen2Sponge.itemScripts.containsKey(tlow)) {
its = Denizen2Sponge.itemScripts.get(tlow).getItemCopy(null);
its = Denizen2Sponge.itemScripts.get(tlow).getItemCopy(queue);
}
else {
error.run("Invalid item type '" + text + "'");
Expand All @@ -399,8 +400,16 @@ public static ItemTag getFor(Action<String> error, String text) {
return new ItemTag(its);
}

public static ItemTag getFor(Action<String> error, AbstractTagObject text) {
return (text instanceof ItemTag) ? (ItemTag) text : getFor(error, text.toString());
public static ItemTag getFor(Action<String> error, AbstractTagObject ato, CommandQueue queue) {
return (ato instanceof ItemTag) ? (ItemTag) ato : getFor(error, ato.toString());
}

public static ItemTag getFor(Action<String> error, String text) {
return getFor(error, text, null);
}

public static ItemTag getFor(Action<String> error, AbstractTagObject ato) {
return getFor(error, ato, null);
}

@Override
Expand Down
Expand Up @@ -106,6 +106,9 @@ else if (type.isSubtypeOf(Vector3d.class)) {
else if (type.isSubtypeOf(Text.class)) {
return FormattedTextTag.getFor(error, value).getInternal();
}
else if (type.isSubtypeOf(UUID.class)) {
return UUID.fromString(value.toString());
}
else if (type.isSubtypeOf(FlagMap.class)) {
return new FlagMap(MapTag.getFor(error, value));
}
Expand Down Expand Up @@ -147,6 +150,9 @@ public static AbstractTagObject taggifyObject(Action<String> error, Object input
if (input instanceof Text) {
return new FormattedTextTag((Text) input);
}
if (input instanceof UUID) {
return new TextTag(input.toString());
}
if (input instanceof FlagMap) {
return new MapTag(((FlagMap) input).flags.getInternal());
}
Expand Down Expand Up @@ -191,6 +197,9 @@ else if (Vector3d.class.isAssignableFrom(clazz)) {
else if (Text.class.isAssignableFrom(clazz)) {
return new FormattedTextTag(dataHolder.getOrElse((Key<BaseValue<Text>>) key, Text.EMPTY));
}
else if (UUID.class.isAssignableFrom(clazz)) {
return new TextTag(dataHolder.getValue((Key<BaseValue<UUID>>) key).orElseThrow(() -> new ErrorInducedException("Empty UUID value!")).get().toString());
}
else if (FlagMap.class.isAssignableFrom(clazz)) {
return new MapTag(dataHolder.getOrElse((Key<BaseValue<FlagMap>>) key, new FlagMap(new MapTag())).flags.getInternal());
}
Expand Down

0 comments on commit 309a16d

Please sign in to comment.