NBT Manager will be a static abusing class for now

This commit is contained in:
nossr50 2019-09-25 18:29:30 -07:00
parent f1de5484ec
commit df6386ec2f
8 changed files with 58 additions and 68 deletions

View File

@ -2,7 +2,7 @@ package com.gmail.nossr50.bukkit;
import com.gmail.nossr50.datatypes.items.BukkitMMOItem; import com.gmail.nossr50.datatypes.items.BukkitMMOItem;
import com.gmail.nossr50.datatypes.items.MMOItem; import com.gmail.nossr50.datatypes.items.MMOItem;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.util.nbt.NBTManager;
import com.gmail.nossr50.util.nbt.RawNBT; import com.gmail.nossr50.util.nbt.RawNBT;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
@ -11,22 +11,16 @@ import org.bukkit.inventory.ItemStack;
*/ */
public class BukkitFactory { public class BukkitFactory {
private final mcMMO pluginRef;
public BukkitFactory(mcMMO pluginRef) {
this.pluginRef = pluginRef;
}
/** /**
* Creates a BukkitMMOItem which contains Bukkit implementations for the type MMOItem * Creates a BukkitMMOItem which contains Bukkit implementations for the type MMOItem
* @return a new BukkitMMOItem * @return a new BukkitMMOItem
*/ */
public MMOItem<?> createItem(String namespaceKey, int amount, RawNBT rawNBT) { public static MMOItem<?> createItem(String namespaceKey, int amount, RawNBT rawNBT) {
return new BukkitMMOItem(namespaceKey, amount, rawNBT); return new BukkitMMOItem(namespaceKey, amount, rawNBT);
} }
public MMOItem<?> createItem(ItemStack itemStack) { public static MMOItem<?> createItem(ItemStack itemStack) {
return createItem(itemStack.getType().getKey().toString(), itemStack.getAmount(), new RawNBT(pluginRef.getNbtManager().getNBT(itemStack).toString())); return createItem(itemStack.getType().getKey().toString(), itemStack.getAmount(), new RawNBT(NBTManager.getNBT(itemStack).toString()));
} }
} }

View File

