From 02395719191e2c3870f390ba22f3b01d7aaac0a9 Mon Sep 17 00:00:00 2001 From: Xenmai Date: Wed, 18 Oct 2017 22:04:10 +0200 Subject: [PATCH] Catalog Type Switches Improved Also improved some DurationTag tags. --- .../events/D2SpongeEventHelper.java | 29 +++++++------------ .../player/PlayerBreaksBlockScriptEvent.java | 4 ++- .../player/PlayerPlacesBlockScriptEvent.java | 4 ++- .../PlayerRightClicksBlockScriptEvent.java | 2 +- .../PlayerRightClicksEntityScriptEvent.java | 3 +- .../events/world/BlockChangesScriptEvent.java | 4 ++- .../events/world/BlockFadesScriptEvent.java | 4 ++- .../world/ExplosionOccursScriptEvent.java | 4 ++- .../events/world/PortalFormedScriptEvent.java | 4 ++- .../world/WeatherChangesScriptEvent.java | 9 +++--- .../tags/objects/EntityTag.java | 26 ++++++++--------- .../denizen2sponge/tags/objects/WorldTag.java | 17 ++++++----- .../denizen2sponge/utilities/Utilities.java | 5 ++++ 13 files changed, 64 insertions(+), 51 deletions(-) diff --git a/src/main/java/com/denizenscript/denizen2sponge/events/D2SpongeEventHelper.java b/src/main/java/com/denizenscript/denizen2sponge/events/D2SpongeEventHelper.java index 3c78150..c47afc6 100644 --- a/src/main/java/com/denizenscript/denizen2sponge/events/D2SpongeEventHelper.java +++ b/src/main/java/com/denizenscript/denizen2sponge/events/D2SpongeEventHelper.java @@ -10,8 +10,10 @@ import com.denizenscript.denizen2core.utilities.CoreUtilities; import com.denizenscript.denizen2sponge.tags.objects.*; import com.denizenscript.denizen2sponge.utilities.UtilLocation; +import com.denizenscript.denizen2sponge.utilities.Utilities; import com.denizenscript.denizen2sponge.utilities.flags.FlagHelper; import com.denizenscript.denizen2sponge.utilities.flags.FlagMap; +import org.spongepowered.api.CatalogType; import org.spongepowered.api.Sponge; import org.spongepowered.api.block.BlockType; import org.spongepowered.api.data.type.HandType; @@ -105,20 +107,7 @@ public static boolean checkWeather(String weather, ScriptEvent.ScriptEventData d } public static boolean checkWeather(String weather, ScriptEvent.ScriptEventData data, Action error, String tname) { - if (!data.switches.containsKey(tname)) { - return true; - } - for (AbstractTagObject ato : ListTag.getFor(error, data.switches.get(tname)).getInternal()) { - Optional type = Sponge.getRegistry().getType(Weather.class, ato.toString()); - if (!type.isPresent()) { - error.run("Invalid weather type: '" + ato.debug() + "'!"); - return false; - } - else if (type.get().getId().equals(weather)) { - return true; - } - } - return false; + return checkCatalogType(Weather.class, weather, data, error, tname); } public static boolean checkHandType(String hand, ScriptEvent.ScriptEventData data, Action error) { @@ -126,16 +115,20 @@ public static boolean checkHandType(String hand, ScriptEvent.ScriptEventData dat } public static boolean checkHandType(String hand, ScriptEvent.ScriptEventData data, Action error, String tname) { + return checkCatalogType(HandType.class, hand, data, error, tname); + } + + public static boolean checkCatalogType(Class clazz, String type, ScriptEvent.ScriptEventData data, Action error, String tname) { if (!data.switches.containsKey(tname)) { return true; } for (AbstractTagObject ato : ListTag.getFor(error, data.switches.get(tname)).getInternal()) { - Optional type = Sponge.getRegistry().getType(HandType.class, ato.toString()); - if (!type.isPresent()) { - error.run("Invalid hand type: '" + ato.debug() + "'!"); + Optional opt = Sponge.getRegistry().getType(clazz, ato.toString()); + if (!opt.isPresent()) { + error.run("Invalid " + clazz.getSimpleName() + " type: '" + ato.debug() + "'!"); return false; } - else if (type.get().getId().equals(hand)) { + else if (Utilities.getIdWithoutDefaultPrefix(opt.get().getId()).equals(type)) { return true; } } diff --git a/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerBreaksBlockScriptEvent.java b/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerBreaksBlockScriptEvent.java index 1acc016..b6eeac1 100644 --- a/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerBreaksBlockScriptEvent.java +++ b/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerBreaksBlockScriptEvent.java @@ -8,6 +8,7 @@ import com.denizenscript.denizen2sponge.tags.objects.ItemTag; import com.denizenscript.denizen2sponge.tags.objects.LocationTag; import com.denizenscript.denizen2sponge.tags.objects.PlayerTag; +import com.denizenscript.denizen2sponge.utilities.Utilities; import org.spongepowered.api.Sponge; import org.spongepowered.api.block.BlockSnapshot; import org.spongepowered.api.data.Transaction; @@ -66,7 +67,8 @@ public boolean matches(ScriptEventData data) { .getItemInHand(HandTypes.MAIN_HAND).orElse(ItemStack.empty())), data, this::error) && D2SpongeEventHelper.checkWorld(location.getInternal().world, data, this::error) && D2SpongeEventHelper.checkCuboid(location.getInternal(), data, this::error) - && D2SpongeEventHelper.checkWeather(location.getInternal().world.getWeather().getId(), data, this::error); + && D2SpongeEventHelper.checkWeather(Utilities.getIdWithoutDefaultPrefix( + location.getInternal().world.getWeather().getId()), data, this::error); } public PlayerTag player; diff --git a/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerPlacesBlockScriptEvent.java b/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerPlacesBlockScriptEvent.java index 2612d87..4cdcf2d 100644 --- a/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerPlacesBlockScriptEvent.java +++ b/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerPlacesBlockScriptEvent.java @@ -7,6 +7,7 @@ import com.denizenscript.denizen2sponge.tags.objects.BlockTypeTag; import com.denizenscript.denizen2sponge.tags.objects.LocationTag; import com.denizenscript.denizen2sponge.tags.objects.PlayerTag; +import com.denizenscript.denizen2sponge.utilities.Utilities; import org.spongepowered.api.Sponge; import org.spongepowered.api.block.BlockSnapshot; import org.spongepowered.api.data.Transaction; @@ -61,7 +62,8 @@ public boolean matches(ScriptEvent.ScriptEventData data) { return D2SpongeEventHelper.checkBlockType(material.getInternal(), data, this::error) && D2SpongeEventHelper.checkWorld(location.getInternal().world, data, this::error) && D2SpongeEventHelper.checkCuboid(location.getInternal(), data, this::error) - && D2SpongeEventHelper.checkWeather(location.getInternal().world.getWeather().getId(), data, this::error); + && D2SpongeEventHelper.checkWeather(Utilities.getIdWithoutDefaultPrefix( + location.getInternal().world.getWeather().getId()), data, this::error); } public PlayerTag player; diff --git a/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerRightClicksBlockScriptEvent.java b/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerRightClicksBlockScriptEvent.java index 305c73b..cd44fa7 100644 --- a/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerRightClicksBlockScriptEvent.java +++ b/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerRightClicksBlockScriptEvent.java @@ -135,7 +135,7 @@ public void onRightClickBlock(InteractBlockEvent.Secondary evt, @Root Player pla event.impact_normal = new LocationTag(0, 0, 0); } event.hInternal = evt.getHandType(); - event.hand = new TextTag(evt.getHandType().getId()); + event.hand = new TextTag(Utilities.getIdWithoutDefaultPrefix(evt.getHandType().getId())); event.cancelled = evt.isCancelled(); event.run(); evt.setCancelled(event.cancelled); diff --git a/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerRightClicksEntityScriptEvent.java b/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerRightClicksEntityScriptEvent.java index 20e2c09..86f3a14 100644 --- a/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerRightClicksEntityScriptEvent.java +++ b/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerRightClicksEntityScriptEvent.java @@ -9,6 +9,7 @@ import com.denizenscript.denizen2sponge.tags.objects.EntityTag; import com.denizenscript.denizen2sponge.tags.objects.ItemTag; import com.denizenscript.denizen2sponge.tags.objects.PlayerTag; +import com.denizenscript.denizen2sponge.utilities.Utilities; import org.spongepowered.api.Sponge; import org.spongepowered.api.data.type.HandType; import org.spongepowered.api.entity.living.player.Player; @@ -101,7 +102,7 @@ public void onRightClickEntity(InteractEntityEvent.Secondary evt, @Root Player p event.player = new PlayerTag(player); event.entity = new EntityTag(evt.getTargetEntity()); event.hInternal = evt.getHandType(); - event.hand = new TextTag(evt.getHandType().getId()); + event.hand = new TextTag(Utilities.getIdWithoutDefaultPrefix(evt.getHandType().getId())); event.cancelled = evt.isCancelled(); event.run(); evt.setCancelled(event.cancelled); diff --git a/src/main/java/com/denizenscript/denizen2sponge/events/world/BlockChangesScriptEvent.java b/src/main/java/com/denizenscript/denizen2sponge/events/world/BlockChangesScriptEvent.java index 3464462..2b8b508 100644 --- a/src/main/java/com/denizenscript/denizen2sponge/events/world/BlockChangesScriptEvent.java +++ b/src/main/java/com/denizenscript/denizen2sponge/events/world/BlockChangesScriptEvent.java @@ -6,6 +6,7 @@ import com.denizenscript.denizen2sponge.events.D2SpongeEventHelper; import com.denizenscript.denizen2sponge.tags.objects.BlockTypeTag; import com.denizenscript.denizen2sponge.tags.objects.LocationTag; +import com.denizenscript.denizen2sponge.utilities.Utilities; import org.spongepowered.api.Sponge; import org.spongepowered.api.block.BlockSnapshot; import org.spongepowered.api.data.Transaction; @@ -59,7 +60,8 @@ public boolean matches(ScriptEventData data) { && D2SpongeEventHelper.checkBlockType(old_material.getInternal(), data, this::error, "old_type") && D2SpongeEventHelper.checkWorld(location.getInternal().world, data, this::error) && D2SpongeEventHelper.checkCuboid(location.getInternal(), data, this::error) - && D2SpongeEventHelper.checkWeather(location.getInternal().world.getWeather().getId(), data, this::error); + && D2SpongeEventHelper.checkWeather(Utilities.getIdWithoutDefaultPrefix( + location.getInternal().world.getWeather().getId()), data, this::error); } diff --git a/src/main/java/com/denizenscript/denizen2sponge/events/world/BlockFadesScriptEvent.java b/src/main/java/com/denizenscript/denizen2sponge/events/world/BlockFadesScriptEvent.java index 33afc37..cddb897 100644 --- a/src/main/java/com/denizenscript/denizen2sponge/events/world/BlockFadesScriptEvent.java +++ b/src/main/java/com/denizenscript/denizen2sponge/events/world/BlockFadesScriptEvent.java @@ -6,6 +6,7 @@ import com.denizenscript.denizen2sponge.events.D2SpongeEventHelper; import com.denizenscript.denizen2sponge.tags.objects.BlockTypeTag; import com.denizenscript.denizen2sponge.tags.objects.LocationTag; +import com.denizenscript.denizen2sponge.utilities.Utilities; import org.spongepowered.api.Sponge; import org.spongepowered.api.block.BlockSnapshot; import org.spongepowered.api.data.Transaction; @@ -56,7 +57,8 @@ public boolean matches(ScriptEventData data) { return D2SpongeEventHelper.checkBlockType(material.getInternal(), data, this::error) && D2SpongeEventHelper.checkWorld(location.getInternal().world, data, this::error) && D2SpongeEventHelper.checkCuboid(location.getInternal(), data, this::error) - && D2SpongeEventHelper.checkWeather(location.getInternal().world.getWeather().getId(), data, this::error); + && D2SpongeEventHelper.checkWeather(Utilities.getIdWithoutDefaultPrefix( + location.getInternal().world.getWeather().getId()), data, this::error); } public LocationTag location; diff --git a/src/main/java/com/denizenscript/denizen2sponge/events/world/ExplosionOccursScriptEvent.java b/src/main/java/com/denizenscript/denizen2sponge/events/world/ExplosionOccursScriptEvent.java index 97006db..4d10a96 100644 --- a/src/main/java/com/denizenscript/denizen2sponge/events/world/ExplosionOccursScriptEvent.java +++ b/src/main/java/com/denizenscript/denizen2sponge/events/world/ExplosionOccursScriptEvent.java @@ -10,6 +10,7 @@ import com.denizenscript.denizen2sponge.events.D2SpongeEventHelper; import com.denizenscript.denizen2sponge.tags.objects.EntityTag; import com.denizenscript.denizen2sponge.tags.objects.LocationTag; +import com.denizenscript.denizen2sponge.utilities.Utilities; import org.spongepowered.api.Sponge; import org.spongepowered.api.entity.Entity; import org.spongepowered.api.event.Listener; @@ -63,7 +64,8 @@ public boolean couldMatch(ScriptEventData data) { public boolean matches(ScriptEventData data) { return D2SpongeEventHelper.checkWorld(location.getInternal().world, data, this::error) && D2SpongeEventHelper.checkCuboid(location.getInternal(), data, this::error) - && D2SpongeEventHelper.checkWeather(location.getInternal().world.getWeather().getId(), data, this::error); + && D2SpongeEventHelper.checkWeather(Utilities.getIdWithoutDefaultPrefix( + location.getInternal().world.getWeather().getId()), data, this::error); } public LocationTag location; diff --git a/src/main/java/com/denizenscript/denizen2sponge/events/world/PortalFormedScriptEvent.java b/src/main/java/com/denizenscript/denizen2sponge/events/world/PortalFormedScriptEvent.java index ca8c51f..dae44c8 100644 --- a/src/main/java/com/denizenscript/denizen2sponge/events/world/PortalFormedScriptEvent.java +++ b/src/main/java/com/denizenscript/denizen2sponge/events/world/PortalFormedScriptEvent.java @@ -5,6 +5,7 @@ import com.denizenscript.denizen2sponge.Denizen2Sponge; import com.denizenscript.denizen2sponge.events.D2SpongeEventHelper; import com.denizenscript.denizen2sponge.tags.objects.LocationTag; +import com.denizenscript.denizen2sponge.utilities.Utilities; import org.spongepowered.api.Sponge; import org.spongepowered.api.event.Listener; import org.spongepowered.api.event.world.ConstructPortalEvent; @@ -52,7 +53,8 @@ public boolean couldMatch(ScriptEventData data) { public boolean matches(ScriptEventData data) { return D2SpongeEventHelper.checkWorld(location.getInternal().world, data, this::error) && D2SpongeEventHelper.checkCuboid(location.getInternal(), data, this::error) - && D2SpongeEventHelper.checkWeather(location.getInternal().world.getWeather().getId(), data, this::error); + && D2SpongeEventHelper.checkWeather(Utilities.getIdWithoutDefaultPrefix( + location.getInternal().world.getWeather().getId()), data, this::error); } public LocationTag location; diff --git a/src/main/java/com/denizenscript/denizen2sponge/events/world/WeatherChangesScriptEvent.java b/src/main/java/com/denizenscript/denizen2sponge/events/world/WeatherChangesScriptEvent.java index 4ab5d62..2abc9f2 100644 --- a/src/main/java/com/denizenscript/denizen2sponge/events/world/WeatherChangesScriptEvent.java +++ b/src/main/java/com/denizenscript/denizen2sponge/events/world/WeatherChangesScriptEvent.java @@ -7,6 +7,7 @@ import com.denizenscript.denizen2sponge.Denizen2Sponge; import com.denizenscript.denizen2sponge.events.D2SpongeEventHelper; import com.denizenscript.denizen2sponge.tags.objects.WorldTag; +import com.denizenscript.denizen2sponge.utilities.Utilities; import org.spongepowered.api.Sponge; import org.spongepowered.api.event.Listener; import org.spongepowered.api.event.world.ChangeWorldWeatherEvent; @@ -98,9 +99,9 @@ public void onWeatherChanges(ChangeWorldWeatherEvent evt) { WeatherChangesScriptEvent event = (WeatherChangesScriptEvent) clone(); event.internal = evt; event.world = new WorldTag(evt.getTargetWorld()); - event.duration = new DurationTag(evt.getDuration() / 20.0); - event.new_weather = new TextTag(evt.getWeather().getId()); - event.old_weather = new TextTag(evt.getInitialWeather().getId()); + event.duration = new DurationTag(evt.getDuration() * (1.0 / 20.0)); + event.new_weather = new TextTag(Utilities.getIdWithoutDefaultPrefix(evt.getWeather().getId())); + event.old_weather = new TextTag(Utilities.getIdWithoutDefaultPrefix(evt.getInitialWeather().getId())); event.cancelled = evt.isCancelled(); event.run(); evt.setCancelled(event.cancelled); @@ -120,7 +121,7 @@ else if (determination.equals("new_weather")) { this.error("Invalid weather type: '" + tt.debug() + "'!"); return; } - new_weather = new TextTag(type.get().getId()); + new_weather = new TextTag(Utilities.getIdWithoutDefaultPrefix(type.get().getId())); internal.setWeather(type.get()); } else { diff --git a/src/main/java/com/denizenscript/denizen2sponge/tags/objects/EntityTag.java b/src/main/java/com/denizenscript/denizen2sponge/tags/objects/EntityTag.java index 42f993d..19a812a 100644 --- a/src/main/java/com/denizenscript/denizen2sponge/tags/objects/EntityTag.java +++ b/src/main/java/com/denizenscript/denizen2sponge/tags/objects/EntityTag.java @@ -420,7 +420,7 @@ public String friendlyName() { // @ReturnType DurationTag // @Returns the maximum air level this entity can have. // --> - handlers.put("max_air", (dat, obj) -> new DurationTag(((EntityTag) obj).internal.get(Keys.MAX_AIR).get() / 20.0)); + handlers.put("max_air", (dat, obj) -> new DurationTag(((EntityTag) obj).internal.get(Keys.MAX_AIR).get() * (1.0 / 20.0))); // <--[tag] // @Name EntityTag.remaining_air // @Updated 2017/04/17 @@ -432,9 +432,9 @@ public String friendlyName() { Entity ent = ((EntityTag) obj).internal; Optional opt = ent.get(Keys.REMAINING_AIR); if (!opt.isPresent()) { - return new DurationTag(ent.get(Keys.MAX_AIR).get() / 20.0); + return new DurationTag(ent.get(Keys.MAX_AIR).get() * (1.0 / 20.0)); } - return new DurationTag(opt.get() / 20.0); + return new DurationTag(opt.get() * (1.0 / 20.0)); }); // <--[tag] // @Name EntityTag.inventory @@ -496,10 +496,10 @@ public String friendlyName() { // @Name EntityTag.fall_time // @Updated 2017/09/28 // @Group Current Information - // @ReturnType IntegerTag + // @ReturnType DurationTag // @Returns how long the block has been falling. Falling block entities only. // --> - handlers.put("fall_time", (dat, obj) -> new IntegerTag(((FallingBlock) ((EntityTag) obj).internal).fallTime().get())); + handlers.put("fall_time", (dat, obj) -> new DurationTag(((FallingBlock) ((EntityTag) obj).internal).fallTime().get() * (1.0 / 20.0))); // <--[tag] // @Name EntityTag.max_fall_damage // @Updated 2017/09/28 @@ -634,10 +634,10 @@ else if (source instanceof Entity) { // @Name EntityTag.application_delay // @Updated 2017/10/02 // @Group Current Information - // @ReturnType IntegerTag + // @ReturnType DurationTag // @Returns the application delay of this cloud. Area effect cloud entities only. // --> - handlers.put("application_delay", (dat, obj) -> new IntegerTag(((AreaEffectCloud) ((EntityTag) obj).internal).applicationDelay().get())); + handlers.put("application_delay", (dat, obj) -> new DurationTag(((AreaEffectCloud) ((EntityTag) obj).internal).applicationDelay().get() * (1.0 / 20.0))); // <--[tag] // @Name EntityTag.cloud_color // @Updated 2017/10/04 @@ -653,18 +653,18 @@ else if (source instanceof Entity) { // @Name EntityTag.duration // @Updated 2017/10/02 // @Group Current Information - // @ReturnType IntegerTag + // @ReturnType DurationTag // @Returns the current duration of this cloud. Area effect cloud entities only. // --> - handlers.put("duration", (dat, obj) -> new IntegerTag(((AreaEffectCloud) ((EntityTag) obj).internal).duration().get())); + handlers.put("duration", (dat, obj) -> new DurationTag(((AreaEffectCloud) ((EntityTag) obj).internal).duration().get() * (1.0 / 20.0))); // <--[tag] // @Name EntityTag.duration_on_use // @Updated 2017/10/02 // @Group Current Information - // @ReturnType IntegerTag + // @ReturnType DurationTag // @Returns how much duration the cloud will lose after applying its effect to an entity. Area effect cloud entities only. // --> - handlers.put("duration_on_use", (dat, obj) -> new IntegerTag(((AreaEffectCloud) ((EntityTag) obj).internal).durationOnUse().get())); + handlers.put("duration_on_use", (dat, obj) -> new DurationTag(((AreaEffectCloud) ((EntityTag) obj).internal).durationOnUse().get() * (1.0 / 20.0))); // <--[tag] // @Name EntityTag.particle_type // @Updated 2017/10/02 @@ -701,10 +701,10 @@ else if (source instanceof Entity) { // @Name EntityTag.wait_time // @Updated 2017/10/02 // @Group Current Information - // @ReturnType IntegerTag + // @ReturnType DurationTag // @Returns how long until this cloud will affect entities with its effect. Area effect cloud entities only. // --> - handlers.put("wait_time", (dat, obj) -> new IntegerTag(((AreaEffectCloud) ((EntityTag) obj).internal).waitTime().get())); + handlers.put("wait_time", (dat, obj) -> new DurationTag(((AreaEffectCloud) ((EntityTag) obj).internal).waitTime().get() * (1.0 / 20.0))); // <--[tag] // @Name EntityTag.age // @Updated 2017/10/02 diff --git a/src/main/java/com/denizenscript/denizen2sponge/tags/objects/WorldTag.java b/src/main/java/com/denizenscript/denizen2sponge/tags/objects/WorldTag.java index 815bf3e..7e698df 100644 --- a/src/main/java/com/denizenscript/denizen2sponge/tags/objects/WorldTag.java +++ b/src/main/java/com/denizenscript/denizen2sponge/tags/objects/WorldTag.java @@ -7,6 +7,7 @@ import com.denizenscript.denizen2core.utilities.CoreUtilities; import com.denizenscript.denizen2core.utilities.Function2; import com.denizenscript.denizen2sponge.utilities.GameRules; +import com.denizenscript.denizen2sponge.utilities.Utilities; import org.spongepowered.api.Sponge; import org.spongepowered.api.entity.Entity; import org.spongepowered.api.entity.living.player.Player; @@ -165,7 +166,7 @@ public World getInternal() { // @ReturnType DurationTag // @Returns the time of day of the world. This value is not necessarily within the time span of a single day. // --> - handlers.put("time", (dat, obj) -> new DurationTag(((WorldTag) obj).internal.getProperties().getWorldTime() / 20.0)); + handlers.put("time", (dat, obj) -> new DurationTag(((WorldTag) obj).internal.getProperties().getWorldTime() * (1.0 / 20.0))); // <--[tag] // @Name WorldTag.total_time // @Updated 2017/04/03 @@ -173,7 +174,7 @@ public World getInternal() { // @ReturnType DurationTag // @Returns the total time of the world. // --> - handlers.put("total_time", (dat, obj) -> new DurationTag(((WorldTag) obj).internal.getProperties().getTotalTime() / 20.0)); + handlers.put("total_time", (dat, obj) -> new DurationTag(((WorldTag) obj).internal.getProperties().getTotalTime() * (1.0 / 20.0))); // <--[tag] // @Name WorldTag.difficulty // @Updated 2017/04/03 @@ -182,7 +183,7 @@ public World getInternal() { // @Returns the difficulty of the world. Difficulties include 'peaceful', 'easy', 'normal' and 'hard'. // @Example "world" .difficulty might return "easy". // --> - handlers.put("difficulty", (dat, obj) -> new TextTag(CoreUtilities.toLowerCase(((WorldTag) obj).internal.getProperties().getDifficulty().toString()))); + handlers.put("difficulty", (dat, obj) -> new TextTag(Utilities.getIdWithoutDefaultPrefix(((WorldTag) obj).internal.getProperties().getDifficulty().getId()))); // <--[tag] // @Name WorldTag.is_raining // @Updated 2017/04/03 @@ -198,7 +199,7 @@ public World getInternal() { // @ReturnType DurationTag // @Returns the remaining time before the rain state is toggled to a random value in this world. // --> - handlers.put("rain_time", (dat, obj) -> new DurationTag(((WorldTag) obj).internal.getProperties().getRainTime() / 20.0)); + handlers.put("rain_time", (dat, obj) -> new DurationTag(((WorldTag) obj).internal.getProperties().getRainTime() * (1.0 / 20.0))); // <--[tag] // @Name WorldTag.is_thundering // @Updated 2017/04/03 @@ -214,7 +215,7 @@ public World getInternal() { // @ReturnType DurationTag // @Returns the remaining time before the thunder state is toggled to a random value in this world. // --> - handlers.put("thunder_time", (dat, obj) -> new DurationTag(((WorldTag) obj).internal.getProperties().getThunderTime() / 20.0)); + handlers.put("thunder_time", (dat, obj) -> new DurationTag(((WorldTag) obj).internal.getProperties().getThunderTime() * (1.0 / 20.0))); // <--[tag] // @Name WorldTag.weather // @Updated 2017/04/03 @@ -223,7 +224,7 @@ public World getInternal() { // @Returns the current weather of the world. Weathers include 'clear', 'rain' and 'thunder_storm'. // @Example "world" .weather might return "clear". // --> - handlers.put("weather", (dat, obj) -> new TextTag(CoreUtilities.toLowerCase(((WorldTag) obj).internal.getWeather().getName()))); + handlers.put("weather", (dat, obj) -> new TextTag(Utilities.getIdWithoutDefaultPrefix(((WorldTag) obj).internal.getWeather().getId()))); // <--[tag] // @Name WorldTag.remaining_weather_time // @Updated 2017/04/03 @@ -231,7 +232,7 @@ public World getInternal() { // @ReturnType DurationTag // @Returns the remaining duration of the current weather in the world. // --> - handlers.put("remaining_weather_time", (dat, obj) -> new DurationTag(((WorldTag) obj).internal.getRemainingDuration() / 20.0)); + handlers.put("remaining_weather_time", (dat, obj) -> new DurationTag(((WorldTag) obj).internal.getRemainingDuration() * (1.0 / 20.0))); // <--[tag] // @Name WorldTag.running_weather_time // @Updated 2017/04/03 @@ -239,7 +240,7 @@ public World getInternal() { // @ReturnType DurationTag // @Returns the duration the current weather in the world has been running for. // --> - handlers.put("running_weather_time", (dat, obj) -> new DurationTag(((WorldTag) obj).internal.getRunningDuration() / 20.0)); + handlers.put("running_weather_time", (dat, obj) -> new DurationTag(((WorldTag) obj).internal.getRunningDuration() * (1.0 / 20.0))); } public static WorldTag getFor(Action error, String text) { diff --git a/src/main/java/com/denizenscript/denizen2sponge/utilities/Utilities.java b/src/main/java/com/denizenscript/denizen2sponge/utilities/Utilities.java index d0d9201..bcd80bc 100644 --- a/src/main/java/com/denizenscript/denizen2sponge/utilities/Utilities.java +++ b/src/main/java/com/denizenscript/denizen2sponge/utilities/Utilities.java @@ -3,6 +3,7 @@ import com.denizenscript.denizen2core.tags.objects.MapTag; import com.denizenscript.denizen2core.tags.objects.TimeTag; import com.denizenscript.denizen2core.utilities.Action; +import com.denizenscript.denizen2core.utilities.CoreUtilities; import org.spongepowered.api.entity.Entity; import org.spongepowered.api.entity.living.player.Player; import org.spongepowered.api.entity.living.player.gamemode.GameModes; @@ -35,4 +36,8 @@ public static boolean flagIsValidAndNotExpired(Action error, MapTag flag } return b; } + + public static String getIdWithoutDefaultPrefix(String id) { + return id.startsWith("minecraft:") ? CoreUtilities.after(id, "minecraft:") : id; + } }