mirror of
https://github.com/Auxilor/Reforges.git
synced 2025-12-31 04:46:42 +00:00
Added wealthy reforge and updated stones
This commit is contained in:
@@ -4,6 +4,7 @@ import com.willfp.eco.core.EcoPlugin;
|
||||
import com.willfp.eco.core.command.impl.PluginCommand;
|
||||
import com.willfp.eco.core.display.DisplayModule;
|
||||
import com.willfp.reforges.commands.CommandReforge;
|
||||
import com.willfp.reforges.commands.CommandReforges;
|
||||
import com.willfp.reforges.display.ReforgesDisplay;
|
||||
import com.willfp.reforges.reforges.Reforge;
|
||||
import com.willfp.reforges.reforges.Reforges;
|
||||
@@ -66,7 +67,8 @@ public class ReforgesPlugin extends EcoPlugin {
|
||||
@Override
|
||||
protected List<PluginCommand> loadPluginCommands() {
|
||||
return Arrays.asList(
|
||||
new CommandReforge(this)
|
||||
new CommandReforge(this),
|
||||
new CommandReforges(this)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ public class CommandReforges extends PluginCommand {
|
||||
* @param plugin The plugin for the commands to listen for.
|
||||
*/
|
||||
public CommandReforges(@NotNull final EcoPlugin plugin) {
|
||||
super(plugin, "reforge", "reforges.command.reforges", false);
|
||||
super(plugin, "reforges", "reforges.command.reforges", false);
|
||||
|
||||
this.addSubcommand(new CommandReload(plugin))
|
||||
.addSubcommand(new CommandGive(plugin));
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.willfp.reforges.reforges.Reforge;
|
||||
import com.willfp.reforges.reforges.meta.ReforgeTarget;
|
||||
import com.willfp.reforges.reforges.util.ReforgeUtils;
|
||||
import org.apache.commons.lang.WordUtils;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
@@ -34,7 +35,7 @@ public class ReforgesDisplay extends DisplayModule {
|
||||
@NotNull final Object... args) {
|
||||
ReforgeTarget target = ReforgeTarget.getForMaterial(itemStack.getType());
|
||||
|
||||
if (target == null) {
|
||||
if (target == null && itemStack.getType() != Material.PLAYER_HEAD) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -46,17 +47,20 @@ public class ReforgesDisplay extends DisplayModule {
|
||||
|
||||
FastItemStack fastItemStack = FastItemStack.wrap(itemStack);
|
||||
List<String> lore = fastItemStack.getLore();
|
||||
assert lore != null;
|
||||
|
||||
if (stone != null) {
|
||||
meta.setDisplayName(this.getPlugin().getConfigYml().getString("reforge.stone.name").replace("%reforge%", stone.getName()));
|
||||
SkullUtils.setSkullTexture((SkullMeta) meta, reforge.getConfig().getString("stone-config.texture"));
|
||||
SkullUtils.setSkullTexture((SkullMeta) meta, stone.getConfig().getString("stone-config.texture"));
|
||||
itemStack.setItemMeta(meta);
|
||||
List<String> stoneLore = new ArrayList<>();
|
||||
for (String string : this.getPlugin().getConfigYml().getStrings("reforge.stone.lore")) {
|
||||
stoneLore.add(string.replace("%reforge%", stone.getName()));
|
||||
stoneLore.add(Display.PREFIX + string.replace("%reforge%", stone.getName()));
|
||||
}
|
||||
lore.addAll(0, stoneLore);
|
||||
} else {
|
||||
if (itemStack.getType() == Material.PLAYER_HEAD) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (reforge != null) {
|
||||
@@ -81,7 +85,7 @@ public class ReforgesDisplay extends DisplayModule {
|
||||
}
|
||||
}
|
||||
|
||||
if (reforge == null && this.getPlugin().getConfigYml().getBool("reforge.show-reforgable")) {
|
||||
if (reforge == null && this.getPlugin().getConfigYml().getBool("reforge.show-reforgable") && itemStack.getType() != Material.PLAYER_HEAD) {
|
||||
List<String> addLore = this.getPlugin().getConfigYml().getStrings("reforge.reforgable-suffix");
|
||||
|
||||
addLore.replaceAll(s -> Display.PREFIX + s);
|
||||
|
||||
@@ -66,7 +66,7 @@ public class ReforgeGUI {
|
||||
).setModifier((player, menu, previous) -> {
|
||||
|
||||
ReforgeStatus status = ReforgeUtils.getStatus(menu.getCaptiveItems(player));
|
||||
if (status == ReforgeStatus.ALLOW) {
|
||||
if (status == ReforgeStatus.ALLOW || status == ReforgeStatus.ALLOW_STONE) {
|
||||
previous.setType(Material.LIME_STAINED_GLASS_PANE);
|
||||
} else {
|
||||
previous.setType(Material.RED_STAINED_GLASS_PANE);
|
||||
@@ -121,6 +121,16 @@ public class ReforgeGUI {
|
||||
}
|
||||
meta.setLore(lore);
|
||||
}
|
||||
case ALLOW_STONE -> {
|
||||
previous.setType(Objects.requireNonNull(Material.getMaterial(plugin.getConfigYml().getString("gui.allow-stone.material").toUpperCase())));
|
||||
meta.setDisplayName(plugin.getConfigYml().getString("gui.allow-stone.name"));
|
||||
List<String> lore = new ArrayList<>();
|
||||
for (String string : plugin.getConfigYml().getStrings("gui.allow-stone.lore")) {
|
||||
lore.add(string.replace("%cost%", NumberUtils.format(cost))
|
||||
.replace("%stone%", ReforgeUtils.getReforgeStone(menu.getCaptiveItems(player).get(1)).getName()));
|
||||
}
|
||||
meta.setLore(lore);
|
||||
}
|
||||
default -> {
|
||||
previous.setType(Objects.requireNonNull(Material.getMaterial(plugin.getConfigYml().getString("gui.no-item.material").toUpperCase())));
|
||||
meta.setDisplayName(plugin.getConfigYml().getString("gui.no-item.name"));
|
||||
@@ -192,8 +202,8 @@ public class ReforgeGUI {
|
||||
|
||||
if (usedStone) {
|
||||
ItemStack stone = menu.getCaptiveItems(player).get(1);
|
||||
stone.setType(Material.AIR);
|
||||
stone.setItemMeta(null);
|
||||
stone.setAmount(0);
|
||||
}
|
||||
|
||||
player.playSound(
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.willfp.eco.core.recipe.Recipes;
|
||||
import com.willfp.reforges.ReforgesPlugin;
|
||||
import com.willfp.reforges.config.ReforgeConfig;
|
||||
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;
|
||||
@@ -94,9 +95,16 @@ public abstract class Reforge implements Listener, Watcher {
|
||||
description = config.getString("description");
|
||||
|
||||
requiresStone = config.getBool("stone-config.requires-stone");
|
||||
stone = new SkullBuilder()
|
||||
.setSkullTexture(config.getString("stone-config.texture"))
|
||||
.build();
|
||||
if (requiresStone) {
|
||||
stone = new SkullBuilder()
|
||||
.setSkullTexture(config.getString("stone-config.texture"))
|
||||
.build();
|
||||
} else {
|
||||
stone = new SkullBuilder()
|
||||
.build();
|
||||
}
|
||||
|
||||
ReforgeUtils.setReforgeStone(stone, this);
|
||||
|
||||
if (config.getBool("stone-config.craftable")) {
|
||||
Recipes.createAndRegisterRecipe(
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.willfp.reforges.reforges.reforges.ReforgeGravitated;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeLight;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeSharp;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeStrong;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeWealthy;
|
||||
import com.willfp.reforges.reforges.reforges.ReforgeWise;
|
||||
import lombok.experimental.UtilityClass;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -30,6 +31,7 @@ public class Reforges {
|
||||
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();
|
||||
|
||||
/**
|
||||
* Get all registered {@link Reforge}s.
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
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 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"));
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,11 @@ public enum ReforgeStatus {
|
||||
*/
|
||||
ALLOW,
|
||||
|
||||
/**
|
||||
* Allow the reforge with a stone.
|
||||
*/
|
||||
ALLOW_STONE,
|
||||
|
||||
/**
|
||||
* Invalid item to reforge.
|
||||
*/
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.willfp.reforges.reforges.Reforge;
|
||||
import com.willfp.reforges.reforges.Reforges;
|
||||
import com.willfp.reforges.reforges.meta.ReforgeTarget;
|
||||
import lombok.experimental.UtilityClass;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
@@ -49,7 +50,7 @@ public class ReforgeUtils {
|
||||
List<Reforge> applicable = new ArrayList<>();
|
||||
|
||||
for (Reforge reforge : Reforges.values()) {
|
||||
if (reforge.getTarget().equals(target)) {
|
||||
if (reforge.getTarget().equals(target) && !reforge.isRequiresStone()) {
|
||||
applicable.add(reforge);
|
||||
}
|
||||
}
|
||||
@@ -65,11 +66,12 @@ public class ReforgeUtils {
|
||||
|
||||
public static ReforgeStatus getStatus(@NotNull final List<ItemStack> captive) {
|
||||
ItemStack toReforge = captive.isEmpty() ? null : captive.get(0);
|
||||
ItemStack stone = captive.size() == 2 ? captive.get(1) : null;
|
||||
ReforgeStatus status = null;
|
||||
|
||||
ReforgeTarget target = null;
|
||||
|
||||
if (toReforge == null) {
|
||||
if (toReforge == null || toReforge.getType() == Material.AIR) {
|
||||
status = ReforgeStatus.NO_ITEM;
|
||||
} else {
|
||||
target = ReforgeTarget.getForMaterial(toReforge.getType());
|
||||
@@ -82,6 +84,13 @@ public class ReforgeUtils {
|
||||
status = ReforgeStatus.ALLOW;
|
||||
}
|
||||
|
||||
if (status == ReforgeStatus.ALLOW) {
|
||||
Reforge reforgeStone = getReforgeStone(stone);
|
||||
if (reforgeStone != null && reforgeStone.getTarget().getMaterials().contains(toReforge.getType())) {
|
||||
status = ReforgeStatus.ALLOW_STONE;
|
||||
}
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -211,12 +220,6 @@ public class ReforgeUtils {
|
||||
return;
|
||||
}
|
||||
|
||||
Reforge previous = getReforge(item);
|
||||
|
||||
if (previous != null) {
|
||||
previous.handleRemoval(item);
|
||||
}
|
||||
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
|
||||
PersistentDataContainer container = meta.getPersistentDataContainer();
|
||||
@@ -224,8 +227,6 @@ public class ReforgeUtils {
|
||||
container.set(REFORGE_STONE_KEY, PersistentDataType.STRING, reforge.getKey());
|
||||
|
||||
item.setItemMeta(meta);
|
||||
|
||||
reforge.handleApplication(item);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -16,6 +16,19 @@ gui:
|
||||
- '&6\$%cost%'
|
||||
- ''
|
||||
- '&eClick to reforge!'
|
||||
allow-stone:
|
||||
material: anvil
|
||||
name: "&aReforge Item"
|
||||
lore:
|
||||
- '&7Reforges the above item with'
|
||||
- '&7a reforge stone, giving it'
|
||||
- '&7the %stone%&7 reforge to'
|
||||
- '&7boost its stats.'
|
||||
- ''
|
||||
- '&7Cost'
|
||||
- '&6\$%cost%'
|
||||
- ''
|
||||
- '&eClick to reforge!'
|
||||
no-item:
|
||||
material: anvil
|
||||
name: "&eReforge Item"
|
||||
|
||||
@@ -10,6 +10,6 @@ messages:
|
||||
invalid-player: "&cInvalid player!"
|
||||
needs-stone: "&cYou must specify a reforge stone"
|
||||
invalid-stone: "&cInvalid reforge!"
|
||||
give-success: "Gave &a%reforge%&r to &a%recipient%"
|
||||
give-success: "Gave &a%reforge%&r reforge stone to &a%recipient%"
|
||||
|
||||
description-color: "&7&o"
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
name: "<gradient:#AAFFA9>Dynamic</gradient:#11FFBD>"
|
||||
enabled: true
|
||||
description: "Deal &a2.5%&r more damage and &a5%&r more critical damage"
|
||||
description: "Deal &a5%&r more damage and &a10%&r more critical damage"
|
||||
|
||||
stone-config:
|
||||
requires-stone: true
|
||||
@@ -22,5 +22,5 @@ stone-config:
|
||||
- air
|
||||
|
||||
config:
|
||||
multiplier: 1.025
|
||||
crit-multiplier: 1.05
|
||||
multiplier: 1.05
|
||||
crit-multiplier: 1.10
|
||||
16
eco-core/core-plugin/src/main/resources/reforges/wealthy.yml
Normal file
16
eco-core/core-plugin/src/main/resources/reforges/wealthy.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
#
|
||||
# Wealthy Reforge
|
||||
#
|
||||
|
||||
name: "<gradient:#BF953F>Wealthy</gradient:#FCF6BA>"
|
||||
enabled: true
|
||||
description: "Gain &e\$10&f for each mob you kill"
|
||||
|
||||
stone-config:
|
||||
requires-stone: true
|
||||
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzVmNDg2MWFhNWIyMmVlMjhhOTBlNzVkYWI0NWQyMjFlZmQxNGMwYjFlY2M4ZWU5OThmYjY3ZTQzYmI4ZjNkZSJ9fX0=
|
||||
craftable: false
|
||||
recipe: []
|
||||
|
||||
config:
|
||||
money: 10
|
||||
Reference in New Issue
Block a user