@ -58,7 +58,6 @@ import com.gmail.nossr50.datatypes.skills.properties.DamageProperty;
import com.gmail.nossr50.datatypes.skills.properties.MaxBonusLevel; import com.gmail.nossr50.datatypes.skills.properties.MaxBonusLevel;
import com.gmail.nossr50.datatypes.skills.subskills.taming.TamingSummon; import com.gmail.nossr50.datatypes.skills.subskills.taming.TamingSummon;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.skills.repair.RepairCost;
import com.gmail.nossr50.skills.repair.RepairTransaction; import com.gmail.nossr50.skills.repair.RepairTransaction;
import com.gmail.nossr50.skills.repair.SimpleRepairCost; import com.gmail.nossr50.skills.repair.SimpleRepairCost;
import com.gmail.nossr50.skills.repair.repairables.Repairable; import com.gmail.nossr50.skills.repair.repairables.Repairable;
@ -262,6 +261,7 @@ public final class ConfigManager {
customSerializers.registerType(new TypeToken<FormulaType>() {}, new CustomEnumValueSerializer()); customSerializers.registerType(new TypeToken<FormulaType>() {}, new CustomEnumValueSerializer());
customSerializers.registerType(new TypeToken<MMOItem<?>>() {}, new ItemStackSerializer()); customSerializers.registerType(new TypeToken<MMOItem<?>>() {}, new ItemStackSerializer());
customSerializers.registerType(new TypeToken<Set<?>>() {}, new SetSerializer()); customSerializers.registerType(new TypeToken<Set<?>>() {}, new SetSerializer());
customSerializers.registerType(new TypeToken<SimpleRepairCost>() {}, new SimpleRepairCostSerializer());
customSerializers.registerType(TypeToken.of(TamingSummon.class), new TamingSummonSerializer()); customSerializers.registerType(TypeToken.of(TamingSummon.class), new TamingSummonSerializer());
customSerializers.registerType(TypeToken.of(Repairable.class), new RepairableSerializer()); customSerializers.registerType(TypeToken.of(Repairable.class), new RepairableSerializer());
@ -277,7 +277,6 @@ public final class ConfigManager {
customSerializers.registerType(TypeToken.of(ItemMatch.class), new CustomItemTargetSerializer()); customSerializers.registerType(TypeToken.of(ItemMatch.class), new CustomItemTargetSerializer());
customSerializers.registerType(TypeToken.of(RepairTransaction.class), new RepairTransactionSerializer()); customSerializers.registerType(TypeToken.of(RepairTransaction.class), new RepairTransactionSerializer());
customSerializers.registerType(TypeToken.of(RawNBT.class), new RawNBTSerializer()); customSerializers.registerType(TypeToken.of(RawNBT.class), new RawNBTSerializer());
customSerializers.registerType(TypeToken.of(SimpleRepairCost.class), new SimpleRepairCostSerializer());
} }
/** /**

View File

@ -9,20 +9,20 @@ import ninja.leaping.configurate.objectmapping.serialize.TypeSerializer;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
public class SimpleRepairCostSerializer implements TypeSerializer<SimpleRepairCost<?>> { public class SimpleRepairCostSerializer implements TypeSerializer<SimpleRepairCost> {
private static final String ITEM_MATCH = "Item-Match"; private static final String ITEM_MATCH = "Item-Match";
@Nullable @Nullable
@Override @Override
public SimpleRepairCost<?> deserialize(@NonNull TypeToken<?> type, @NonNull ConfigurationNode value) throws ObjectMappingException { public SimpleRepairCost deserialize(@NonNull TypeToken<?> type, @NonNull ConfigurationNode value) throws ObjectMappingException {
ItemMatch<?> itemMatch = value.getNode(ITEM_MATCH).getValue(new TypeToken<ItemMatch<?>>() {}); ItemMatch<?> itemMatch = value.getNode(ITEM_MATCH).getValue(new TypeToken<ItemMatch<?>>() {});
SimpleRepairCost<?> simpleRepairCost = new SimpleRepairCost<>(itemMatch); SimpleRepairCost<?> simpleRepairCost = new SimpleRepairCost<>(itemMatch);
return simpleRepairCost; return simpleRepairCost;
} }
@Override @Override
public void serialize(@NonNull TypeToken<?> type, @Nullable SimpleRepairCost<?> obj, @NonNull ConfigurationNode value) throws ObjectMappingException { public void serialize(@NonNull TypeToken<?> type, @Nullable SimpleRepairCost obj, @NonNull ConfigurationNode value) throws ObjectMappingException {
value.getNode(ITEM_MATCH).setValue(obj.getItemMatch()); value.getNode(ITEM_MATCH).setValue(obj.getItemMatch());
} }
} }

View File

@ -6,16 +6,13 @@ import com.gmail.nossr50.config.hocon.skills.repair.repairmastery.ConfigRepairRe
import com.gmail.nossr50.config.hocon.skills.repair.subskills.ConfigRepairSubSkills; import com.gmail.nossr50.config.hocon.skills.repair.subskills.ConfigRepairSubSkills;
import com.gmail.nossr50.datatypes.items.BukkitMMOItem; import com.gmail.nossr50.datatypes.items.BukkitMMOItem;
import com.gmail.nossr50.datatypes.items.ItemMatch; import com.gmail.nossr50.datatypes.items.ItemMatch;
import com.gmail.nossr50.datatypes.items.ItemMatchProperty;
import com.gmail.nossr50.datatypes.items.ItemWildcards; import com.gmail.nossr50.datatypes.items.ItemWildcards;
import com.gmail.nossr50.datatypes.permissions.PermissionWrapper;
import com.gmail.nossr50.skills.repair.RepairCost; import com.gmail.nossr50.skills.repair.RepairCost;
import com.gmail.nossr50.skills.repair.RepairTransaction; import com.gmail.nossr50.skills.repair.RepairTransaction;
import com.gmail.nossr50.skills.repair.SimpleRepairCost; import com.gmail.nossr50.skills.repair.SimpleRepairCost;
import com.gmail.nossr50.skills.repair.repairables.Repairable; import com.gmail.nossr50.skills.repair.repairables.Repairable;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import java.util.ArrayList; import java.util.ArrayList;

View File

@ -34,7 +34,6 @@ import com.gmail.nossr50.util.blockmeta.chunkmeta.ChunkManagerFactory;
import com.gmail.nossr50.util.commands.CommandRegistrationManager; import com.gmail.nossr50.util.commands.CommandRegistrationManager;
import com.gmail.nossr50.util.commands.CommandTools; import com.gmail.nossr50.util.commands.CommandTools;
import com.gmail.nossr50.util.experience.FormulaManager; import com.gmail.nossr50.util.experience.FormulaManager;
import com.gmail.nossr50.util.nbt.NBTManager;
import com.gmail.nossr50.util.player.NotificationManager; import com.gmail.nossr50.util.player.NotificationManager;
import com.gmail.nossr50.util.player.PlayerLevelTools; import com.gmail.nossr50.util.player.PlayerLevelTools;
import com.gmail.nossr50.util.player.UserManager; import com.gmail.nossr50.util.player.UserManager;
@ -77,7 +76,7 @@ public class mcMMO extends JavaPlugin {
private FormulaManager formulaManager; private FormulaManager formulaManager;
private NotificationManager notificationManager; private NotificationManager notificationManager;
private CommandRegistrationManager commandRegistrationManager; private CommandRegistrationManager commandRegistrationManager;
private NBTManager nbtManager; // private NBTManager nbtManager;
private WorldGuardManager worldGuardManager; private WorldGuardManager worldGuardManager;
private PartyManager partyManager; private PartyManager partyManager;
private LocaleManager localeManager; private LocaleManager localeManager;
@ -205,7 +204,7 @@ public class mcMMO extends JavaPlugin {
commandRegistrationManager = new CommandRegistrationManager(this); commandRegistrationManager = new CommandRegistrationManager(this);
commandRegistrationManager.registerCommands(); commandRegistrationManager.registerCommands();
nbtManager = new NBTManager(this); // nbtManager = new NBTManager();
//Init Chunk Manager Factory //Init Chunk Manager Factory
chunkManagerFactory = new ChunkManagerFactory(this); chunkManagerFactory = new ChunkManagerFactory(this);
@ -443,9 +442,9 @@ public class mcMMO extends JavaPlugin {
return databaseManager; return databaseManager;
} }
public NBTManager getNbtManager() { // public NBTManager getNbtManager() {
return nbtManager; // return nbtManager;
} // }
@Deprecated @Deprecated
public void setDatabaseManager(DatabaseManager newDatabaseManager) { public void setDatabaseManager(DatabaseManager newDatabaseManager) {

View File

@ -6,14 +6,14 @@ import org.bukkit.inventory.PlayerInventory;
/** /**
* Represents one item in a Repair Transaction * Represents one item in a Repair Transaction
*/ */
public interface RepairCost<T extends ItemMatch<?>> { public interface RepairCost {
/** /**
* Searches a player inventory for a matching ItemStack that can be used to pay for the repair transaction * Searches a player inventory for a matching ItemStack that can be used to pay for the repair transaction
* @param playerInventory inventory of player attempting to pay the cost * @param playerInventory inventory of player attempting to pay the cost
* @return any compatible payment items if found, can be null * @return any compatible payment items if found, can be null
*/ */
T findPayment(PlayerInventory playerInventory); ItemMatch<?> findPayment(PlayerInventory playerInventory);
/** /**
* Whether or not there is an item that can be used for this repair cost in the player's inventory * Whether or not there is an item that can be used for this repair cost in the player's inventory

View File

@ -16,7 +16,7 @@ import org.bukkit.inventory.PlayerInventory;
* This type is strictly for use with RepairTransaction, which represents the full cost of a Repair. * This type is strictly for use with RepairTransaction, which represents the full cost of a Repair.
* @see com.gmail.nossr50.skills.repair.RepairTransaction for more details * @see com.gmail.nossr50.skills.repair.RepairTransaction for more details
*/ */
public class SimpleRepairCost<T extends ItemMatch> implements RepairCost<ItemMatch<?>> { public class SimpleRepairCost<T extends ItemMatch> implements RepairCost {
private T itemMatch; private T itemMatch;

View File

@ -1,41 +1,42 @@
package com.gmail.nossr50.skills.repair.repairables; //package com.gmail.nossr50.skills.repair.repairables;
//
import com.gmail.nossr50.datatypes.items.ItemMatch; //import com.gmail.nossr50.datatypes.items.ItemMatch;
import com.gmail.nossr50.datatypes.items.ItemWildcards; //import com.gmail.nossr50.datatypes.items.ItemWildcards;
import com.gmail.nossr50.datatypes.items.MMOItem; //import com.gmail.nossr50.datatypes.items.MMOItem;
import com.gmail.nossr50.skills.repair.RepairCost; //import com.gmail.nossr50.skills.repair.RepairCost;
import com.gmail.nossr50.skills.repair.SimpleRepairCost; //import com.gmail.nossr50.skills.repair.SimpleRepairCost;
import org.bukkit.inventory.PlayerInventory; //import org.bukkit.inventory.PlayerInventory;
//
import java.util.HashSet; //import java.util.HashSet;
import java.util.Set; //import java.util.Set;
//
public class MultiRepairCost<T extends MMOItem<T>, U extends ItemMatch<T>> implements RepairCost<U> { ////Do we need this?
//public class MultiRepairCost<T extends MMOItem<T>, U extends ItemMatch<T>> implements RepairCost {
//Multiple potential item matches //
private Set<SimpleRepairCost<U>> repairCostWildcards; // //Multiple potential item matches
// private Set<SimpleRepairCost<U>> repairCostWildcards;
public MultiRepairCost(ItemWildcards<T> itemWildcards) { //
repairCostWildcards = new HashSet<>(); // public MultiRepairCost(ItemWildcards<T> itemWildcards) {
for(ItemMatch<T> wildcard : itemWildcards.getItemTargets()) { // repairCostWildcards = new HashSet<>();
SimpleRepairCost<U> simpleRepairCost = new SimpleRepairCost<U>((U)wildcard); // for(ItemMatch<T> wildcard : itemWildcards.getItemTargets()) {
repairCostWildcards.add(simpleRepairCost); // SimpleRepairCost<U> simpleRepairCost = new SimpleRepairCost<U>((U)wildcard);
} // repairCostWildcards.add(simpleRepairCost);
} // }
// }
@Override //
public U findPayment(PlayerInventory playerInventory) { // @Override
for(SimpleRepairCost simpleRepairCost : repairCostWildcards) { // public U findPayment(PlayerInventory playerInventory) {
if(simpleRepairCost.findPayment(playerInventory) != null) { // for(SimpleRepairCost simpleRepairCost : repairCostWildcards) {
return (U) simpleRepairCost.findPayment(playerInventory); // if(simpleRepairCost.findPayment(playerInventory) != null) {
} // return (U) simpleRepairCost.findPayment(playerInventory);
} // }
// }
return null; //
} // return null;
// }
@Override //
public boolean hasPayment(PlayerInventory playerInventory) { // @Override
return findPayment(playerInventory) != null; // public boolean hasPayment(PlayerInventory playerInventory) {
} // return findPayment(playerInventory) != null;
} // }
//}