mirror of
https://github.com/Auxilor/Reforges.git
synced 2025-12-28 03:19:29 +00:00
Added light reforge
This commit is contained in:
@@ -27,19 +27,21 @@ public class ReforgesPlugin extends EcoPlugin {
|
||||
* Internal constructor called by bukkit on plugin load.
|
||||
*/
|
||||
public ReforgesPlugin() {
|
||||
super(0, 12412, "�ff00");
|
||||
super(0, 12412, "&3");
|
||||
instance = this;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleEnable() {
|
||||
if (EconomyHandler.init()) {
|
||||
this.getLogger().info(Reforges.values().size() + " Reforges Loaded");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleAfterLoad() {
|
||||
if (!EconomyHandler.init()) {
|
||||
this.getLogger().severe("Vault economy is required!");
|
||||
this.getServer().getPluginManager().disablePlugin(this);
|
||||
return;
|
||||
}
|
||||
|
||||
this.getLogger().info(Reforges.values().size() + " Reforges Loaded");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.willfp.reforges.reforges.util.Watcher;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
@@ -90,6 +91,15 @@ public abstract class Reforge implements Listener, Watcher {
|
||||
*/
|
||||
public abstract ReforgeTarget getTarget();
|
||||
|
||||
public void handleApplication(@NotNull final ItemStack itemStack) {
|
||||
// Override when needed
|
||||
}
|
||||
|
||||
public void handleRemoval(@NotNull final ItemStack itemStack) {
|
||||
// Override when needed
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(final Object o) {
|
||||
if (this == o) {
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.google.common.collect.BiMap;
|
||||
import com.google.common.collect.HashBiMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.willfp.eco.core.config.updating.ConfigUpdater;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeLight;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeSharp;
|
||||
import lombok.experimental.UtilityClass;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -20,6 +21,7 @@ public class Reforges {
|
||||
private static final BiMap<String, Reforge> BY_KEY = HashBiMap.create();
|
||||
|
||||
public static final Reforge SHARP = new ReforgeSharp();
|
||||
public static final Reforge LIGHT = new ReforgeLight();
|
||||
|
||||
/**
|
||||
* Get all registered {@link Reforge}s.
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
package com.willfp.reforges.reforges.reforges;
|
||||
|
||||
import com.willfp.reforges.reforges.Reforge;
|
||||
import com.willfp.reforges.reforges.Reforges;
|
||||
import com.willfp.reforges.reforges.meta.ReforgeTarget;
|
||||
import org.bukkit.attribute.Attribute;
|
||||
import org.bukkit.attribute.AttributeModifier;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class ReforgeLight extends Reforge {
|
||||
private AttributeModifier speedModifier;
|
||||
private AttributeModifier kbModifier;
|
||||
|
||||
public ReforgeLight() {
|
||||
super("light");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void postUpdate() {
|
||||
this.speedModifier = new AttributeModifier(
|
||||
UUID.nameUUIDFromBytes("light-speed".getBytes()),
|
||||
"light-speed",
|
||||
this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "speed-multiplier") - 1,
|
||||
AttributeModifier.Operation.MULTIPLY_SCALAR_1
|
||||
);
|
||||
this.kbModifier = new AttributeModifier(
|
||||
UUID.nameUUIDFromBytes("light-kb".getBytes()),
|
||||
"light-kb",
|
||||
this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "knockback-multiplier") - 1,
|
||||
AttributeModifier.Operation.MULTIPLY_SCALAR_1
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget getTarget() {
|
||||
return ReforgeTarget.MELEE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMeleeAttack(@NotNull final LivingEntity attacker,
|
||||
@NotNull final LivingEntity victim,
|
||||
@NotNull final EntityDamageByEntityEvent event) {
|
||||
event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "multiplier"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleApplication(@NotNull final ItemStack itemStack) {
|
||||
ItemMeta meta = itemStack.getItemMeta();
|
||||
assert meta != null;
|
||||
|
||||
meta.addAttributeModifier(Attribute.GENERIC_ATTACK_SPEED, speedModifier);
|
||||
meta.addAttributeModifier(Attribute.GENERIC_ATTACK_KNOCKBACK, kbModifier);
|
||||
itemStack.setItemMeta(meta);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleRemoval(@NotNull final ItemStack itemStack) {
|
||||
ItemMeta meta = itemStack.getItemMeta();
|
||||
assert meta != null;
|
||||
|
||||
meta.removeAttributeModifier(Attribute.GENERIC_ATTACK_SPEED, speedModifier);
|
||||
meta.removeAttributeModifier(Attribute.GENERIC_ATTACK_KNOCKBACK, kbModifier);
|
||||
itemStack.setItemMeta(meta);
|
||||
}
|
||||
}
|
||||
@@ -126,27 +126,25 @@ public class ReforgeUtils {
|
||||
*/
|
||||
public static void setReforge(@NotNull final ItemStack item,
|
||||
@NotNull final Reforge reforge) {
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
|
||||
if (meta == null) {
|
||||
if (item.getItemMeta() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
setReforge(meta, reforge);
|
||||
Reforge previous = getReforge(item);
|
||||
|
||||
item.setItemMeta(meta);
|
||||
}
|
||||
if (previous != null) {
|
||||
previous.handleRemoval(item);
|
||||
}
|
||||
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
|
||||
/**
|
||||
* 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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,9 +20,6 @@ public class EconomyHandler {
|
||||
* @return If was successful.
|
||||
*/
|
||||
public boolean init() {
|
||||
if (Bukkit.getServer().getPluginManager().getPlugin("Vault") == null) {
|
||||
return false;
|
||||
}
|
||||
RegisteredServiceProvider<Economy> rsp = Bukkit.getServer().getServicesManager().getRegistration(Economy.class);
|
||||
if (rsp == null) {
|
||||
return false;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
messages:
|
||||
prefix: "�ff00&lReforges&r &8» &r"
|
||||
prefix: "&3&lReforges&r &8» &r"
|
||||
no-permission: "&cYou don't have permission to do this!"
|
||||
not-player: "&cThis command must be run by a player"
|
||||
invalid-command: "&cUnknown subcommand!"
|
||||
|
||||
12
eco-core/core-plugin/src/main/resources/reforges/light.yml
Normal file
12
eco-core/core-plugin/src/main/resources/reforges/light.yml
Normal file
@@ -0,0 +1,12 @@
|
||||
#
|
||||
# Light Reforge
|
||||
#
|
||||
|
||||
name: "<gradient:#1c92d2>Light</gradient:#f2fcfe>"
|
||||
enabled: true
|
||||
description: "Deal &a5%&7&o less damage and knockback, but attack &a3%&7&o faster."
|
||||
|
||||
config:
|
||||
multiplier: 0.95 # Damage multiplier
|
||||
speed-multiplier: 1.03
|
||||
knockback-multiplier: 0.95
|
||||
Reference in New Issue
Block a user