9
0
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:
Auxilor
2021-08-12 17:02:08 +01:00
parent 59ecc1ef39
commit eb9af926ee
8 changed files with 114 additions and 22 deletions

View File

@@ -27,19 +27,21 @@ public class ReforgesPlugin extends EcoPlugin {
* Internal constructor called by bukkit on plugin load.
*/
public ReforgesPlugin() {
super(0, 12412, "&#00ff00");
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

View File

@@ -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) {

View File

@@ -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.

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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;

View File

@@ -1,5 +1,5 @@
messages:
prefix: "&#00ff00&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!"

View 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