9
0
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:
Auxilor
2021-08-12 19:21:39 +01:00
parent d829a14f23
commit 46d972a7d3
13 changed files with 124 additions and 26 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -6,6 +6,11 @@ public enum ReforgeStatus {
*/
ALLOW,
/**
* Allow the reforge with a stone.
*/
ALLOW_STONE,
/**
* Invalid item to reforge.
*/

View File

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

View File

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

View File

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

View File

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

View 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