diff --git a/src/main/java/xyz/srnyx/annoyingapi/AnnoyingPlugin.java b/src/main/java/xyz/srnyx/annoyingapi/AnnoyingPlugin.java index 5e41d40..f56b1e5 100644 --- a/src/main/java/xyz/srnyx/annoyingapi/AnnoyingPlugin.java +++ b/src/main/java/xyz/srnyx/annoyingapi/AnnoyingPlugin.java @@ -678,7 +678,13 @@ public Relocation getRelocation(@NotNull String from, @NotNull String name) { */ @NotNull public Relocation getRelocation(@NotNull String from) { - return getRelocation(from, from.substring(from.lastIndexOf("{}") + 2).toLowerCase().replaceAll("[^a-z0-9._{}]", "")); + String name = from; + if (name.contains("{}")) { + name = name.substring(name.lastIndexOf("{}") + 2); + } else if (name.contains(".")) { + name = name.substring(name.lastIndexOf(".") + 1); + } + return getRelocation(from, name.toLowerCase().replaceAll("[^a-z0-9._{}]", "")); } /** diff --git a/src/main/java/xyz/srnyx/annoyingapi/command/selector/SelectorOptional.java b/src/main/java/xyz/srnyx/annoyingapi/command/selector/SelectorOptional.java index dd1d055..10a4f6f 100644 --- a/src/main/java/xyz/srnyx/annoyingapi/command/selector/SelectorOptional.java +++ b/src/main/java/xyz/srnyx/annoyingapi/command/selector/SelectorOptional.java @@ -87,6 +87,7 @@ public SelectorOptional mapRaw(@NotNull Function mapper) { */ @Nullable @Unmodifiable public List orElse(@NotNull Function> other) { + if (raw == null) return null; if (selector == null) return other.apply(raw); final List expanded = selector.expand(sender); if (expanded == null) sender.invalidArgument(raw); @@ -102,6 +103,7 @@ public List orElse(@NotNull Function> other) { */ @Nullable @Unmodifiable public List orElseSingle(@NotNull Function other) { + if (raw == null) return null; if (selector == null) return Collections.singletonList(other.apply(raw)); final List expanded = selector.expand(sender); if (expanded == null) sender.invalidArgument(raw); @@ -117,6 +119,7 @@ public List orElseSingle(@NotNull Function other) { */ @Nullable @Unmodifiable public List orElseFlat(@NotNull Function>> other) { + if (raw == null) return null; if (selector == null) { final Optional> result = other.apply(raw); if (result.isEmpty()) sender.invalidArgument(raw); diff --git a/src/main/java/xyz/srnyx/annoyingapi/dependency/AnnoyingDownload.java b/src/main/java/xyz/srnyx/annoyingapi/dependency/AnnoyingDownload.java index 5dfecef..d8a1f36 100644 --- a/src/main/java/xyz/srnyx/annoyingapi/dependency/AnnoyingDownload.java +++ b/src/main/java/xyz/srnyx/annoyingapi/dependency/AnnoyingDownload.java @@ -250,8 +250,9 @@ private void downloadFile(@NotNull AnnoyingDependency dependency, @NotNull Plugi final byte[] buffer = new byte[1024]; int numRead; while ((numRead = in.read(buffer)) != -1) out.write(buffer, 0, numRead); - } catch (final IOException ignored) { - //ignored + } catch (final IOException e) { + fail(dependency, platform); + return; } // Send success message diff --git a/src/main/java/xyz/srnyx/annoyingapi/file/okaeri/serdes/AttributeModifierSerializer.java b/src/main/java/xyz/srnyx/annoyingapi/file/okaeri/serdes/AttributeModifierSerializer.java index d5002b1..4d94cb9 100644 --- a/src/main/java/xyz/srnyx/annoyingapi/file/okaeri/serdes/AttributeModifierSerializer.java +++ b/src/main/java/xyz/srnyx/annoyingapi/file/okaeri/serdes/AttributeModifierSerializer.java @@ -11,6 +11,7 @@ import xyz.srnyx.annoyingapi.reflection.org.bukkit.attribute.RefAttributeModifier; import static xyz.srnyx.annoyingapi.reflection.org.bukkit.attribute.RefAttributeModifier.ATTRIBUTE_MODIFIER_CLASS; +import static xyz.srnyx.annoyingapi.reflection.org.bukkit.attribute.RefAttributeModifier.ATTRIBUTE_MODIFIER_GET_AMOUNT_METHOD; import static xyz.srnyx.annoyingapi.reflection.org.bukkit.attribute.RefAttributeModifier.ATTRIBUTE_MODIFIER_GET_NAME_METHOD; import static xyz.srnyx.annoyingapi.reflection.org.bukkit.attribute.RefAttributeModifier.ATTRIBUTE_MODIFIER_GET_OPERATION_METHOD; import static xyz.srnyx.annoyingapi.reflection.org.bukkit.attribute.RefAttributeModifier.ATTRIBUTE_MODIFIER_GET_SLOT_GROUP_METHOD; @@ -43,6 +44,13 @@ public void serialize(@NotNull Object object, @NotNull SerializationData data, @ e.printStackTrace(); } + // amount + if (ATTRIBUTE_MODIFIER_GET_AMOUNT_METHOD != null) try { + data.set("amount", ATTRIBUTE_MODIFIER_GET_AMOUNT_METHOD.invoke(object)); + } catch (final Exception e) { + e.printStackTrace(); + } + // operation try { data.set("operation", ATTRIBUTE_MODIFIER_GET_OPERATION_METHOD.invoke(object)); diff --git a/src/main/java/xyz/srnyx/annoyingapi/reflection/org/bukkit/attribute/RefAttributeModifier.java b/src/main/java/xyz/srnyx/annoyingapi/reflection/org/bukkit/attribute/RefAttributeModifier.java index e468393..9fe2c32 100644 --- a/src/main/java/xyz/srnyx/annoyingapi/reflection/org/bukkit/attribute/RefAttributeModifier.java +++ b/src/main/java/xyz/srnyx/annoyingapi/reflection/org/bukkit/attribute/RefAttributeModifier.java @@ -49,6 +49,11 @@ public class RefAttributeModifier { */ @Nullable public static final Method ATTRIBUTE_MODIFIER_GET_NAME_METHOD = ReflectionUtility.getMethod(1, 13, 2, ATTRIBUTE_MODIFIER_CLASS, "getName"); + /** + * 1.13.2+ org.bukkit.attribute.AttributeModifier#getAmount() + */ + @Nullable public static final Method ATTRIBUTE_MODIFIER_GET_AMOUNT_METHOD = ReflectionUtility.getMethod(1, 13, 2, ATTRIBUTE_MODIFIER_CLASS, "getAmount"); + /** * 1.13.2+ org.bukkit.attribute.AttributeModifier#getOperation() */