9
0
mirror of https://github.com/Auxilor/Reforges.git synced 2026-01-04 15:41:40 +00:00

Added reforge arg parser

This commit is contained in:
Auxilor
2021-09-03 16:14:15 +01:00
parent 90ec2f8a73
commit 6ecd7eac6a
7 changed files with 92 additions and 46 deletions

View File

@@ -14,6 +14,7 @@ import lombok.AccessLevel;
import lombok.Getter;
import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
@@ -156,12 +157,22 @@ public abstract class Reforge implements Listener, Watcher {
*/
public abstract ReforgeTarget[] getTarget();
public void handleApplication(@NotNull final ItemStack itemStack) {
// Override when needed
public final void handleApplication(@NotNull final ItemStack itemStack) {
itemStack.setItemMeta(this.handleApplication(Objects.requireNonNull(itemStack.getItemMeta())));
}
public void handleRemoval(@NotNull final ItemStack itemStack) {
public ItemMeta handleApplication(@NotNull final ItemMeta meta) {
// Override when needed
return meta;
}
public final void handleRemoval(@NotNull final ItemStack itemStack) {
itemStack.setItemMeta(this.handleRemoval(Objects.requireNonNull(itemStack.getItemMeta())));
}
public ItemMeta handleRemoval(@NotNull final ItemMeta meta) {
// Override when needed
return meta;
}

View File

@@ -30,10 +30,7 @@ public class ReforgeLight extends Reforge {
}
@Override
public void handleApplication(@NotNull final ItemStack itemStack) {
ItemMeta meta = itemStack.getItemMeta();
assert meta != null;
public ItemMeta handleApplication(@NotNull final ItemMeta meta) {
meta.addAttributeModifier(Attribute.GENERIC_ATTACK_SPEED, new AttributeModifier(
this.getUuid(),
"light-speed",
@@ -47,16 +44,13 @@ public class ReforgeLight extends Reforge {
AttributeModifier.Operation.MULTIPLY_SCALAR_1
));
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
itemStack.setItemMeta(meta);
return meta;
}
@Override
public void handleRemoval(@NotNull final ItemStack itemStack) {
ItemMeta meta = itemStack.getItemMeta();
assert meta != null;
public ItemMeta handleRemoval(@NotNull final ItemMeta meta) {
meta.removeAttributeModifier(Attribute.GENERIC_ATTACK_SPEED);
meta.removeAttributeModifier(Attribute.GENERIC_ATTACK_KNOCKBACK);
itemStack.setItemMeta(meta);
return meta;
}
}

View File

@@ -30,10 +30,7 @@ public class ReforgeStrong extends Reforge {
}
@Override
public void handleApplication(@NotNull final ItemStack itemStack) {
ItemMeta meta = itemStack.getItemMeta();
assert meta != null;
public ItemMeta handleApplication(@NotNull final ItemMeta meta) {
meta.addAttributeModifier(Attribute.GENERIC_ATTACK_KNOCKBACK, new AttributeModifier(
this.getUuid(),
"strong-kb",
@@ -41,15 +38,12 @@ public class ReforgeStrong extends Reforge {
AttributeModifier.Operation.MULTIPLY_SCALAR_1
));
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
itemStack.setItemMeta(meta);
return meta;
}
@Override
public void handleRemoval(@NotNull final ItemStack itemStack) {
ItemMeta meta = itemStack.getItemMeta();
assert meta != null;
public ItemMeta handleRemoval(@NotNull final ItemMeta meta) {
meta.removeAttributeModifier(Attribute.GENERIC_ATTACK_KNOCKBACK);
itemStack.setItemMeta(meta);
return meta;
}
}

View File

@@ -29,10 +29,7 @@ public class ReforgeThin extends Reforge {
}
@Override
public void handleApplication(@NotNull final ItemStack itemStack) {
ItemMeta meta = itemStack.getItemMeta();
assert meta != null;
public ItemMeta handleApplication(@NotNull final ItemMeta meta) {
meta.addAttributeModifier(Attribute.GENERIC_MOVEMENT_SPEED, new AttributeModifier(
this.getUuid(),
"thin-speed",
@@ -40,15 +37,12 @@ public class ReforgeThin extends Reforge {
AttributeModifier.Operation.MULTIPLY_SCALAR_1
));
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
itemStack.setItemMeta(meta);
return meta;
}
@Override
public void handleRemoval(@NotNull final ItemStack itemStack) {
ItemMeta meta = itemStack.getItemMeta();
assert meta != null;
public ItemMeta handleRemoval(@NotNull final ItemMeta meta) {
meta.removeAttributeModifier(Attribute.GENERIC_MOVEMENT_SPEED);
itemStack.setItemMeta(meta);
return meta;
}
}

View File

@@ -29,10 +29,7 @@ public class ReforgeTough extends Reforge {
}
@Override
public void handleApplication(@NotNull final ItemStack itemStack) {
ItemMeta meta = itemStack.getItemMeta();
assert meta != null;
public ItemMeta handleApplication(@NotNull final ItemMeta meta) {
meta.addAttributeModifier(Attribute.GENERIC_MOVEMENT_SPEED, new AttributeModifier(
this.getUuid(),
"tough-speed",
@@ -40,15 +37,12 @@ public class ReforgeTough extends Reforge {
AttributeModifier.Operation.MULTIPLY_SCALAR_1
));
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
itemStack.setItemMeta(meta);
return meta;
}
@Override
public void handleRemoval(@NotNull final ItemStack itemStack) {
ItemMeta meta = itemStack.getItemMeta();
assert meta != null;
public ItemMeta handleRemoval(@NotNull final ItemMeta meta) {
meta.removeAttributeModifier(Attribute.GENERIC_MOVEMENT_SPEED);
itemStack.setItemMeta(meta);
return meta;
}
}

View File

@@ -0,0 +1,48 @@
package com.willfp.reforges.reforges.util;
import com.willfp.eco.core.items.args.LookupArgParser;
import com.willfp.reforges.reforges.Reforge;
import com.willfp.reforges.reforges.Reforges;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull;
import java.util.function.Predicate;
public class ReforgeArgParser implements LookupArgParser {
@Override
public Predicate<ItemStack> parseArguments(@NotNull final String[] args,
@NotNull final ItemMeta meta) {
Reforge reforge = null;
for (String arg : args) {
String[] split = arg.split(":");
if (split.length == 1 || !split[0].equalsIgnoreCase("reforge")) {
continue;
}
Reforge match = Reforges.getByKey(split[1].toLowerCase());
if (match == null) {
continue;
}
reforge = match;
break;
}
if (reforge == null) {
return itemStack -> true;
}
ReforgeUtils.setReforge(meta, reforge);
Reforge finalReforge = reforge;
return test -> {
ItemMeta testMeta = test.getItemMeta();
if (testMeta == null) {
return false;
}
return finalReforge.equals(ReforgeUtils.getReforge(testMeta));
};
}
}

View File

@@ -158,13 +158,24 @@ public class ReforgeUtils {
ItemMeta meta = item.getItemMeta();
setReforge(meta, reforge);
item.setItemMeta(meta);
}
/**
* Set reforge on an item.
*
* @param meta The meta.
* @param reforge The reforge.
*/
public static void setReforge(@NotNull final ItemMeta meta,
@NotNull final Reforge reforge) {
PersistentDataContainer container = meta.getPersistentDataContainer();
container.set(REFORGE_KEY, PersistentDataType.STRING, reforge.getKey());
item.setItemMeta(meta);
reforge.handleApplication(item);
reforge.handleApplication(meta);
}
/**