9
0
mirror of https://github.com/Auxilor/Reforges.git synced 2025-12-24 17:39:32 +00:00
This commit is contained in:
Auxilor
2021-08-12 16:16:56 +01:00
parent da1692eb9a
commit e733f3e7eb
7 changed files with 90 additions and 41 deletions

View File

@@ -30,6 +30,11 @@ public class ReforgesPlugin extends EcoPlugin {
instance = this;
}
@Override
protected void handleEnable() {
this.getLogger().info(Reforges.values().size() + " Reforges Loaded");
}
@Override
protected void handleReload() {
for (Reforge reforge : Reforges.values()) {

View File

@@ -1,16 +1,18 @@
package com.willfp.reforges.display;
import com.willfp.eco.core.EcoPlugin;
import com.willfp.eco.core.display.Display;
import com.willfp.eco.core.display.DisplayModule;
import com.willfp.eco.core.display.DisplayPriority;
import com.willfp.eco.core.fast.FastItemStack;
import com.willfp.reforges.reforges.Reforge;
import com.willfp.reforges.reforges.meta.ReforgeTarget;
import com.willfp.reforges.reforges.util.ReforgeUtils;
import org.bukkit.Bukkit;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
public class ReforgesDisplay extends DisplayModule {
@@ -28,31 +30,43 @@ public class ReforgesDisplay extends DisplayModule {
@NotNull final Object... args) {
ReforgeTarget target = ReforgeTarget.getForMaterial(itemStack.getType());
Bukkit.getLogger().info(target + " hmm");
if (target == null) {
return;
}
Reforge reforge = ReforgeUtils.getReforge(itemStack);
ItemMeta meta = itemStack.getItemMeta();
assert meta != null;
if (reforge == null) {
return;
Reforge reforge = ReforgeUtils.getReforge(meta);
Bukkit.getLogger().info(reforge + " yes?");
List<String> lore = meta.hasLore() ? meta.getLore() : new ArrayList<>();
assert lore != null;
if (reforge != null) {
if (this.getPlugin().getConfigYml().getBool("reforge.display-in-lore")) {
List<String> addLore = this.getPlugin().getConfigYml().getStrings("reforge.lore-suffix");
addLore.replaceAll(s -> Display.PREFIX + s);
addLore.replaceAll(s -> s.replace("%reforge%", reforge.getName()));
addLore.replaceAll(s -> s.replace("%description%", reforge.getDescription()));
lore.addAll(addLore);
}
}
FastItemStack fastItemStack = FastItemStack.wrap(itemStack);
if (reforge == null && this.getPlugin().getConfigYml().getBool("reforge.show-reforgable")) {
List<String> addLore = this.getPlugin().getConfigYml().getStrings("reforge.reforgable-suffix");
List<String> lore = fastItemStack.getLore();
if (this.getPlugin().getConfigYml().getBool("reforge.display-in-lore")) {
List<String> addLore = this.getPlugin().getConfigYml().getStrings("reforge.lore-suffix");
addLore.replaceAll(s -> s.replace("%reforge%", reforge.getName()));
addLore.replaceAll(s -> s.replace("%description%", reforge.getDescription()));
addLore.replaceAll(s -> Display.PREFIX + s);
Bukkit.getLogger().info(addLore.toString());
lore.addAll(addLore);
}
fastItemStack.setLore(lore);
meta.setLore(lore);
ItemMeta meta = itemStack.getItemMeta();
assert meta != null;
itemStack.setItemMeta(meta);
}
}

View File

@@ -54,10 +54,12 @@ public class ReforgeGUI {
.setDisplayName("&r")
.build()
).setModifier((player, menu, previous) -> {
if (menu.getCaptiveItems(player).isEmpty()) {
previous.setType(Material.RED_STAINED_GLASS_PANE);
} else {
ReforgeStatus status = ReforgeUtils.getStatus(menu.getCaptiveItems(player));
if (status == ReforgeStatus.ALLOW) {
previous.setType(Material.LIME_STAINED_GLASS_PANE);
} else {
previous.setType(Material.RED_STAINED_GLASS_PANE);
}
}).build();
@@ -77,23 +79,7 @@ public class ReforgeGUI {
return;
}
ItemStack toReforge = menu.getCaptiveItems(player).isEmpty() ? null : menu.getCaptiveItems(player).get(0);
ReforgeStatus status = null;
ReforgeTarget target = null;
if (toReforge == null) {
status = ReforgeStatus.NO_ITEM;
} else {
target = ReforgeTarget.getForMaterial(toReforge.getType());
if (target == null) {
status = ReforgeStatus.INVALID_ITEM;
}
}
if (target != null) {
status = ReforgeStatus.ALLOW;
}
ReforgeStatus status = ReforgeUtils.getStatus(menu.getCaptiveItems(player));
switch (status) {
case INVALID_ITEM -> {
@@ -126,6 +112,11 @@ public class ReforgeGUI {
assert target != null;
Reforge reforge = ReforgeUtils.getRandomReforge(target);
if (reforge == null) {
return;
}
ReforgeUtils.setReforge(toReforge, reforge);
player.playSound(

View File

@@ -119,7 +119,9 @@ public class ReforgeTarget {
*/
@Nullable
public static ReforgeTarget getForMaterial(@NotNull final Material material) {
Optional<ReforgeTarget> matching = REGISTERED.stream().filter(rarity -> rarity.getMaterials().contains(material)).findFirst();
Optional<ReforgeTarget> matching = REGISTERED.stream()
.filter(rarity -> !rarity.getName().equalsIgnoreCase("all"))
.filter(rarity -> rarity.getMaterials().contains(material)).findFirst();
return matching.orElse(null);
}

View File

@@ -2,6 +2,7 @@ package com.willfp.reforges.reforges.util;
import com.willfp.eco.core.EcoPlugin;
import com.willfp.reforges.ReforgesPlugin;
import com.willfp.reforges.gui.ReforgeStatus;
import com.willfp.reforges.reforges.Reforge;
import com.willfp.reforges.reforges.Reforges;
import com.willfp.reforges.reforges.meta.ReforgeTarget;
@@ -46,9 +47,35 @@ public class ReforgeUtils {
Collections.shuffle(applicable);
if (applicable.isEmpty()) {
return null;
}
return applicable.get(0);
}
public static ReforgeStatus getStatus(@NotNull final List<ItemStack> captive) {
ItemStack toReforge = captive.isEmpty() ? null : captive.get(0);
ReforgeStatus status = null;
ReforgeTarget target = null;
if (toReforge == null) {
status = ReforgeStatus.NO_ITEM;
} else {
target = ReforgeTarget.getForMaterial(toReforge.getType());
if (target == null) {
status = ReforgeStatus.INVALID_ITEM;
}
}
if (target != null) {
status = ReforgeStatus.ALLOW;
}
return status;
}
/**
* Get reforge on an item.
*
@@ -82,6 +109,10 @@ public class ReforgeUtils {
PersistentDataContainer container = meta.getPersistentDataContainer();
if (!container.has(REFORGE_KEY, PersistentDataType.STRING)) {
return null;
}
String active = container.get(REFORGE_KEY, PersistentDataType.STRING);
return Reforges.getByKey(active);

View File

@@ -32,7 +32,7 @@ gui:
sound:
id: BLOCK_ANVIL_USE
pitch: 0.8
pitch: 1
reforge:
cost: 5000
@@ -40,10 +40,16 @@ reforge:
display-in-item-name: true
display-in-lore: true
show-reforgable: true
reforgable-suffix:
- ""
- "&8This item can be reforged!"
lore-suffix:
- ""
- "&fReforge: %name%"
- "&8&o%description"
- "%reforge%"
- "&7&o%description%"
targets:
melee:

View File

@@ -2,9 +2,9 @@
# Sharp Reforge
#
name: "&6Sharp"
name: "<gradient:#f12711>Sharp</gradient:#f5af19>"
enabled: true
description: "Deal &a3%&8&o more damage"
description: "Deal &a3%&7&o more damage"
config:
multiplier: 1.03 # Damage multiplier