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:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user