mirror of
https://github.com/Auxilor/Reforges.git
synced 2025-12-24 17:39:32 +00:00
Began migrating to EcoArmor / EcoWeapons-like system
This commit is contained in:
@@ -6,8 +6,11 @@ import com.willfp.eco.core.display.DisplayModule;
|
||||
import com.willfp.eco.core.items.Items;
|
||||
import com.willfp.reforges.commands.CommandReforge;
|
||||
import com.willfp.reforges.commands.CommandReforges;
|
||||
import com.willfp.reforges.config.ReforgesJson;
|
||||
import com.willfp.reforges.config.TargetYml;
|
||||
import com.willfp.reforges.display.ReforgesDisplay;
|
||||
import com.willfp.reforges.reforges.Reforge;
|
||||
import com.willfp.reforges.effects.Effect;
|
||||
import com.willfp.reforges.effects.Effects;
|
||||
import com.willfp.reforges.reforges.Reforges;
|
||||
import com.willfp.reforges.reforges.util.ReforgeArgParser;
|
||||
import com.willfp.reforges.reforges.util.WatcherTriggers;
|
||||
@@ -29,11 +32,25 @@ public class ReforgesPlugin extends EcoPlugin {
|
||||
@Getter
|
||||
private static ReforgesPlugin instance;
|
||||
|
||||
/**
|
||||
* target.yml.
|
||||
*/
|
||||
@Getter
|
||||
private final TargetYml targetYml;
|
||||
|
||||
/**
|
||||
* reforges.json.
|
||||
*/
|
||||
@Getter
|
||||
private final ReforgesJson reforgesJson;
|
||||
|
||||
/**
|
||||
* Internal constructor called by bukkit on plugin load.
|
||||
*/
|
||||
public ReforgesPlugin() {
|
||||
super(1330, 12412, "&3", true);
|
||||
this.targetYml = new TargetYml(this);
|
||||
this.reforgesJson = new ReforgesJson(this);
|
||||
instance = this;
|
||||
}
|
||||
|
||||
@@ -54,13 +71,11 @@ public class ReforgesPlugin extends EcoPlugin {
|
||||
|
||||
@Override
|
||||
protected void handleReload() {
|
||||
for (Reforge reforge : Reforges.values()) {
|
||||
HandlerList.unregisterAll(reforge);
|
||||
this.getScheduler().runLater(() -> {
|
||||
if (reforge.isEnabled()) {
|
||||
this.getEventManager().registerListener(reforge);
|
||||
}
|
||||
}, 1);
|
||||
for (Effect effect : Effects.values()) {
|
||||
HandlerList.unregisterAll(effect);
|
||||
this.getScheduler().run(() -> {
|
||||
this.getEventManager().registerListener(effect);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ public class CommandGive extends Subcommand {
|
||||
STONE_NAMES.clear();
|
||||
STONE_NAMES.addAll(Reforges.values().stream().filter(Reforge::isEnabled)
|
||||
.filter(Reforge::isRequiresStone)
|
||||
.map(Reforge::getKey)
|
||||
.map(Reforge::getId)
|
||||
.collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
package com.willfp.reforges.config;
|
||||
|
||||
import com.willfp.eco.core.EcoPlugin;
|
||||
import com.willfp.eco.core.config.yaml.YamlExtendableConfig;
|
||||
import lombok.Getter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeConfig extends YamlExtendableConfig {
|
||||
/**
|
||||
* The name of the config.
|
||||
*/
|
||||
@Getter
|
||||
private final String name;
|
||||
|
||||
/**
|
||||
* Instantiate a new config for a reforge.
|
||||
*
|
||||
* @param name The name of the config.
|
||||
* @param source The provider of the reforge.
|
||||
* @param plugin Instance of reforges.
|
||||
*/
|
||||
public ReforgeConfig(@NotNull final String name,
|
||||
@NotNull final Class<?> source,
|
||||
@NotNull final EcoPlugin plugin) {
|
||||
super(name, true, plugin, source, "reforges/");
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.willfp.reforges.config;
|
||||
|
||||
import com.willfp.eco.core.EcoPlugin;
|
||||
import com.willfp.eco.core.config.json.JSONBaseConfig;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgesJson extends JSONBaseConfig {
|
||||
/**
|
||||
* Instantiate reforges.json.
|
||||
*
|
||||
* @param plugin Instance of reforges.
|
||||
*/
|
||||
public ReforgesJson(@NotNull final EcoPlugin plugin) {
|
||||
super("reforges", true, plugin);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.willfp.reforges.config;
|
||||
|
||||
import com.willfp.eco.core.EcoPlugin;
|
||||
import com.willfp.eco.core.config.yaml.YamlBaseConfig;
|
||||
import com.willfp.eco.core.items.Items;
|
||||
import com.willfp.eco.core.items.TestableItem;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class TargetYml extends YamlBaseConfig {
|
||||
/**
|
||||
* Instantiate target.yml.
|
||||
*
|
||||
* @param plugin Instance of EcoEnchants.
|
||||
*/
|
||||
public TargetYml(@NotNull final EcoPlugin plugin) {
|
||||
super("target", false, plugin);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all target names.
|
||||
*
|
||||
* @return Set of all names.
|
||||
*/
|
||||
public List<String> getTargets() {
|
||||
return this.getKeys(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all materials from a target name.
|
||||
*
|
||||
* @param target The name of the target.
|
||||
* @return All materials.
|
||||
*/
|
||||
public Set<TestableItem> getTargetItems(@NotNull final String target) {
|
||||
Set<TestableItem> items = new HashSet<>();
|
||||
this.getStrings(target, false).forEach(s -> items.add(Items.lookup(s.toUpperCase())));
|
||||
return items;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.willfp.reforges.effects;
|
||||
|
||||
import com.willfp.eco.core.config.interfaces.JSONConfig;
|
||||
import com.willfp.reforges.ReforgesPlugin;
|
||||
import com.willfp.reforges.reforges.util.Watcher;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public abstract class Effect implements Listener, Watcher {
|
||||
/**
|
||||
* Instance of Reforges.
|
||||
*/
|
||||
@Getter(AccessLevel.PROTECTED)
|
||||
private final ReforgesPlugin plugin = ReforgesPlugin.getInstance();
|
||||
|
||||
/**
|
||||
* The name of the effect.
|
||||
*/
|
||||
@Getter
|
||||
private final String name;
|
||||
|
||||
/**
|
||||
* Create a new effect.
|
||||
*
|
||||
* @param name The effect name.
|
||||
*/
|
||||
protected Effect(@NotNull final String name) {
|
||||
this.name = name;
|
||||
|
||||
Effects.addNewEffect(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle reforge application.
|
||||
*
|
||||
* @param meta The meta.
|
||||
* @param config The config.
|
||||
*/
|
||||
public void handleApplication(@NotNull final ItemMeta meta,
|
||||
@NotNull final JSONConfig config) {
|
||||
// Override when needed
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle reforge removal.
|
||||
*
|
||||
* @param meta The meta.
|
||||
*/
|
||||
public void handleRemoval(@NotNull final ItemMeta meta) {
|
||||
// Override when needed
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.willfp.reforges.effects;
|
||||
|
||||
import com.google.common.collect.BiMap;
|
||||
import com.google.common.collect.HashBiMap;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.willfp.reforges.effects.effects.EffectCritMultiplier;
|
||||
import com.willfp.reforges.effects.effects.EffectDamageMultiplier;
|
||||
import lombok.experimental.UtilityClass;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@UtilityClass
|
||||
@SuppressWarnings("unused")
|
||||
public class Effects {
|
||||
/**
|
||||
* All registered effects.
|
||||
*/
|
||||
private static final BiMap<String, Effect> BY_NAME = HashBiMap.create();
|
||||
|
||||
public static final Effect DAMAGE_MULTIPLIER = new EffectDamageMultiplier();
|
||||
public static final Effect CRIT_MULTIPLIER = new EffectCritMultiplier();
|
||||
|
||||
/**
|
||||
* Get effect matching name.
|
||||
*
|
||||
* @param name The name to query.
|
||||
* @return The matching effect, or null if not found.
|
||||
*/
|
||||
@Nullable
|
||||
public static Effect getByName(@NotNull final String name) {
|
||||
return BY_NAME.get(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* List of all registered effects.
|
||||
*
|
||||
* @return The effects.
|
||||
*/
|
||||
public static List<Effect> values() {
|
||||
return ImmutableList.copyOf(BY_NAME.values());
|
||||
}
|
||||
|
||||
/**
|
||||
* Add new effect to EcoWeapons.
|
||||
*
|
||||
* @param effect The effect to add.
|
||||
*/
|
||||
public static void addNewEffect(@NotNull final Effect effect) {
|
||||
BY_NAME.remove(effect.getName());
|
||||
BY_NAME.put(effect.getName(), effect);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.willfp.reforges.effects.effects;
|
||||
|
||||
import com.willfp.eco.core.config.interfaces.JSONConfig;
|
||||
import com.willfp.reforges.effects.Effect;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class EffectCritMultiplier extends Effect {
|
||||
/**
|
||||
* Create a new effect.
|
||||
*/
|
||||
public EffectCritMultiplier() {
|
||||
super("crit_multiplier");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMeleeAttack(@NotNull final LivingEntity attacker,
|
||||
@NotNull final LivingEntity victim,
|
||||
@NotNull final EntityDamageByEntityEvent event,
|
||||
@NotNull final JSONConfig config) {
|
||||
if (attacker.getVelocity().getY() > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
event.setDamage(event.getDamage() * config.getDouble("multiplier"));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.willfp.reforges.effects.effects;
|
||||
|
||||
import com.willfp.eco.core.config.interfaces.JSONConfig;
|
||||
import com.willfp.reforges.effects.Effect;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class EffectDamageMultiplier extends Effect {
|
||||
/**
|
||||
* Create a new effect.
|
||||
*/
|
||||
public EffectDamageMultiplier() {
|
||||
super("damage_multiplier");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMeleeAttack(@NotNull final LivingEntity attacker,
|
||||
@NotNull final LivingEntity victim,
|
||||
@NotNull final EntityDamageByEntityEvent event,
|
||||
@NotNull final JSONConfig config) {
|
||||
event.setDamage(event.getDamage() * config.getDouble("multiplier"));
|
||||
}
|
||||
}
|
||||
@@ -1,28 +1,31 @@
|
||||
package com.willfp.reforges.reforges;
|
||||
|
||||
import com.willfp.eco.core.EcoPlugin;
|
||||
import com.willfp.eco.core.Prerequisite;
|
||||
import com.willfp.eco.core.config.interfaces.JSONConfig;
|
||||
import com.willfp.eco.core.display.Display;
|
||||
import com.willfp.eco.core.items.CustomItem;
|
||||
import com.willfp.eco.core.items.builder.SkullBuilder;
|
||||
import com.willfp.eco.core.recipe.Recipes;
|
||||
import com.willfp.reforges.ReforgesPlugin;
|
||||
import com.willfp.reforges.config.ReforgeConfig;
|
||||
import com.willfp.reforges.effects.Effect;
|
||||
import com.willfp.reforges.effects.Effects;
|
||||
import com.willfp.reforges.reforges.meta.ReforgeTarget;
|
||||
import com.willfp.reforges.reforges.util.ReforgeUtils;
|
||||
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.bukkit.inventory.meta.ItemMeta;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
import java.util.Set;
|
||||
|
||||
public abstract class Reforge implements Listener, Watcher {
|
||||
public class Reforge {
|
||||
/**
|
||||
* Instance of Reforges for reforges to be able to access.
|
||||
*/
|
||||
@@ -33,43 +36,31 @@ public abstract class Reforge implements Listener, Watcher {
|
||||
* The key to store reforges in meta.
|
||||
*/
|
||||
@Getter
|
||||
private final String key;
|
||||
|
||||
/**
|
||||
* The UUID used in attribute modifiers.
|
||||
*/
|
||||
@Getter
|
||||
private final UUID uuid;
|
||||
|
||||
/**
|
||||
* The alternative UUID used in attribute modifiers.
|
||||
*/
|
||||
@Getter
|
||||
private final UUID altUuid;
|
||||
private final String id;
|
||||
|
||||
/**
|
||||
* The reforges config.
|
||||
*/
|
||||
@Getter
|
||||
private final ReforgeConfig config;
|
||||
private final JSONConfig config;
|
||||
|
||||
/**
|
||||
* If the reforge is enabled.
|
||||
* The effects.
|
||||
*/
|
||||
@Getter
|
||||
private boolean enabled;
|
||||
private final Map<Effect, JSONConfig> effects;
|
||||
|
||||
/**
|
||||
* The display name.
|
||||
*/
|
||||
@Getter
|
||||
private String name;
|
||||
private final String name;
|
||||
|
||||
/**
|
||||
* The display name.
|
||||
*/
|
||||
@Getter
|
||||
private String description;
|
||||
private final String description;
|
||||
|
||||
/**
|
||||
* If a reforge stone is required.
|
||||
@@ -84,36 +75,44 @@ public abstract class Reforge implements Listener, Watcher {
|
||||
private ItemStack stone;
|
||||
|
||||
/**
|
||||
* Create a new Reforge.
|
||||
*
|
||||
* @param key The key name of the reforge..
|
||||
* @param prerequisites Optional {@link Prerequisite}s that must be met.
|
||||
* The reforge target.
|
||||
*/
|
||||
protected Reforge(@NotNull final String key,
|
||||
@NotNull final Prerequisite... prerequisites) {
|
||||
this.key = key;
|
||||
this.config = new ReforgeConfig(this.getKey(), this.getClass(), this.plugin);
|
||||
this.uuid = UUID.nameUUIDFromBytes(key.getBytes());
|
||||
this.altUuid = UUID.nameUUIDFromBytes((key + "2").getBytes());
|
||||
|
||||
if (!Prerequisite.areMet(prerequisites)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Reforges.addNewReforge(this);
|
||||
this.update();
|
||||
}
|
||||
@Getter
|
||||
private final Set<ReforgeTarget> targets;
|
||||
|
||||
/**
|
||||
* Update the reforge based off config values.
|
||||
* This can be overridden but may lead to unexpected behavior.
|
||||
* Create a new Reforge.
|
||||
*
|
||||
* @param config The config.
|
||||
* @param plugin Instance of reforges.
|
||||
*/
|
||||
public void update() {
|
||||
enabled = config.getBool("enabled");
|
||||
name = config.getString("name");
|
||||
description = config.getString("description");
|
||||
protected Reforge(@NotNull final JSONConfig config,
|
||||
@NotNull final ReforgesPlugin plugin) {
|
||||
this.config = config;
|
||||
this.id = config.getString("id");
|
||||
|
||||
requiresStone = config.getBool("stone-config.requires-stone");
|
||||
this.name = config.getString("name");
|
||||
this.description = config.getString("description");
|
||||
|
||||
this.targets = new HashSet<>();
|
||||
for (String targetName : config.getStrings("targets")) {
|
||||
this.targets.add(ReforgeTarget.getByName(targetName));
|
||||
}
|
||||
|
||||
this.effects = new HashMap<>();
|
||||
for (JSONConfig effectConfig : config.getSubsections("effects")) {
|
||||
Effect effect = Effects.getByName(effectConfig.getString("id"));
|
||||
if (effect != null) {
|
||||
effects.put(effect, effectConfig);
|
||||
}
|
||||
}
|
||||
|
||||
handleStone(config.getSubsection("stone"), plugin);
|
||||
}
|
||||
|
||||
private void handleStone(@NotNull final JSONConfig config,
|
||||
@NotNull final ReforgesPlugin plugin) {
|
||||
this.requiresStone = config.getBool("enabled");
|
||||
|
||||
if (requiresStone) {
|
||||
List<String> stoneLore = new ArrayList<>();
|
||||
@@ -121,8 +120,8 @@ public abstract class Reforge implements Listener, Watcher {
|
||||
stoneLore.add(Display.PREFIX + string.replace("%reforge%", this.getName()));
|
||||
}
|
||||
stone = new SkullBuilder()
|
||||
.setSkullTexture(config.getString("stone-config.texture"))
|
||||
.setDisplayName(this.getPlugin().getConfigYml().getString("reforge.stone.name").replace("%reforge%", this.getName()))
|
||||
.setSkullTexture(config.getString("texture"))
|
||||
.setDisplayName(this.getPlugin().getConfigYml().getString("stone.name").replace("%reforge%", this.getName()))
|
||||
.addLoreLines(stoneLore)
|
||||
.build();
|
||||
} else {
|
||||
@@ -132,36 +131,31 @@ public abstract class Reforge implements Listener, Watcher {
|
||||
|
||||
ReforgeUtils.setReforgeStone(stone, this);
|
||||
|
||||
if (config.getBool("stone-config.craftable")) {
|
||||
new CustomItem(
|
||||
plugin.getNamespacedKeyFactory().create("stone_" + this.getId()),
|
||||
test -> Objects.equals(ReforgeUtils.getReforgeStone(test), this),
|
||||
stone
|
||||
).register();
|
||||
|
||||
if (config.getBool("craftable")) {
|
||||
Recipes.createAndRegisterRecipe(
|
||||
plugin,
|
||||
"stone_" + this.getKey(),
|
||||
"stone_" + this.getId(),
|
||||
stone,
|
||||
config.getStrings("stone-config.recipe", false)
|
||||
config.getStrings("recipe", false)
|
||||
);
|
||||
}
|
||||
|
||||
if (!this.isEnabled()) {
|
||||
Reforges.removeReforge(this);
|
||||
}
|
||||
|
||||
postUpdate();
|
||||
}
|
||||
|
||||
protected void postUpdate() {
|
||||
// Unused as some talismans may have postUpdate tasks, however most won't.
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the reforge target.
|
||||
*/
|
||||
public abstract ReforgeTarget[] getTarget();
|
||||
|
||||
public final void handleApplication(@NotNull final ItemStack itemStack) {
|
||||
itemStack.setItemMeta(this.handleApplication(Objects.requireNonNull(itemStack.getItemMeta())));
|
||||
}
|
||||
|
||||
public ItemMeta handleApplication(@NotNull final ItemMeta meta) {
|
||||
public final ItemMeta handleApplication(@NotNull final ItemMeta meta) {
|
||||
for (Map.Entry<Effect, JSONConfig> entry : this.getEffects().entrySet()) {
|
||||
entry.getKey().handleApplication(meta, entry.getValue());
|
||||
}
|
||||
|
||||
// Override when needed
|
||||
return meta;
|
||||
}
|
||||
@@ -170,8 +164,11 @@ public abstract class Reforge implements Listener, Watcher {
|
||||
itemStack.setItemMeta(this.handleRemoval(Objects.requireNonNull(itemStack.getItemMeta())));
|
||||
}
|
||||
|
||||
public ItemMeta handleRemoval(@NotNull final ItemMeta meta) {
|
||||
// Override when needed
|
||||
public final ItemMeta handleRemoval(@NotNull final ItemMeta meta) {
|
||||
for (Map.Entry<Effect, JSONConfig> entry : this.getEffects().entrySet()) {
|
||||
entry.getKey().handleApplication(meta, entry.getValue());
|
||||
}
|
||||
|
||||
return meta;
|
||||
}
|
||||
|
||||
@@ -186,18 +183,18 @@ public abstract class Reforge implements Listener, Watcher {
|
||||
return false;
|
||||
}
|
||||
|
||||
return this.getKey().equals(reforge.getKey());
|
||||
return this.getId().equals(reforge.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(this.getKey());
|
||||
return Objects.hash(this.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Reforge{"
|
||||
+ this.getKey()
|
||||
+ this.getId()
|
||||
+ "}";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,68 +3,20 @@ package com.willfp.reforges.reforges;
|
||||
import com.google.common.collect.BiMap;
|
||||
import com.google.common.collect.HashBiMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.willfp.eco.core.config.interfaces.JSONConfig;
|
||||
import com.willfp.eco.core.config.updating.ConfigUpdater;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeAcute;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeAerobic;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeAffluent;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeDurable;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeDynamic;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeEvasive;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeGravitated;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeImmediate;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeLight;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeLucky;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeNautical;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgePointy;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeProspecting;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeReinforced;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeRich;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeSharp;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeStreamlined;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeStrong;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeThin;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeTough;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeVersatile;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeWealthy;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeWise;
|
||||
import com.willfp.reforges.ReforgesPlugin;
|
||||
import lombok.experimental.UtilityClass;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@UtilityClass
|
||||
@SuppressWarnings({"unused", "checkstyle:JavadocVariable"})
|
||||
public class Reforges {
|
||||
public static final String CONFIG_LOCATION = "config.";
|
||||
|
||||
private static final BiMap<String, Reforge> BY_KEY = HashBiMap.create();
|
||||
|
||||
public static final Reforge SHARP = new ReforgeSharp();
|
||||
public static final Reforge LIGHT = new ReforgeLight();
|
||||
public static final Reforge WISE = new ReforgeWise();
|
||||
public static final Reforge DYNAMIC = new ReforgeDynamic();
|
||||
public static final Reforge GRAVITATED = new ReforgeGravitated();
|
||||
public static final Reforge STRONG = new ReforgeStrong();
|
||||
public static final Reforge WEALTHY = new ReforgeWealthy();
|
||||
public static final Reforge RICH = new ReforgeRich();
|
||||
public static final Reforge LUCKY = new ReforgeLucky();
|
||||
public static final Reforge AEROBIC = new ReforgeAerobic();
|
||||
public static final Reforge STREAMLINED = new ReforgeStreamlined();
|
||||
public static final Reforge THIN = new ReforgeThin();
|
||||
public static final Reforge TOUGH = new ReforgeTough();
|
||||
public static final Reforge REINFORCED = new ReforgeReinforced();
|
||||
public static final Reforge EVASIVE = new ReforgeEvasive();
|
||||
public static final Reforge NAUTICAL = new ReforgeNautical();
|
||||
public static final Reforge POINTY = new ReforgePointy();
|
||||
public static final Reforge VERSATILE = new ReforgeVersatile();
|
||||
public static final Reforge AFFLUENT = new ReforgeAffluent();
|
||||
public static final Reforge DURABLE = new ReforgeDurable();
|
||||
public static final Reforge IMMEDIATE = new ReforgeImmediate();
|
||||
public static final Reforge PROSPECTING = new ReforgeProspecting();
|
||||
public static final Reforge ACUTE = new ReforgeAcute();
|
||||
|
||||
/**
|
||||
* Get all registered {@link Reforge}s.
|
||||
*
|
||||
@@ -98,11 +50,17 @@ public class Reforges {
|
||||
|
||||
/**
|
||||
* Update all {@link Reforge}s.
|
||||
*
|
||||
* @param plugin Instance of Reforges.
|
||||
*/
|
||||
@ConfigUpdater
|
||||
public static void update() {
|
||||
for (Reforge reforge : new HashSet<>(values())) {
|
||||
reforge.update();
|
||||
public static void update(@NotNull final ReforgesPlugin plugin) {
|
||||
for (Reforge reforge : values()) {
|
||||
removeReforge(reforge);
|
||||
}
|
||||
|
||||
for (JSONConfig config : plugin.getReforgesJson().getSubsections("reforges")) {
|
||||
addNewReforge(new Reforge(config, plugin));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,8 +72,8 @@ public class Reforges {
|
||||
* @param reforge The {@link Reforge} to add.
|
||||
*/
|
||||
public static void addNewReforge(@NotNull final Reforge reforge) {
|
||||
BY_KEY.remove(reforge.getKey());
|
||||
BY_KEY.put(reforge.getKey(), reforge);
|
||||
BY_KEY.remove(reforge.getId());
|
||||
BY_KEY.put(reforge.getId(), reforge);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -124,6 +82,6 @@ public class Reforges {
|
||||
* @param reforge The {@link Reforge} to remove.
|
||||
*/
|
||||
public static void removeReforge(@NotNull final Reforge reforge) {
|
||||
BY_KEY.remove(reforge.getKey());
|
||||
BY_KEY.remove(reforge.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,20 +2,20 @@ package com.willfp.reforges.reforges.meta;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.willfp.eco.core.config.updating.ConfigUpdater;
|
||||
import com.willfp.eco.core.items.Items;
|
||||
import com.willfp.eco.core.items.TestableItem;
|
||||
import com.willfp.eco.core.recipe.parts.EmptyTestableItem;
|
||||
import com.willfp.reforges.ReforgesPlugin;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ReforgeTarget {
|
||||
/**
|
||||
@@ -23,49 +23,13 @@ public class ReforgeTarget {
|
||||
*/
|
||||
public static final ReforgeTarget ALL = new ReforgeTarget("all", new HashSet<>());
|
||||
|
||||
/**
|
||||
* Melee weapons.
|
||||
*/
|
||||
public static final ReforgeTarget MELEE = new ReforgeTarget("melee");
|
||||
|
||||
/**
|
||||
* Armor.
|
||||
*/
|
||||
public static final ReforgeTarget ARMOR = new ReforgeTarget("armor");
|
||||
|
||||
/**
|
||||
* Trident.
|
||||
*/
|
||||
public static final ReforgeTarget TRIDENT = new ReforgeTarget("trident");
|
||||
|
||||
/**
|
||||
* Bows.
|
||||
*/
|
||||
public static final ReforgeTarget BOW = new ReforgeTarget("bow");
|
||||
|
||||
/**
|
||||
* Pickaxes.
|
||||
*/
|
||||
public static final ReforgeTarget PICKAXE = new ReforgeTarget("pickaxe");
|
||||
|
||||
/**
|
||||
* Axes.
|
||||
*/
|
||||
public static final ReforgeTarget AXE = new ReforgeTarget("axe");
|
||||
|
||||
/**
|
||||
* All registered targets.
|
||||
*/
|
||||
private static final Set<ReforgeTarget> REGISTERED = new HashSet<>();
|
||||
private static final Map<String, ReforgeTarget> REGISTERED = new HashMap<>();
|
||||
|
||||
static {
|
||||
REGISTERED.add(ALL);
|
||||
REGISTERED.add(MELEE);
|
||||
REGISTERED.add(ARMOR);
|
||||
REGISTERED.add(TRIDENT);
|
||||
REGISTERED.add(BOW);
|
||||
REGISTERED.add(PICKAXE);
|
||||
REGISTERED.add(AXE);
|
||||
REGISTERED.put("all", ALL);
|
||||
update(ReforgesPlugin.getInstance());
|
||||
}
|
||||
|
||||
@@ -96,23 +60,16 @@ public class ReforgeTarget {
|
||||
/**
|
||||
* Create new target.
|
||||
*
|
||||
* @param name The name of the target.
|
||||
* @param name The name of the target.
|
||||
* @param plugin Instance of reforges.
|
||||
*/
|
||||
public ReforgeTarget(@NotNull final String name) {
|
||||
public ReforgeTarget(@NotNull final String name,
|
||||
@NotNull final ReforgesPlugin plugin) {
|
||||
this.name = name;
|
||||
this.items = new HashSet<>();
|
||||
|
||||
update();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the configs.
|
||||
*/
|
||||
public void update() {
|
||||
this.items.clear();
|
||||
this.items.addAll(ReforgesPlugin.getInstance().getConfigYml().getStrings("targets." + name, false).stream()
|
||||
.map(Items::lookup)
|
||||
.collect(Collectors.toSet()));
|
||||
this.items.addAll(plugin.getTargetYml().getTargetItems(name));
|
||||
items.removeIf(item -> item instanceof EmptyTestableItem);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -122,8 +79,7 @@ public class ReforgeTarget {
|
||||
* @return The matching ReforgeTarget, or null if not found.
|
||||
*/
|
||||
public static ReforgeTarget getByName(@NotNull final String name) {
|
||||
Optional<ReforgeTarget> matching = REGISTERED.stream().filter(rarity -> rarity.getName().equalsIgnoreCase(name)).findFirst();
|
||||
return matching.orElse(null);
|
||||
return REGISTERED.get(name);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -134,7 +90,7 @@ public class ReforgeTarget {
|
||||
*/
|
||||
@Nullable
|
||||
public static ReforgeTarget getForItem(@NotNull final ItemStack item) {
|
||||
Optional<ReforgeTarget> matching = REGISTERED.stream()
|
||||
Optional<ReforgeTarget> matching = REGISTERED.values().stream()
|
||||
.filter(rarity -> !rarity.getName().equalsIgnoreCase("all"))
|
||||
.filter(rarity -> rarity.getItems().stream().anyMatch(testableItem -> testableItem.matches(item))).findFirst();
|
||||
return matching.orElse(null);
|
||||
@@ -148,13 +104,18 @@ public class ReforgeTarget {
|
||||
@ConfigUpdater
|
||||
public static void update(@NotNull final ReforgesPlugin plugin) {
|
||||
ALL.items.clear();
|
||||
for (ReforgeTarget reforgeTarget : REGISTERED) {
|
||||
if (reforgeTarget.name.equals("all")) {
|
||||
for (String id : new ArrayList<>(REGISTERED.keySet())) {
|
||||
if (id.equalsIgnoreCase("all")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
reforgeTarget.update();
|
||||
ALL.items.addAll(reforgeTarget.items);
|
||||
REGISTERED.remove(id);
|
||||
}
|
||||
|
||||
for (String id : plugin.getTargetYml().getTargets()) {
|
||||
ReforgeTarget target = new ReforgeTarget(id, plugin.getTargetYml().getTargetItems(id));
|
||||
REGISTERED.put(id, target);
|
||||
ALL.items.addAll(target.items);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,6 +125,6 @@ public class ReforgeTarget {
|
||||
* @return A set of all targets.
|
||||
*/
|
||||
public static Set<ReforgeTarget> values() {
|
||||
return ImmutableSet.copyOf(REGISTERED);
|
||||
return ImmutableSet.copyOf(REGISTERED.values());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
package com.willfp.reforges.reforges.reforges;
|
||||
|
||||
import com.willfp.eco.util.NumberUtils;
|
||||
import com.willfp.reforges.reforges.Reforge;
|
||||
import com.willfp.reforges.reforges.Reforges;
|
||||
import com.willfp.reforges.reforges.meta.ReforgeTarget;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeAcute extends Reforge {
|
||||
public ReforgeAcute() {
|
||||
super("acute");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{ReforgeTarget.AXE};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMeleeAttack(@NotNull final LivingEntity attacker,
|
||||
@NotNull final LivingEntity victim,
|
||||
@NotNull final EntityDamageByEntityEvent event) {
|
||||
if (NumberUtils.randFloat(0, 100) < this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "chance")) {
|
||||
event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "multiplier"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
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.entity.Arrow;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeAerobic extends Reforge {
|
||||
public ReforgeAerobic() {
|
||||
super("aerobic");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{ReforgeTarget.BOW};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onArrowDamage(@NotNull final LivingEntity attacker,
|
||||
@NotNull final LivingEntity victim,
|
||||
@NotNull final Arrow arrow,
|
||||
@NotNull final EntityDamageByEntityEvent event) {
|
||||
if (!attacker.isOnGround()) {
|
||||
event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "multiplier"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
package com.willfp.reforges.reforges.reforges;
|
||||
|
||||
import com.willfp.eco.core.events.EntityDeathByEntityEvent;
|
||||
import com.willfp.reforges.reforges.Reforge;
|
||||
import com.willfp.reforges.reforges.Reforges;
|
||||
import com.willfp.reforges.reforges.meta.ReforgeTarget;
|
||||
import com.willfp.reforges.reforges.util.ReforgeUtils;
|
||||
import com.willfp.reforges.vault.EconomyHandler;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Trident;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeAffluent extends Reforge {
|
||||
public ReforgeAffluent() {
|
||||
super("affluent");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{ReforgeTarget.TRIDENT};
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onKill(@NotNull final EntityDeathByEntityEvent event) {
|
||||
if (!(event.getKiller() instanceof Trident trident)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(trident.getShooter() instanceof Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Reforge reforge = ReforgeUtils.getReforge(trident.getItem());
|
||||
|
||||
if (reforge == null || !reforge.equals(this)) {
|
||||
return;
|
||||
}
|
||||
|
||||
EconomyHandler.getInstance().depositPlayer(player, this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "money"));
|
||||
}
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
package com.willfp.reforges.reforges.reforges;
|
||||
|
||||
import com.willfp.eco.core.events.EntityDeathByEntityEvent;
|
||||
import com.willfp.eco.util.NumberUtils;
|
||||
import com.willfp.reforges.reforges.Reforge;
|
||||
import com.willfp.reforges.reforges.Reforges;
|
||||
import com.willfp.reforges.reforges.meta.ReforgeTarget;
|
||||
import com.willfp.reforges.reforges.util.ReforgeUtils;
|
||||
import com.willfp.reforges.vault.EconomyHandler;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Trident;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.player.PlayerItemDamageEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeDurable extends Reforge {
|
||||
public ReforgeDurable() {
|
||||
super("durable");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{
|
||||
ReforgeTarget.TRIDENT,
|
||||
ReforgeTarget.ARMOR,
|
||||
ReforgeTarget.BOW,
|
||||
ReforgeTarget.MELEE,
|
||||
ReforgeTarget.PICKAXE
|
||||
};
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void handle(@NotNull final PlayerItemDamageEvent event) {
|
||||
Reforge reforge = ReforgeUtils.getReforge(event.getItem());
|
||||
|
||||
if (reforge == null || !reforge.equals(this)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (NumberUtils.randFloat(0, 100) < this.getConfig().getDouble("percent-less-damage")) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
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.entity.LivingEntity;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeDynamic extends Reforge {
|
||||
public ReforgeDynamic() {
|
||||
super("dynamic");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{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"));
|
||||
|
||||
if (attacker.getVelocity().getY() < 0) {
|
||||
event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "crit-multiplier"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
package com.willfp.reforges.reforges.reforges;
|
||||
|
||||
import com.willfp.eco.util.NumberUtils;
|
||||
import com.willfp.reforges.reforges.Reforge;
|
||||
import com.willfp.reforges.reforges.Reforges;
|
||||
import com.willfp.reforges.reforges.meta.ReforgeTarget;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeEvasive extends Reforge {
|
||||
public ReforgeEvasive() {
|
||||
super("evasive");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{ReforgeTarget.ARMOR};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDamageWearingArmor(@NotNull final LivingEntity victim,
|
||||
@NotNull final EntityDamageEvent event) {
|
||||
if (NumberUtils.randFloat(0, 100) < this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "chance")) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
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.entity.LivingEntity;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeGravitated extends Reforge {
|
||||
public ReforgeGravitated() {
|
||||
super("gravitated");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{ReforgeTarget.MELEE};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMeleeAttack(@NotNull final LivingEntity attacker,
|
||||
@NotNull final LivingEntity victim,
|
||||
@NotNull final EntityDamageByEntityEvent event) {
|
||||
if (attacker.getVelocity().getY() < 0) {
|
||||
event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "crit-multiplier"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
package com.willfp.reforges.reforges.reforges;
|
||||
|
||||
import com.willfp.eco.core.integrations.anticheat.AnticheatManager;
|
||||
import com.willfp.eco.util.NumberUtils;
|
||||
import com.willfp.reforges.reforges.Reforge;
|
||||
import com.willfp.reforges.reforges.meta.ReforgeTarget;
|
||||
import com.willfp.reforges.reforges.util.ReforgeUtils;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.block.BlockDamageEvent;
|
||||
import org.bukkit.event.player.PlayerItemDamageEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeImmediate extends Reforge {
|
||||
public ReforgeImmediate() {
|
||||
super("immediate");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{
|
||||
ReforgeTarget.PICKAXE
|
||||
};
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void handle(@NotNull final BlockDamageEvent event) {
|
||||
Reforge reforge = ReforgeUtils.getReforge(event.getItemInHand());
|
||||
|
||||
if (reforge == null || !reforge.equals(this)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Block block = event.getBlock();
|
||||
|
||||
if (block.getDrops(event.getItemInHand()).isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (block.getType().getHardness() > 100) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (block.getType() == Material.BEDROCK) {
|
||||
return;
|
||||
}
|
||||
|
||||
AnticheatManager.exemptPlayer(event.getPlayer());
|
||||
|
||||
if (NumberUtils.randFloat(0, 100) < this.getConfig().getDouble("chance")) {
|
||||
event.setInstaBreak(true);
|
||||
}
|
||||
|
||||
AnticheatManager.unexemptPlayer(event.getPlayer());
|
||||
}
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
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.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeLight extends Reforge {
|
||||
public ReforgeLight() {
|
||||
super("light");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{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 ItemMeta handleApplication(@NotNull final ItemMeta meta) {
|
||||
meta.addAttributeModifier(Attribute.GENERIC_ATTACK_SPEED, new AttributeModifier(
|
||||
this.getUuid(),
|
||||
"light-speed",
|
||||
(this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "speed-multiplier") - 1),
|
||||
AttributeModifier.Operation.MULTIPLY_SCALAR_1
|
||||
));
|
||||
meta.addAttributeModifier(Attribute.GENERIC_ATTACK_KNOCKBACK, new AttributeModifier(
|
||||
this.getAltUuid(),
|
||||
"light-kb",
|
||||
this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "knockback-multiplier") - 1,
|
||||
AttributeModifier.Operation.MULTIPLY_SCALAR_1
|
||||
));
|
||||
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
|
||||
return meta;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemMeta handleRemoval(@NotNull final ItemMeta meta) {
|
||||
meta.removeAttributeModifier(Attribute.GENERIC_ATTACK_SPEED);
|
||||
meta.removeAttributeModifier(Attribute.GENERIC_ATTACK_KNOCKBACK);
|
||||
return meta;
|
||||
}
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
package com.willfp.reforges.reforges.reforges;
|
||||
|
||||
import com.willfp.eco.util.NumberUtils;
|
||||
import com.willfp.reforges.reforges.Reforge;
|
||||
import com.willfp.reforges.reforges.Reforges;
|
||||
import com.willfp.reforges.reforges.meta.ReforgeTarget;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeLucky extends Reforge {
|
||||
public ReforgeLucky() {
|
||||
super("lucky");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{ReforgeTarget.BOW};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onArrowDamage(@NotNull final LivingEntity attacker,
|
||||
@NotNull final LivingEntity victim,
|
||||
@NotNull final Arrow arrow,
|
||||
@NotNull final EntityDamageByEntityEvent event) {
|
||||
if (NumberUtils.randFloat(0, 100) < this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "chance")) {
|
||||
event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "multiplier"));
|
||||
} else {
|
||||
event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "bad-multiplier"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
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.entity.LivingEntity;
|
||||
import org.bukkit.entity.Trident;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeNautical extends Reforge {
|
||||
public ReforgeNautical() {
|
||||
super("nautical");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{ReforgeTarget.TRIDENT};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTridentDamage(@NotNull final LivingEntity attacker,
|
||||
@NotNull final LivingEntity victim,
|
||||
@NotNull final Trident trident,
|
||||
@NotNull final EntityDamageByEntityEvent event) {
|
||||
if (attacker.isInWater()) {
|
||||
event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "multiplier"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
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.entity.LivingEntity;
|
||||
import org.bukkit.entity.Trident;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgePointy extends Reforge {
|
||||
public ReforgePointy() {
|
||||
super("pointy");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{ReforgeTarget.TRIDENT};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTridentDamage(@NotNull final LivingEntity attacker,
|
||||
@NotNull final LivingEntity victim,
|
||||
@NotNull final Trident trident,
|
||||
@NotNull final EntityDamageByEntityEvent event) {
|
||||
event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "multiplier"));
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
package com.willfp.reforges.reforges.reforges;
|
||||
|
||||
import com.willfp.eco.util.NumberUtils;
|
||||
import com.willfp.reforges.reforges.Reforge;
|
||||
import com.willfp.reforges.reforges.Reforges;
|
||||
import com.willfp.reforges.reforges.meta.ReforgeTarget;
|
||||
import com.willfp.reforges.vault.EconomyHandler;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Trident;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeProspecting extends Reforge {
|
||||
public ReforgeProspecting() {
|
||||
super("prospecting");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{ReforgeTarget.PICKAXE};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockBreak(@NotNull final Player player,
|
||||
@NotNull final Block block,
|
||||
@NotNull final BlockBreakEvent event) {
|
||||
if (NumberUtils.randFloat(0, 100) < this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "chance")) {
|
||||
EconomyHandler.getInstance().depositPlayer(player, this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "money"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
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.entity.LivingEntity;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeReinforced extends Reforge {
|
||||
public ReforgeReinforced() {
|
||||
super("reinforced");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{ReforgeTarget.ARMOR};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDamageWearingArmor(@NotNull final LivingEntity victim,
|
||||
@NotNull final EntityDamageEvent event) {
|
||||
event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "multiplier"));
|
||||
}
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
package com.willfp.reforges.reforges.reforges;
|
||||
|
||||
import com.willfp.eco.core.events.EntityDeathByEntityEvent;
|
||||
import com.willfp.eco.util.ArrowUtils;
|
||||
import com.willfp.reforges.reforges.Reforge;
|
||||
import com.willfp.reforges.reforges.Reforges;
|
||||
import com.willfp.reforges.reforges.meta.ReforgeTarget;
|
||||
import com.willfp.reforges.reforges.util.ReforgeUtils;
|
||||
import com.willfp.reforges.vault.EconomyHandler;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeRich extends Reforge {
|
||||
public ReforgeRich() {
|
||||
super("rich");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{ReforgeTarget.BOW};
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onKill(@NotNull final EntityDeathByEntityEvent event) {
|
||||
if (!(event.getKiller() instanceof Arrow arrow)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(arrow.getShooter() instanceof Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
ItemStack bow = ArrowUtils.getBow(arrow);
|
||||
|
||||
if (bow == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Reforge reforge = ReforgeUtils.getReforge(bow);
|
||||
|
||||
if (reforge == null || !reforge.equals(this)) {
|
||||
return;
|
||||
}
|
||||
|
||||
EconomyHandler.getInstance().depositPlayer(player, this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "money"));
|
||||
}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
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.entity.LivingEntity;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeSharp extends Reforge {
|
||||
public ReforgeSharp() {
|
||||
super("sharp");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{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"));
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
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.entity.Arrow;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeStreamlined extends Reforge {
|
||||
public ReforgeStreamlined() {
|
||||
super("streamlined");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{ReforgeTarget.BOW};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onArrowDamage(@NotNull final LivingEntity attacker,
|
||||
@NotNull final LivingEntity victim,
|
||||
@NotNull final Arrow arrow,
|
||||
@NotNull final EntityDamageByEntityEvent event) {
|
||||
event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "multiplier"));
|
||||
}
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
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.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeStrong extends Reforge {
|
||||
public ReforgeStrong() {
|
||||
super("strong");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{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 ItemMeta handleApplication(@NotNull final ItemMeta meta) {
|
||||
meta.addAttributeModifier(Attribute.GENERIC_ATTACK_KNOCKBACK, new AttributeModifier(
|
||||
this.getUuid(),
|
||||
"strong-kb",
|
||||
this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "knockback-multiplier") - 1,
|
||||
AttributeModifier.Operation.MULTIPLY_SCALAR_1
|
||||
));
|
||||
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
|
||||
return meta;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemMeta handleRemoval(@NotNull final ItemMeta meta) {
|
||||
meta.removeAttributeModifier(Attribute.GENERIC_ATTACK_KNOCKBACK);
|
||||
return meta;
|
||||
}
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
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.EntityDamageEvent;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeThin extends Reforge {
|
||||
public ReforgeThin() {
|
||||
super("thin");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{ReforgeTarget.ARMOR};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDamageWearingArmor(@NotNull final LivingEntity victim,
|
||||
@NotNull final EntityDamageEvent event) {
|
||||
event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "multiplier"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemMeta handleApplication(@NotNull final ItemMeta meta) {
|
||||
meta.addAttributeModifier(Attribute.GENERIC_MOVEMENT_SPEED, new AttributeModifier(
|
||||
this.getUuid(),
|
||||
"thin-speed",
|
||||
this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "speed-multiplier") - 1,
|
||||
AttributeModifier.Operation.MULTIPLY_SCALAR_1
|
||||
));
|
||||
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
|
||||
return meta;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemMeta handleRemoval(@NotNull final ItemMeta meta) {
|
||||
meta.removeAttributeModifier(Attribute.GENERIC_MOVEMENT_SPEED);
|
||||
return meta;
|
||||
}
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
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.EntityDamageEvent;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeTough extends Reforge {
|
||||
public ReforgeTough() {
|
||||
super("tough");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{ReforgeTarget.ARMOR};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDamageWearingArmor(@NotNull final LivingEntity victim,
|
||||
@NotNull final EntityDamageEvent event) {
|
||||
event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "multiplier"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemMeta handleApplication(@NotNull final ItemMeta meta) {
|
||||
meta.addAttributeModifier(Attribute.GENERIC_MOVEMENT_SPEED, new AttributeModifier(
|
||||
this.getUuid(),
|
||||
"tough-speed",
|
||||
this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "speed-multiplier") - 1,
|
||||
AttributeModifier.Operation.MULTIPLY_SCALAR_1
|
||||
));
|
||||
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
|
||||
return meta;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemMeta handleRemoval(@NotNull final ItemMeta meta) {
|
||||
meta.removeAttributeModifier(Attribute.GENERIC_MOVEMENT_SPEED);
|
||||
return meta;
|
||||
}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
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.entity.LivingEntity;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeVersatile extends Reforge {
|
||||
public ReforgeVersatile() {
|
||||
super("versatile");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{ReforgeTarget.TRIDENT};
|
||||
}
|
||||
|
||||
@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"));
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
package com.willfp.reforges.reforges.reforges;
|
||||
|
||||
import com.willfp.eco.core.events.EntityDeathByEntityEvent;
|
||||
import com.willfp.reforges.reforges.Reforge;
|
||||
import com.willfp.reforges.reforges.Reforges;
|
||||
import com.willfp.reforges.reforges.meta.ReforgeTarget;
|
||||
import com.willfp.reforges.reforges.util.ReforgeUtils;
|
||||
import com.willfp.reforges.vault.EconomyHandler;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeWealthy extends Reforge {
|
||||
public ReforgeWealthy() {
|
||||
super("wealthy");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{ReforgeTarget.MELEE};
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onKill(@NotNull final EntityDeathByEntityEvent event) {
|
||||
if (!(event.getKiller() instanceof Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Reforge reforge = ReforgeUtils.getReforge(player.getInventory().getItemInMainHand());
|
||||
|
||||
if (reforge == null || !reforge.equals(this)) {
|
||||
return;
|
||||
}
|
||||
|
||||
EconomyHandler.getInstance().depositPlayer(player, this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "money"));
|
||||
}
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
package com.willfp.reforges.reforges.reforges;
|
||||
|
||||
import com.willfp.eco.core.events.NaturalExpGainEvent;
|
||||
import com.willfp.reforges.reforges.Reforge;
|
||||
import com.willfp.reforges.reforges.Reforges;
|
||||
import com.willfp.reforges.reforges.meta.ReforgeTarget;
|
||||
import com.willfp.reforges.reforges.util.ReforgeUtils;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReforgeWise extends Reforge {
|
||||
public ReforgeWise() {
|
||||
super("wise");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReforgeTarget[] getTarget() {
|
||||
return new ReforgeTarget[]{ReforgeTarget.MELEE};
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onExpChange(@NotNull final NaturalExpGainEvent event) {
|
||||
Reforge reforge = ReforgeUtils.getReforge(event.getExpChangeEvent().getPlayer().getInventory().getItemInMainHand());
|
||||
|
||||
if (reforge == null || !reforge.equals(this)) {
|
||||
return;
|
||||
}
|
||||
|
||||
event.getExpChangeEvent().setAmount((int) Math.ceil(event.getExpChangeEvent().getAmount() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "multiplier")));
|
||||
}
|
||||
}
|
||||
@@ -43,7 +43,7 @@ public class ReforgeHandler extends PluginDependent<EcoPlugin> {
|
||||
if (menu.getCaptiveItems(player).size() == 2) {
|
||||
Reforge stone = ReforgeUtils.getReforgeStone(menu.getCaptiveItems(player).get(1));
|
||||
if (stone != null) {
|
||||
if (Arrays.stream(stone.getTarget()).anyMatch(reforgeTarget -> reforgeTarget.getItems().contains(toReforge.getType()))) {
|
||||
if (Arrays.stream(stone.getTargets()).anyMatch(reforgeTarget -> reforgeTarget.getItems().contains(toReforge.getType()))) {
|
||||
reforge = stone;
|
||||
usedStone = true;
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ public class ReforgeUtils {
|
||||
List<Reforge> applicable = new ArrayList<>();
|
||||
|
||||
for (Reforge reforge : Reforges.values()) {
|
||||
if (Arrays.asList(reforge.getTarget()).contains(target) && !reforge.isRequiresStone()) {
|
||||
if (Arrays.asList(reforge.getTargets()).contains(target) && !reforge.isRequiresStone()) {
|
||||
applicable.add(reforge);
|
||||
}
|
||||
}
|
||||
@@ -87,7 +87,9 @@ public class ReforgeUtils {
|
||||
|
||||
if (status == ReforgeStatus.ALLOW) {
|
||||
Reforge reforgeStone = getReforgeStone(stone);
|
||||
if (reforgeStone != null && Arrays.stream(reforgeStone.getTarget()).anyMatch(reforgeTarget -> reforgeTarget.getItems().contains(toReforge.getType()))) {
|
||||
if (reforgeStone != null && reforgeStone.getTargets().stream()
|
||||
.anyMatch(reforgeTarget -> reforgeTarget.getItems().stream()
|
||||
.anyMatch(item -> item.matches(toReforge)))) {
|
||||
status = ReforgeStatus.ALLOW_STONE;
|
||||
}
|
||||
}
|
||||
@@ -173,7 +175,7 @@ public class ReforgeUtils {
|
||||
@NotNull final Reforge reforge) {
|
||||
PersistentDataContainer container = meta.getPersistentDataContainer();
|
||||
|
||||
container.set(REFORGE_KEY, PersistentDataType.STRING, reforge.getKey());
|
||||
container.set(REFORGE_KEY, PersistentDataType.STRING, reforge.getId());
|
||||
|
||||
reforge.handleApplication(meta);
|
||||
}
|
||||
@@ -236,7 +238,7 @@ public class ReforgeUtils {
|
||||
|
||||
PersistentDataContainer container = meta.getPersistentDataContainer();
|
||||
|
||||
container.set(REFORGE_STONE_KEY, PersistentDataType.STRING, reforge.getKey());
|
||||
container.set(REFORGE_STONE_KEY, PersistentDataType.STRING, reforge.getId());
|
||||
|
||||
item.setItemMeta(meta);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.willfp.reforges.reforges.util;
|
||||
|
||||
import com.willfp.eco.core.config.interfaces.JSONConfig;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
@@ -24,11 +25,28 @@ public interface Watcher {
|
||||
* @param player The player.
|
||||
* @param block The block that was broken.
|
||||
* @param event The event that called this watcher.
|
||||
* @param config The effect config.
|
||||
*/
|
||||
default void onBlockBreak(@NotNull final Player player,
|
||||
@NotNull final Block block,
|
||||
@NotNull final BlockBreakEvent event) {
|
||||
// Empty default as enchantments only override required watchers.
|
||||
@NotNull final BlockBreakEvent event,
|
||||
@NotNull final JSONConfig config) {
|
||||
// Empty default as effects only override required watchers.
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when an entity attacks another entity via any mean.
|
||||
*
|
||||
* @param attacker The attacker.
|
||||
* @param victim The victim.
|
||||
* @param event The event.
|
||||
* @param config The effect config.
|
||||
*/
|
||||
default void onAnyDamage(@NotNull final LivingEntity attacker,
|
||||
@NotNull final LivingEntity victim,
|
||||
@NotNull final EntityDamageByEntityEvent event,
|
||||
@NotNull final JSONConfig config) {
|
||||
// Empty default as effects only override required watchers.
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -38,12 +56,14 @@ public interface Watcher {
|
||||
* @param victim The victim.
|
||||
* @param arrow The arrow entity.
|
||||
* @param event The event that called this watcher.
|
||||
* @param config The effect config.
|
||||
*/
|
||||
default void onArrowDamage(@NotNull final LivingEntity attacker,
|
||||
@NotNull final LivingEntity victim,
|
||||
@NotNull final Arrow arrow,
|
||||
@NotNull final EntityDamageByEntityEvent event) {
|
||||
// Empty default as enchantments only override required watchers.
|
||||
@NotNull final EntityDamageByEntityEvent event,
|
||||
@NotNull final JSONConfig config) {
|
||||
// Empty default as effects only override required watchers.
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -53,12 +73,14 @@ public interface Watcher {
|
||||
* @param victim The victim.
|
||||
* @param trident The trident entity.
|
||||
* @param event The event that called this watcher.
|
||||
* @param config The effect config.
|
||||
*/
|
||||
default void onTridentDamage(@NotNull final LivingEntity attacker,
|
||||
@NotNull final LivingEntity victim,
|
||||
@NotNull final Trident trident,
|
||||
@NotNull final EntityDamageByEntityEvent event) {
|
||||
// Empty default as enchantments only override required watchers.
|
||||
@NotNull final EntityDamageByEntityEvent event,
|
||||
@NotNull final JSONConfig config) {
|
||||
// Empty default as effects only override required watchers.
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -66,10 +88,12 @@ public interface Watcher {
|
||||
*
|
||||
* @param player The player.
|
||||
* @param event The event that called this watcher.
|
||||
* @param config The effect config.
|
||||
*/
|
||||
default void onJump(@NotNull final Player player,
|
||||
@NotNull final PlayerMoveEvent event) {
|
||||
// Empty default as enchantments only override required watchers.
|
||||
@NotNull final PlayerMoveEvent event,
|
||||
@NotNull final JSONConfig config) {
|
||||
// Empty default as effects only override required watchers.
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -78,11 +102,13 @@ public interface Watcher {
|
||||
* @param attacker The attacker.
|
||||
* @param victim The victim.
|
||||
* @param event The event that called this watcher.
|
||||
* @param config The effect config.
|
||||
*/
|
||||
default void onMeleeAttack(@NotNull final LivingEntity attacker,
|
||||
@NotNull final LivingEntity victim,
|
||||
@NotNull final EntityDamageByEntityEvent event) {
|
||||
// Empty default as enchantments only override required watchers.
|
||||
@NotNull final EntityDamageByEntityEvent event,
|
||||
@NotNull final JSONConfig config) {
|
||||
// Empty default as effects only override required watchers.
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -91,11 +117,13 @@ public interface Watcher {
|
||||
* @param shooter The entity that shot the bow.
|
||||
* @param arrow The arrow that was shot.
|
||||
* @param event The event that called this watcher.
|
||||
* @param config The effect config.
|
||||
*/
|
||||
default void onBowShoot(@NotNull final LivingEntity shooter,
|
||||
@NotNull final Arrow arrow,
|
||||
@NotNull final EntityShootBowEvent event) {
|
||||
// Empty default as enchantments only override required watchers.
|
||||
@NotNull final EntityShootBowEvent event,
|
||||
@NotNull final JSONConfig config) {
|
||||
// Empty default as effects only override required watchers.
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -104,11 +132,13 @@ public interface Watcher {
|
||||
* @param shooter The entity that shot the bow.
|
||||
* @param projectile The projectile that was shot.
|
||||
* @param event The event that called this watcher.
|
||||
* @param config The effect config.
|
||||
*/
|
||||
default void onProjectileLaunch(@NotNull final LivingEntity shooter,
|
||||
@NotNull final Projectile projectile,
|
||||
@NotNull final ProjectileLaunchEvent event) {
|
||||
// Empty default as enchantments only override required watchers.
|
||||
@NotNull final ProjectileLaunchEvent event,
|
||||
@NotNull final JSONConfig config) {
|
||||
// Empty default as effects only override required watchers.
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -116,10 +146,12 @@ public interface Watcher {
|
||||
*
|
||||
* @param faller The entity that took the fall damage.
|
||||
* @param event The event that called this watcher.
|
||||
* @param config The effect config.
|
||||
*/
|
||||
default void onFallDamage(@NotNull final LivingEntity faller,
|
||||
@NotNull final EntityDamageEvent event) {
|
||||
// Empty default as enchantments only override required watchers.
|
||||
@NotNull final EntityDamageEvent event,
|
||||
@NotNull final JSONConfig config) {
|
||||
// Empty default as effects only override required watchers.
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -127,10 +159,12 @@ public interface Watcher {
|
||||
*
|
||||
* @param shooter The entity that shot the arrow.
|
||||
* @param event The event that called this watcher.
|
||||
* @param config The effect config.
|
||||
*/
|
||||
default void onArrowHit(@NotNull final LivingEntity shooter,
|
||||
@NotNull final ProjectileHitEvent event) {
|
||||
// Empty default as enchantments only override required watchers.
|
||||
@NotNull final ProjectileHitEvent event,
|
||||
@NotNull final JSONConfig config) {
|
||||
// Empty default as effects only override required watchers.
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -138,10 +172,12 @@ public interface Watcher {
|
||||
*
|
||||
* @param shooter The entity that threw the trident.
|
||||
* @param event The event that called this watcher.
|
||||
* @param config The effect config.
|
||||
*/
|
||||
default void onTridentHit(@NotNull final LivingEntity shooter,
|
||||
@NotNull final ProjectileHitEvent event) {
|
||||
// Empty default as enchantments only override required watchers.
|
||||
@NotNull final ProjectileHitEvent event,
|
||||
@NotNull final JSONConfig config) {
|
||||
// Empty default as effects only override required watchers.
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -149,10 +185,12 @@ public interface Watcher {
|
||||
*
|
||||
* @param victim The entity that took damage.
|
||||
* @param event The event that called this watcher.
|
||||
* @param config The effect config.
|
||||
*/
|
||||
default void onDamageWearingArmor(@NotNull final LivingEntity victim,
|
||||
@NotNull final EntityDamageEvent event) {
|
||||
// Empty default as enchantments only override required watchers.
|
||||
@NotNull final EntityDamageEvent event,
|
||||
@NotNull final JSONConfig config) {
|
||||
// Empty default as effects only override required watchers.
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -161,10 +199,12 @@ public interface Watcher {
|
||||
* @param shooter The entity that threw the trident.
|
||||
* @param trident The trident that was thrown.
|
||||
* @param event The event that called this watcher.
|
||||
* @param config The effect config.
|
||||
*/
|
||||
default void onTridentLaunch(@NotNull final LivingEntity shooter,
|
||||
@NotNull final Trident trident,
|
||||
@NotNull final ProjectileLaunchEvent event) {
|
||||
// Empty default as enchantments only override required watchers.
|
||||
@NotNull final ProjectileLaunchEvent event,
|
||||
@NotNull final JSONConfig config) {
|
||||
// Empty default as effects only override required watchers.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,10 +2,13 @@ package com.willfp.reforges.reforges.util;
|
||||
|
||||
import com.willfp.eco.core.EcoPlugin;
|
||||
import com.willfp.eco.core.PluginDependent;
|
||||
import com.willfp.eco.core.config.interfaces.JSONConfig;
|
||||
import com.willfp.eco.core.events.PlayerJumpEvent;
|
||||
import com.willfp.eco.core.integrations.antigrief.AntigriefManager;
|
||||
import com.willfp.eco.core.integrations.mcmmo.McmmoManager;
|
||||
import com.willfp.eco.util.ArrowUtils;
|
||||
import com.willfp.eco.util.NumberUtils;
|
||||
import com.willfp.reforges.effects.Effect;
|
||||
import com.willfp.reforges.reforges.Reforge;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.AbstractArrow;
|
||||
@@ -27,6 +30,8 @@ import org.bukkit.inventory.EntityEquipment;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class WatcherTriggers extends PluginDependent<EcoPlugin> implements Listener {
|
||||
/**
|
||||
* Create new listener for watcher events.
|
||||
@@ -64,7 +69,12 @@ public class WatcherTriggers extends PluginDependent<EcoPlugin> implements Liste
|
||||
return;
|
||||
}
|
||||
|
||||
reforge.onBlockBreak(player, block, event);
|
||||
for (Map.Entry<Effect, JSONConfig> entry : reforge.getEffects().entrySet()) {
|
||||
if (NumberUtils.randFloat(0, 100) > (entry.getValue().has("chance") ? entry.getValue().getDouble("chance") : 100)) {
|
||||
continue;
|
||||
}
|
||||
entry.getKey().onBlockBreak(player, block, event, entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -114,7 +124,13 @@ public class WatcherTriggers extends PluginDependent<EcoPlugin> implements Liste
|
||||
return;
|
||||
}
|
||||
|
||||
reforge.onArrowDamage(attacker, victim, arrow, event);
|
||||
for (Map.Entry<Effect, JSONConfig> entry : reforge.getEffects().entrySet()) {
|
||||
if (NumberUtils.randFloat(0, 100) > (entry.getValue().has("chance") ? entry.getValue().getDouble("chance") : 100)) {
|
||||
continue;
|
||||
}
|
||||
entry.getKey().onArrowDamage(attacker, victim, arrow, event, entry.getValue());
|
||||
entry.getKey().onAnyDamage(attacker, victim, event, entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -160,7 +176,13 @@ public class WatcherTriggers extends PluginDependent<EcoPlugin> implements Liste
|
||||
return;
|
||||
}
|
||||
|
||||
reforge.onTridentDamage(attacker, victim, trident, event);
|
||||
for (Map.Entry<Effect, JSONConfig> entry : reforge.getEffects().entrySet()) {
|
||||
if (NumberUtils.randFloat(0, 100) > (entry.getValue().has("chance") ? entry.getValue().getDouble("chance") : 100)) {
|
||||
continue;
|
||||
}
|
||||
entry.getKey().onTridentDamage(attacker, victim, trident, event, entry.getValue());
|
||||
entry.getKey().onAnyDamage(attacker, victim, event, entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -187,7 +209,12 @@ public class WatcherTriggers extends PluginDependent<EcoPlugin> implements Liste
|
||||
continue;
|
||||
}
|
||||
|
||||
reforge.onJump(player, event);
|
||||
for (Map.Entry<Effect, JSONConfig> entry : reforge.getEffects().entrySet()) {
|
||||
if (NumberUtils.randFloat(0, 100) > (entry.getValue().has("chance") ? entry.getValue().getDouble("chance") : 100)) {
|
||||
continue;
|
||||
}
|
||||
entry.getKey().onJump(player, event, entry.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -234,7 +261,13 @@ public class WatcherTriggers extends PluginDependent<EcoPlugin> implements Liste
|
||||
return;
|
||||
}
|
||||
|
||||
reforge.onMeleeAttack(attacker, victim, event);
|
||||
for (Map.Entry<Effect, JSONConfig> entry : reforge.getEffects().entrySet()) {
|
||||
if (NumberUtils.randFloat(0, 100) > (entry.getValue().has("chance") ? entry.getValue().getDouble("chance") : 100)) {
|
||||
continue;
|
||||
}
|
||||
entry.getKey().onMeleeAttack(attacker, victim, event, entry.getValue());
|
||||
entry.getKey().onAnyDamage(attacker, victim, event, entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -267,7 +300,12 @@ public class WatcherTriggers extends PluginDependent<EcoPlugin> implements Liste
|
||||
return;
|
||||
}
|
||||
|
||||
reforge.onBowShoot(shooter, arrow, event);
|
||||
for (Map.Entry<Effect, JSONConfig> entry : reforge.getEffects().entrySet()) {
|
||||
if (NumberUtils.randFloat(0, 100) > (entry.getValue().has("chance") ? entry.getValue().getDouble("chance") : 100)) {
|
||||
continue;
|
||||
}
|
||||
entry.getKey().onBowShoot(shooter, arrow, event, entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -309,7 +347,12 @@ public class WatcherTriggers extends PluginDependent<EcoPlugin> implements Liste
|
||||
return;
|
||||
}
|
||||
|
||||
reforge.onProjectileLaunch(shooter, projectile, event);
|
||||
for (Map.Entry<Effect, JSONConfig> entry : reforge.getEffects().entrySet()) {
|
||||
if (NumberUtils.randFloat(0, 100) > (entry.getValue().has("chance") ? entry.getValue().getDouble("chance") : 100)) {
|
||||
continue;
|
||||
}
|
||||
entry.getKey().onProjectileLaunch(shooter, projectile, event, entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -348,7 +391,13 @@ public class WatcherTriggers extends PluginDependent<EcoPlugin> implements Liste
|
||||
continue;
|
||||
}
|
||||
|
||||
reforge.onFallDamage(victim, event);
|
||||
|
||||
for (Map.Entry<Effect, JSONConfig> entry : reforge.getEffects().entrySet()) {
|
||||
if (NumberUtils.randFloat(0, 100) > (entry.getValue().has("chance") ? entry.getValue().getDouble("chance") : 100)) {
|
||||
continue;
|
||||
}
|
||||
entry.getKey().onFallDamage(victim, event, entry.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -387,7 +436,13 @@ public class WatcherTriggers extends PluginDependent<EcoPlugin> implements Liste
|
||||
return;
|
||||
}
|
||||
|
||||
reforge.onArrowHit(shooter, event);
|
||||
|
||||
for (Map.Entry<Effect, JSONConfig> entry : reforge.getEffects().entrySet()) {
|
||||
if (NumberUtils.randFloat(0, 100) > (entry.getValue().has("chance") ? entry.getValue().getDouble("chance") : 100)) {
|
||||
continue;
|
||||
}
|
||||
entry.getKey().onArrowHit(shooter, event, entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -421,7 +476,12 @@ public class WatcherTriggers extends PluginDependent<EcoPlugin> implements Liste
|
||||
return;
|
||||
}
|
||||
|
||||
reforge.onTridentHit(shooter, event);
|
||||
for (Map.Entry<Effect, JSONConfig> entry : reforge.getEffects().entrySet()) {
|
||||
if (NumberUtils.randFloat(0, 100) > (entry.getValue().has("chance") ? entry.getValue().getDouble("chance") : 100)) {
|
||||
continue;
|
||||
}
|
||||
entry.getKey().onTridentHit(shooter, event, entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -456,7 +516,12 @@ public class WatcherTriggers extends PluginDependent<EcoPlugin> implements Liste
|
||||
continue;
|
||||
}
|
||||
|
||||
reforge.onDamageWearingArmor(victim, event);
|
||||
for (Map.Entry<Effect, JSONConfig> entry : reforge.getEffects().entrySet()) {
|
||||
if (NumberUtils.randFloat(0, 100) > (entry.getValue().has("chance") ? entry.getValue().getDouble("chance") : 100)) {
|
||||
continue;
|
||||
}
|
||||
entry.getKey().onDamageWearingArmor(victim, event, entry.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -492,6 +557,12 @@ public class WatcherTriggers extends PluginDependent<EcoPlugin> implements Liste
|
||||
return;
|
||||
}
|
||||
|
||||
reforge.onTridentLaunch(shooter, trident, event);
|
||||
for (Map.Entry<Effect, JSONConfig> entry : reforge.getEffects().entrySet()) {
|
||||
if (NumberUtils.randFloat(0, 100) > (entry.getValue().has("chance") ? entry.getValue().getDouble("chance") : 100)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
entry.getKey().onTridentLaunch(shooter, trident, event, entry.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,66 +137,3 @@ reforge:
|
||||
- "&7Place on the right of the"
|
||||
- "&7reforge menu to apply the"
|
||||
- "%reforge%&7 reforge!"
|
||||
|
||||
targets:
|
||||
pickaxe:
|
||||
- wooden_pickaxe
|
||||
- stone_pickaxe
|
||||
- iron_pickaxe
|
||||
- golden_pickaxe
|
||||
- diamond_pickaxe
|
||||
- netherite_pickaxe
|
||||
axe:
|
||||
- wooden_axe
|
||||
- stone_axe
|
||||
- iron_axe
|
||||
- golden_axe
|
||||
- diamond_axe
|
||||
- netherite_axe
|
||||
melee:
|
||||
- wooden_axe
|
||||
- stone_axe
|
||||
- iron_axe
|
||||
- golden_axe
|
||||
- diamond_axe
|
||||
- netherite_axe
|
||||
- wooden_sword
|
||||
- stone_sword
|
||||
- iron_sword
|
||||
- golden_sword
|
||||
- diamond_sword
|
||||
- netherite_sword
|
||||
trident:
|
||||
- trident
|
||||
bow:
|
||||
- bow
|
||||
- crossbow
|
||||
armor:
|
||||
- turtle_helmet
|
||||
- leather_helmet
|
||||
- chainmail_helmet
|
||||
- iron_helmet
|
||||
- golden_helmet
|
||||
- diamond_helmet
|
||||
- netherite_helmet
|
||||
|
||||
- leather_chestplate
|
||||
- chainmail_chestplate
|
||||
- iron_chestplate
|
||||
- golden_chestplate
|
||||
- diamond_chestplate
|
||||
- netherite_chestplate
|
||||
|
||||
- leather_leggings
|
||||
- chainmail_leggings
|
||||
- iron_leggings
|
||||
- golden_leggings
|
||||
- diamond_leggings
|
||||
- netherite_leggings
|
||||
|
||||
- leather_boots
|
||||
- chainmail_boots
|
||||
- iron_boots
|
||||
- golden_boots
|
||||
- diamond_boots
|
||||
- netherite_boots
|
||||
43
eco-core/core-plugin/src/main/resources/reforges.json
Normal file
43
eco-core/core-plugin/src/main/resources/reforges.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"reforges": [
|
||||
{
|
||||
"id": "dynamic",
|
||||
"name": "<gradient:#AAFFA9>Dynamic</gradient:#11FFBD>",
|
||||
"description": "Deal &a5%&r more damage and &a10%&r more critical damage",
|
||||
"targets": [
|
||||
"melee"
|
||||
],
|
||||
"stone": {
|
||||
"enabled": true,
|
||||
"texture": "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmM0YTY1YzY4OWIyZDM2NDA5MTAwYTYwYzJhYjhkM2QwYTY3Y2U5NGVlYTNjMWY3YWM5NzRmZDg5MzU2OGI1ZCJ9fX0=",,
|
||||
"craftable": true,
|
||||
"recipe": [
|
||||
"air",
|
||||
"ecoitems:blank_reforge_stone ? air",
|
||||
"air",
|
||||
|
||||
"iron_block",
|
||||
"daylight_sensor",
|
||||
"iron_block",
|
||||
|
||||
"air",
|
||||
"phantom_membrane",
|
||||
"air"
|
||||
]
|
||||
},
|
||||
"effects": [
|
||||
{
|
||||
"id": "damage_multiplier",
|
||||
"multiplier": 1.05
|
||||
},
|
||||
{
|
||||
"id": "crit_multiplier",
|
||||
"multiplier": 1.10
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
61
eco-core/core-plugin/src/main/resources/target.yml
Normal file
61
eco-core/core-plugin/src/main/resources/target.yml
Normal file
@@ -0,0 +1,61 @@
|
||||
pickaxe:
|
||||
- wooden_pickaxe
|
||||
- stone_pickaxe
|
||||
- iron_pickaxe
|
||||
- golden_pickaxe
|
||||
- diamond_pickaxe
|
||||
- netherite_pickaxe
|
||||
axe:
|
||||
- wooden_axe
|
||||
- stone_axe
|
||||
- iron_axe
|
||||
- golden_axe
|
||||
- diamond_axe
|
||||
- netherite_axe
|
||||
melee:
|
||||
- wooden_axe
|
||||
- stone_axe
|
||||
- iron_axe
|
||||
- golden_axe
|
||||
- diamond_axe
|
||||
- netherite_axe
|
||||
- wooden_sword
|
||||
- stone_sword
|
||||
- iron_sword
|
||||
- golden_sword
|
||||
- diamond_sword
|
||||
- netherite_sword
|
||||
trident:
|
||||
- trident
|
||||
bow:
|
||||
- bow
|
||||
- crossbow
|
||||
armor:
|
||||
- turtle_helmet
|
||||
- leather_helmet
|
||||
- chainmail_helmet
|
||||
- iron_helmet
|
||||
- golden_helmet
|
||||
- diamond_helmet
|
||||
- netherite_helmet
|
||||
|
||||
- leather_chestplate
|
||||
- chainmail_chestplate
|
||||
- iron_chestplate
|
||||
- golden_chestplate
|
||||
- diamond_chestplate
|
||||
- netherite_chestplate
|
||||
|
||||
- leather_leggings
|
||||
- chainmail_leggings
|
||||
- iron_leggings
|
||||
- golden_leggings
|
||||
- diamond_leggings
|
||||
- netherite_leggings
|
||||
|
||||
- leather_boots
|
||||
- chainmail_boots
|
||||
- iron_boots
|
||||
- golden_boots
|
||||
- diamond_boots
|
||||
- netherite_boots
|
||||
Reference in New Issue
Block a user