mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-06-25 10:14:43 +02:00
Add tridents/crossbows to salvage
This commit is contained in:
@ -9,6 +9,7 @@ import com.gmail.nossr50.skills.salvage.salvageables.Salvageable;
|
||||
import com.gmail.nossr50.skills.salvage.salvageables.SalvageableFactory;
|
||||
import com.gmail.nossr50.util.ItemUtils;
|
||||
import com.gmail.nossr50.util.LogUtils;
|
||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -17,8 +18,6 @@ import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import static com.gmail.nossr50.util.skills.SkillUtils.getRepairAndSalvageQuantities;
|
||||
|
||||
public class SalvageConfig extends BukkitConfig {
|
||||
private final HashSet<String> notSupported;
|
||||
private Set<Salvageable> salvageables;
|
||||
@ -42,7 +41,6 @@ public class SalvageConfig extends BukkitConfig {
|
||||
Set<String> keys = section.getKeys(false);
|
||||
|
||||
//Original version of 1.16 support had maximum quantities that were bad, this fixes it
|
||||
|
||||
if (mcMMO.getUpgradeManager().shouldUpgrade(UpgradeType.FIX_NETHERITE_SALVAGE_QUANTITIES)) {
|
||||
mcMMO.p.getLogger().log(Level.INFO, "Fixing incorrect Salvage quantities on Netherite gear, this will only run once...");
|
||||
for (String namespacedkey : mcMMO.getMaterialMapStore().getNetheriteArmor()) {
|
||||
@ -59,7 +57,6 @@ public class SalvageConfig extends BukkitConfig {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (String key : keys) {
|
||||
// Validate all the things!
|
||||
List<String> reason = new ArrayList<>();
|
||||
@ -85,6 +82,8 @@ public class SalvageConfig extends BukkitConfig {
|
||||
salvageMaterialType = MaterialType.STONE;
|
||||
} else if (ItemUtils.isStringTool(salvageItem)) {
|
||||
salvageMaterialType = MaterialType.STRING;
|
||||
} else if (ItemUtils.isPrismarineTool(salvageItem)) {
|
||||
salvageMaterialType = MaterialType.PRISMARINE;
|
||||
} else if (ItemUtils.isLeatherArmor(salvageItem)) {
|
||||
salvageMaterialType = MaterialType.LEATHER;
|
||||
} else if (ItemUtils.isIronArmor(salvageItem) || ItemUtils.isIronTool(salvageItem)) {
|
||||
@ -145,7 +144,7 @@ public class SalvageConfig extends BukkitConfig {
|
||||
|
||||
// Maximum Quantity
|
||||
int maximumQuantity = itemMaterial != null
|
||||
? getRepairAndSalvageQuantities(itemMaterial, salvageMaterial)
|
||||
? SkillUtils.getRepairAndSalvageQuantities(itemMaterial, salvageMaterial)
|
||||
: config.getInt("Salvageables." + key + ".MaximumQuantity", 1);
|
||||
|
||||
if (maximumQuantity <= 0 && itemMaterial != null) {
|
||||
|
@ -11,6 +11,7 @@ public enum MaterialType {
|
||||
GOLD,
|
||||
DIAMOND,
|
||||
NETHERITE,
|
||||
PRISMARINE,
|
||||
OTHER;
|
||||
|
||||
public Material getDefaultMaterial() {
|
||||
@ -41,6 +42,8 @@ public enum MaterialType {
|
||||
return Material.getMaterial("NETHERITE_SCRAP");
|
||||
else
|
||||
return Material.DIAMOND;
|
||||
case PRISMARINE:
|
||||
return Material.PRISMARINE_CRYSTALS;
|
||||
|
||||
case OTHER:
|
||||
default:
|
||||
|
@ -35,7 +35,7 @@ import java.util.Map.Entry;
|
||||
|
||||
public class SalvageManager extends SkillManager {
|
||||
private boolean placedAnvil;
|
||||
private int lastClick;
|
||||
private int lastClick;
|
||||
|
||||
public SalvageManager(McMMOPlayer mcMMOPlayer) {
|
||||
super(mcMMOPlayer, PrimarySkillType.SALVAGE);
|
||||
|
@ -13,7 +13,8 @@ public class TrackedTamingEntity extends CancellableRunnable {
|
||||
private final @NotNull CallOfTheWildType callOfTheWildType;
|
||||
private final @NotNull Player player;
|
||||
|
||||
protected TrackedTamingEntity(@NotNull LivingEntity livingEntity, @NotNull CallOfTheWildType callOfTheWildType, @NotNull Player player) {
|
||||
public TrackedTamingEntity(@NotNull LivingEntity livingEntity, @NotNull CallOfTheWildType callOfTheWildType,
|
||||
@NotNull Player player) {
|
||||
this.player = player;
|
||||
this.callOfTheWildType = callOfTheWildType;
|
||||
this.livingEntity = livingEntity;
|
||||
|
@ -436,6 +436,10 @@ public final class ItemUtils {
|
||||
return mcMMO.getMaterialMapStore().isStringTool(item.getType().getKey().getKey());
|
||||
}
|
||||
|
||||
public static boolean isPrismarineTool(ItemStack item) {
|
||||
return mcMMO.getMaterialMapStore().isPrismarineTool(item.getType().getKey().getKey());
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see if an item is a gold tool.
|
||||
*
|
||||
|
@ -33,6 +33,7 @@ public class MaterialMapStore {
|
||||
private final @NotNull HashSet<String> ironArmor;
|
||||
private final @NotNull HashSet<String> ironTools;
|
||||
private final @NotNull HashSet<String> stringTools;
|
||||
private final @NotNull HashSet<String> prismarineTools;
|
||||
private final @NotNull HashSet<String> goldArmor;
|
||||
private final @NotNull HashSet<String> goldTools;
|
||||
private final @NotNull HashSet<String> chainmailArmor;
|
||||
@ -89,6 +90,7 @@ public class MaterialMapStore {
|
||||
bows = new HashSet<>();
|
||||
crossbows = new HashSet<>();
|
||||
stringTools = new HashSet<>();
|
||||
prismarineTools = new HashSet<>();
|
||||
tools = new HashSet<>();
|
||||
|
||||
swords = new HashSet<>();
|
||||
@ -462,7 +464,7 @@ public class MaterialMapStore {
|
||||
fillIronToolsWhiteList();
|
||||
fillGoldToolsWhiteList();
|
||||
fillDiamondToolsWhiteList();
|
||||
fillnetheriteToolsWhiteList();
|
||||
fillNetheriteToolsWhiteList();
|
||||
|
||||
fillSwords();
|
||||
fillAxes();
|
||||
@ -472,6 +474,7 @@ public class MaterialMapStore {
|
||||
fillTridents();
|
||||
fillMaces();
|
||||
fillStringTools();
|
||||
fillPrismarineTools();
|
||||
fillBows();
|
||||
fillCrossbows();
|
||||
|
||||
@ -501,6 +504,11 @@ public class MaterialMapStore {
|
||||
stringTools.add("bow");
|
||||
stringTools.add("fishing_rod");
|
||||
stringTools.add("carrot_on_a_stick");
|
||||
stringTools.add("crossbow");
|
||||
}
|
||||
|
||||
private void fillPrismarineTools() {
|
||||
prismarineTools.add("trident");
|
||||
}
|
||||
|
||||
private void fillMaces() {
|
||||
@ -674,7 +682,7 @@ public class MaterialMapStore {
|
||||
diamondTools.add("diamond_shovel");
|
||||
}
|
||||
|
||||
private void fillnetheriteToolsWhiteList() {
|
||||
private void fillNetheriteToolsWhiteList() {
|
||||
netheriteTools.add("netherite_sword");
|
||||
netheriteTools.add("netherite_axe");
|
||||
netheriteTools.add("netherite_hoe");
|
||||
@ -976,6 +984,14 @@ public class MaterialMapStore {
|
||||
return stringTools.contains(id);
|
||||
}
|
||||
|
||||
public boolean isPrismarineTool(@NotNull Material material) {
|
||||
return isPrismarineTool(material.getKey().getKey());
|
||||
}
|
||||
|
||||
public boolean isPrismarineTool(@NotNull String id) {
|
||||
return prismarineTools.contains(id);
|
||||
}
|
||||
|
||||
public boolean isGlass(@NotNull Material material) {
|
||||
return glassBlocks.contains(material.getKey().getKey());
|
||||
}
|
||||
|
@ -17,7 +17,6 @@ import java.util.concurrent.ConcurrentMap;
|
||||
|
||||
import static com.gmail.nossr50.util.MetadataService.*;
|
||||
|
||||
//TODO: Use SpawnReason where appropriate instead of MobMetaFlagType
|
||||
public final class MobMetadataUtils {
|
||||
private static final @NotNull ConcurrentMap<Entity, HashSet<MobMetaFlagType>> mobRegistry; //transient data
|
||||
private static final @NotNull EnumMap<MobMetaFlagType, NamespacedKey> mobFlagKeyMap; //used for persistent data
|
||||
|
@ -280,7 +280,11 @@ public final class SkillUtils {
|
||||
|
||||
@Nullable
|
||||
public static Material getRepairAndSalvageItem(@NotNull ItemStack inHand) {
|
||||
if (ItemUtils.isDiamondTool(inHand) || ItemUtils.isDiamondArmor(inHand)) {
|
||||
if (ItemUtils.isPrismarineTool(inHand)) {
|
||||
return Material.PRISMARINE_CRYSTALS;
|
||||
} else if (ItemUtils.isNetheriteTool(inHand) || ItemUtils.isNetheriteArmor(inHand)) {
|
||||
return Material.NETHERITE_SCRAP;
|
||||
} else if (ItemUtils.isDiamondTool(inHand) || ItemUtils.isDiamondArmor(inHand)) {
|
||||
return Material.DIAMOND;
|
||||
} else if (ItemUtils.isGoldTool(inHand) || ItemUtils.isGoldArmor(inHand)) {
|
||||
return Material.GOLD_INGOT;
|
||||
@ -306,7 +310,12 @@ public final class SkillUtils {
|
||||
public static int getRepairAndSalvageQuantities(Material itemMaterial, Material recipeMaterial) {
|
||||
int quantity = 0;
|
||||
|
||||
if (mcMMO.getMaterialMapStore().isNetheriteTool(itemMaterial) || mcMMO.getMaterialMapStore().isNetheriteArmor(itemMaterial)) {
|
||||
if (mcMMO.getMaterialMapStore().isPrismarineTool(itemMaterial)) {
|
||||
return 16;
|
||||
}
|
||||
|
||||
if (mcMMO.getMaterialMapStore().isNetheriteTool(itemMaterial)
|
||||
|| mcMMO.getMaterialMapStore().isNetheriteArmor(itemMaterial)) {
|
||||
//One netherite bar requires 4 netherite scraps
|
||||
return 4;
|
||||
}
|
||||
|
Reference in New Issue
Block a user