From cadced36aa87ebded33a832a2490539fb0c18373 Mon Sep 17 00:00:00 2001 From: Indyuce Date: Mon, 10 Aug 2020 01:49:55 +0200 Subject: [PATCH] Merged normal items and gen templates --- .../java/net/Indyuce/mmoitems/MMOItems.java | 79 +++--- .../net/Indyuce/mmoitems/api/ConfigFile.java | 3 +- .../net/Indyuce/mmoitems/api/ItemTier.java | 41 ++- .../java/net/Indyuce/mmoitems/api/Type.java | 2 +- .../Indyuce/mmoitems/api/UpgradeTemplate.java | 2 +- .../mmoitems/api/block/CustomBlock.java | 2 +- .../mmoitems/api/crafting/ConfigMMOItem.java | 2 +- .../api/crafting/StationItemOptions.java | 2 +- .../ingredient/MMOItemIngredient.java | 2 +- .../api/crafting/recipe/CraftingRecipe.java | 2 +- .../api/crafting/recipe/UpgradingRecipe.java | 4 +- .../api/crafting/trigger/MMOItemTrigger.java | 57 +++-- .../mmoitems/api/droptable/DropTable.java | 1 + .../api/droptable/item/BlockDropItem.java | 1 - .../api/droptable/{ => item}/DropItem.java | 2 +- .../api/droptable/item/MMOItemDropItem.java | 1 - .../mmoitems/api/interaction/Consumable.java | 8 +- .../mmoitems/api/interaction/GemStone.java | 4 +- .../mmoitems/api/interaction/UseItem.java | 4 +- .../mmoitems/api/item/LootBuilder.java | 62 +++++ ...ItemBuilder.java => ItemStackBuilder.java} | 6 +- .../item/{plugin => internal}/ConfigItem.java | 8 +- .../{plugin => internal}/CustomSkull.java | 2 +- .../{plugin => internal}/NamedItemStack.java | 2 +- .../crafting/CraftingRecipeDisplay.java | 4 +- .../crafting/QueueItemDisplay.java | 4 +- .../crafting/UpgradingRecipeDisplay.java | 4 +- .../identify/IdentifiedItem.java | 2 +- .../identify/UnidentifiedItem.java | 8 +- .../api/item/{ => mmoitem}/LiveMMOItem.java | 2 +- .../api/item/{ => mmoitem}/MMOItem.java | 8 +- .../api/item/{ => mmoitem}/ReadMMOItem.java | 2 +- .../item/{ => mmoitem}/VolatileMMOItem.java | 2 +- .../template/MMOItemBuilder.java} | 31 +-- .../template/MMOItemTemplate.java} | 25 +- .../template}/NameModifier.java | 2 +- .../template/TemplateModifier.java} | 15 +- .../template/loot}/ClassFilter.java | 8 +- .../api/item/template/loot/TypeFilter.java | 19 ++ .../api/itemgen/loot/LootBuilder.java | 63 ----- .../itemgen/loot/restriction/TypeFilter.java | 19 -- .../api/itemgen/tier/RandomTierInfo.java | 61 ----- .../mmoitems/api/itemgen/tier/RolledTier.java | 25 -- .../mmoitems/api/player/PlayerData.java | 2 +- .../mmoitems/api/player/PlayerStats.java | 2 +- .../{itemgen => util}/NumericStatFormula.java | 8 +- .../mmoitems/command/MMOItemsCommand.java | 81 +++--- .../mmoitems/command/UpdateItemCommand.java | 2 +- .../mmocore/load/ItemTemplateDropItem.java | 24 +- .../comp/mmocore/load/RandomItemDropItem.java | 15 +- .../comp/mythicmobs/MythicMobsHook.java | 2 +- .../mmoitems/gui/CraftingStationPreview.java | 2 +- .../mmoitems/gui/CraftingStationView.java | 2 +- .../mmoitems/gui/edition/AbilityEdition.java | 2 +- .../gui/edition/AbilityListEdition.java | 2 +- .../gui/edition/ArrowParticlesEdition.java | 2 +- .../gui/edition/CommandListEdition.java | 2 +- .../mmoitems/gui/edition/CraftingEdition.java | 2 +- .../gui/edition/EditionInventory.java | 2 +- .../mmoitems/gui/edition/ElementsEdition.java | 2 +- .../mmoitems/gui/edition/ItemEdition.java | 2 +- .../gui/edition/ItemUpdaterEdition.java | 2 +- .../gui/edition/ParticlesEdition.java | 2 +- .../mmoitems/gui/edition/RecipeEdition.java | 2 +- .../mmoitems/gui/edition/SoundsEdition.java | 2 +- .../gui/edition/UpgradingEdition.java | 4 +- .../mmoitems/gui/listener/GuiListener.java | 2 +- .../mmoitems/manager/BlockManager.java | 2 +- .../mmoitems/manager/ConfigManager.java | 63 +++-- .../mmoitems/manager/ItemGenManager.java | 156 ------------ .../Indyuce/mmoitems/manager/ItemManager.java | 238 ++++++++++-------- ...ManagerDefault.java => RecipeManager.java} | 120 ++++++++- .../Indyuce/mmoitems/manager/TierManager.java | 2 +- .../mmoitems/manager/UpdaterManager.java | 4 +- .../manager/recipe/RecipeManager.java | 130 ---------- .../manager/recipe/RecipeManagerLegacy.java | 77 ------ .../net/Indyuce/mmoitems/stat/Abilities.java | 10 +- .../java/net/Indyuce/mmoitems/stat/Armor.java | 4 +- .../Indyuce/mmoitems/stat/ArmorToughness.java | 4 +- .../Indyuce/mmoitems/stat/ArrowParticles.java | 10 +- .../Indyuce/mmoitems/stat/AttackDamage.java | 4 +- .../Indyuce/mmoitems/stat/AttackSpeed.java | 4 +- .../net/Indyuce/mmoitems/stat/Commands.java | 10 +- .../mmoitems/stat/CompatibleTypes.java | 10 +- .../net/Indyuce/mmoitems/stat/Crafting.java | 10 +- .../mmoitems/stat/CraftingPermission.java | 6 +- .../mmoitems/stat/CustomModelData.java | 6 +- .../Indyuce/mmoitems/stat/CustomSounds.java | 10 +- .../mmoitems/stat/DefaultDurability.java | 6 +- .../Indyuce/mmoitems/stat/DisplayName.java | 8 +- .../net/Indyuce/mmoitems/stat/DyeColor.java | 10 +- .../net/Indyuce/mmoitems/stat/Effects.java | 10 +- .../net/Indyuce/mmoitems/stat/Elements.java | 10 +- .../net/Indyuce/mmoitems/stat/Enchants.java | 10 +- .../net/Indyuce/mmoitems/stat/GemColor.java | 4 +- .../net/Indyuce/mmoitems/stat/GemSockets.java | 10 +- .../Indyuce/mmoitems/stat/HideEnchants.java | 6 +- .../mmoitems/stat/HidePotionEffects.java | 6 +- .../net/Indyuce/mmoitems/stat/Inedible.java | 4 +- .../Indyuce/mmoitems/stat/ItemParticles.java | 10 +- .../Indyuce/mmoitems/stat/ItemSetStat.java | 6 +- .../Indyuce/mmoitems/stat/ItemTierStat.java | 4 +- .../mmoitems/stat/ItemTypeRestriction.java | 6 +- .../mmoitems/stat/KnockbackResistance.java | 4 +- .../mmoitems/stat/LegacyDurability.java | 6 +- .../java/net/Indyuce/mmoitems/stat/Lore.java | 10 +- .../Indyuce/mmoitems/stat/LostWhenBroken.java | 4 +- .../mmoitems/stat/LuteAttackEffectStat.java | 4 +- .../mmoitems/stat/LuteAttackSoundStat.java | 4 +- .../Indyuce/mmoitems/stat/MaterialStat.java | 10 +- .../net/Indyuce/mmoitems/stat/MaxHealth.java | 4 +- .../mmoitems/stat/MaximumDurability.java | 4 +- .../Indyuce/mmoitems/stat/MovementSpeed.java | 4 +- .../net/Indyuce/mmoitems/stat/NBTTags.java | 10 +- .../mmoitems/stat/PermanentEffects.java | 12 +- .../net/Indyuce/mmoitems/stat/Permission.java | 10 +- .../Indyuce/mmoitems/stat/PickaxePower.java | 4 +- .../Indyuce/mmoitems/stat/PotionColor.java | 6 +- .../Indyuce/mmoitems/stat/PotionEffects.java | 10 +- .../Indyuce/mmoitems/stat/RepairMaterial.java | 4 +- .../Indyuce/mmoitems/stat/RequiredClass.java | 10 +- .../Indyuce/mmoitems/stat/RequiredLevel.java | 8 +- .../net/Indyuce/mmoitems/stat/Restore.java | 10 +- .../mmoitems/stat/ShieldPatternStat.java | 8 +- .../mmoitems/stat/SkullTextureStat.java | 6 +- .../net/Indyuce/mmoitems/stat/Soulbound.java | 6 +- .../Indyuce/mmoitems/stat/SoulboundLevel.java | 4 +- .../mmoitems/stat/StaffSpiritStat.java | 4 +- .../net/Indyuce/mmoitems/stat/StoredTags.java | 6 +- .../Indyuce/mmoitems/stat/Unbreakable.java | 6 +- .../Indyuce/mmoitems/stat/Unstackable.java | 4 +- .../Indyuce/mmoitems/stat/UpgradeStat.java | 10 +- .../mmoitems/stat/VanillaEatingAnimation.java | 4 +- .../Indyuce/mmoitems/stat/block/BlockID.java | 4 +- .../stat/data/ArrowParticlesData.java | 6 +- .../Indyuce/mmoitems/stat/data/ColorData.java | 6 +- .../mmoitems/stat/data/CommandListData.java | 6 +- .../mmoitems/stat/data/GemSocketsData.java | 6 +- .../mmoitems/stat/data/GemstoneData.java | 2 +- .../mmoitems/stat/data/MaterialData.java | 6 +- .../mmoitems/stat/data/ParticleData.java | 6 +- .../mmoitems/stat/data/SoundListData.java | 6 +- .../mmoitems/stat/data/StringData.java | 6 +- .../mmoitems/stat/data/StringListData.java | 6 +- .../mmoitems/stat/data/UpgradeData.java | 8 +- .../stat/data/random/RandomAbilityData.java | 6 +- .../data/random/RandomAbilityListData.java | 5 +- .../stat/data/random/RandomBooleanData.java | 5 +- .../data/random/RandomElementListData.java | 7 +- .../data/random/RandomEnchantListData.java | 7 +- .../data/random/RandomPotionEffectData.java | 6 +- .../random/RandomPotionEffectListData.java | 5 +- .../data/random/RandomRequiredLevelData.java | 6 +- .../stat/data/random/RandomRestoreData.java | 7 +- .../data/random}/RandomStatData.java | 5 +- .../mmoitems/stat/type/BooleanStat.java | 10 +- .../mmoitems/stat/type/DisableStat.java | 4 +- .../mmoitems/stat/type/DoubleStat.java | 12 +- .../mmoitems/stat/type/InternalStat.java | 4 +- .../Indyuce/mmoitems/stat/type/ItemStat.java | 10 +- .../mmoitems/stat/type/StringStat.java | 10 +- .../mmoitems/stat/type/Upgradable.java | 2 +- src/main/resources/config.yml | 20 ++ .../resources/default/generator/config.yml | 25 +- .../generator/templates/example-templates.yml | 57 +---- src/main/resources/default/item-tiers.yml | 25 ++ src/main/resources/default/item/bow.yml | 25 ++ src/main/resources/default/item/sword.yml | 29 +++ .../modifiers/example-modifiers.yml | 0 169 files changed, 1050 insertions(+), 1269 deletions(-) rename src/main/java/net/Indyuce/mmoitems/api/droptable/{ => item}/DropItem.java (95%) create mode 100644 src/main/java/net/Indyuce/mmoitems/api/item/LootBuilder.java rename src/main/java/net/Indyuce/mmoitems/api/item/build/{MMOItemBuilder.java => ItemStackBuilder.java} (98%) rename src/main/java/net/Indyuce/mmoitems/api/item/{plugin => internal}/ConfigItem.java (94%) rename src/main/java/net/Indyuce/mmoitems/api/item/{plugin => internal}/CustomSkull.java (97%) rename src/main/java/net/Indyuce/mmoitems/api/item/{plugin => internal}/NamedItemStack.java (88%) rename src/main/java/net/Indyuce/mmoitems/api/item/{plugin => internal}/crafting/CraftingRecipeDisplay.java (97%) rename src/main/java/net/Indyuce/mmoitems/api/item/{plugin => internal}/crafting/QueueItemDisplay.java (96%) rename src/main/java/net/Indyuce/mmoitems/api/item/{plugin => internal}/crafting/UpgradingRecipeDisplay.java (96%) rename src/main/java/net/Indyuce/mmoitems/api/item/{plugin => internal}/identify/IdentifiedItem.java (94%) rename src/main/java/net/Indyuce/mmoitems/api/item/{plugin => internal}/identify/UnidentifiedItem.java (94%) rename src/main/java/net/Indyuce/mmoitems/api/item/{ => mmoitem}/LiveMMOItem.java (91%) rename src/main/java/net/Indyuce/mmoitems/api/item/{ => mmoitem}/MMOItem.java (91%) rename src/main/java/net/Indyuce/mmoitems/api/item/{ => mmoitem}/ReadMMOItem.java (82%) rename src/main/java/net/Indyuce/mmoitems/api/item/{ => mmoitem}/VolatileMMOItem.java (92%) rename src/main/java/net/Indyuce/mmoitems/api/{itemgen/GeneratedItemBuilder.java => item/template/MMOItemBuilder.java} (73%) rename src/main/java/net/Indyuce/mmoitems/api/{itemgen/GenerationTemplate.java => item/template/MMOItemTemplate.java} (77%) rename src/main/java/net/Indyuce/mmoitems/api/{itemgen => item/template}/NameModifier.java (93%) rename src/main/java/net/Indyuce/mmoitems/api/{itemgen/GenerationModifier.java => item/template/TemplateModifier.java} (85%) rename src/main/java/net/Indyuce/mmoitems/api/{itemgen/loot/restriction => item/template/loot}/ClassFilter.java (71%) create mode 100644 src/main/java/net/Indyuce/mmoitems/api/item/template/loot/TypeFilter.java delete mode 100644 src/main/java/net/Indyuce/mmoitems/api/itemgen/loot/LootBuilder.java delete mode 100644 src/main/java/net/Indyuce/mmoitems/api/itemgen/loot/restriction/TypeFilter.java delete mode 100644 src/main/java/net/Indyuce/mmoitems/api/itemgen/tier/RandomTierInfo.java delete mode 100644 src/main/java/net/Indyuce/mmoitems/api/itemgen/tier/RolledTier.java rename src/main/java/net/Indyuce/mmoitems/api/{itemgen => util}/NumericStatFormula.java (85%) delete mode 100644 src/main/java/net/Indyuce/mmoitems/manager/ItemGenManager.java rename src/main/java/net/Indyuce/mmoitems/manager/{recipe/RecipeManagerDefault.java => RecipeManager.java} (66%) delete mode 100644 src/main/java/net/Indyuce/mmoitems/manager/recipe/RecipeManager.java delete mode 100644 src/main/java/net/Indyuce/mmoitems/manager/recipe/RecipeManagerLegacy.java rename src/main/java/net/Indyuce/mmoitems/{api/itemgen => stat/data/random}/RandomStatData.java (72%) rename src/main/resources/default/{generator => }/modifiers/example-modifiers.yml (100%) diff --git a/src/main/java/net/Indyuce/mmoitems/MMOItems.java b/src/main/java/net/Indyuce/mmoitems/MMOItems.java index e3a5274d..d40711f2 100644 --- a/src/main/java/net/Indyuce/mmoitems/MMOItems.java +++ b/src/main/java/net/Indyuce/mmoitems/MMOItems.java @@ -1,8 +1,23 @@ package net.Indyuce.mmoitems; +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Level; + +import org.apache.commons.lang.Validate; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; +import org.bukkit.event.Listener; +import org.bukkit.inventory.ItemStack; +import org.bukkit.plugin.java.JavaPlugin; + import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.SoulboundInfo; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.api.player.PlayerData; import net.Indyuce.mmoitems.command.MMOItemsCommand; import net.Indyuce.mmoitems.command.UpdateItemCommand; @@ -17,7 +32,11 @@ import net.Indyuce.mmoitems.comp.flags.DefaultFlags; import net.Indyuce.mmoitems.comp.flags.FlagPlugin; import net.Indyuce.mmoitems.comp.flags.ResidenceFlags; import net.Indyuce.mmoitems.comp.flags.WorldGuardFlags; -import net.Indyuce.mmoitems.comp.holograms.*; +import net.Indyuce.mmoitems.comp.holograms.CMIPlugin; +import net.Indyuce.mmoitems.comp.holograms.HologramSupport; +import net.Indyuce.mmoitems.comp.holograms.HologramsPlugin; +import net.Indyuce.mmoitems.comp.holograms.HolographicDisplaysPlugin; +import net.Indyuce.mmoitems.comp.holograms.TrHologramPlugin; import net.Indyuce.mmoitems.comp.inventory.DefaultPlayerInventory; import net.Indyuce.mmoitems.comp.inventory.OrnamentPlayerInventory; import net.Indyuce.mmoitems.comp.inventory.PlayerInventory; @@ -35,29 +54,34 @@ import net.Indyuce.mmoitems.comp.rpg.DefaultHook; import net.Indyuce.mmoitems.comp.rpg.RPGHandler; import net.Indyuce.mmoitems.gui.PluginInventory; import net.Indyuce.mmoitems.gui.listener.GuiListener; -import net.Indyuce.mmoitems.listener.*; +import net.Indyuce.mmoitems.listener.CraftingListener; +import net.Indyuce.mmoitems.listener.CustomBlockListener; +import net.Indyuce.mmoitems.listener.CustomSoundListener; +import net.Indyuce.mmoitems.listener.DisableInteractions; +import net.Indyuce.mmoitems.listener.DurabilityListener; +import net.Indyuce.mmoitems.listener.ElementListener; +import net.Indyuce.mmoitems.listener.ItemUse; +import net.Indyuce.mmoitems.listener.PlayerListener; import net.Indyuce.mmoitems.listener.version.Listener_v1_13; -import net.Indyuce.mmoitems.manager.*; -import net.Indyuce.mmoitems.manager.recipe.RecipeManager; -import net.Indyuce.mmoitems.manager.recipe.RecipeManagerDefault; -import net.Indyuce.mmoitems.manager.recipe.RecipeManagerLegacy; +import net.Indyuce.mmoitems.manager.AbilityManager; +import net.Indyuce.mmoitems.manager.BlockManager; +import net.Indyuce.mmoitems.manager.ConfigManager; +import net.Indyuce.mmoitems.manager.CraftingManager; +import net.Indyuce.mmoitems.manager.DropTableManager; +import net.Indyuce.mmoitems.manager.EntityManager; +import net.Indyuce.mmoitems.manager.ItemManager; +import net.Indyuce.mmoitems.manager.PluginUpdateManager; +import net.Indyuce.mmoitems.manager.RecipeManager; +import net.Indyuce.mmoitems.manager.SetManager; +import net.Indyuce.mmoitems.manager.StatManager; +import net.Indyuce.mmoitems.manager.TierManager; +import net.Indyuce.mmoitems.manager.TypeManager; +import net.Indyuce.mmoitems.manager.UpdaterManager; +import net.Indyuce.mmoitems.manager.UpgradeManager; +import net.Indyuce.mmoitems.manager.WorldGenManager; import net.mmogroup.mmolib.MMOLib; import net.mmogroup.mmolib.api.player.MMOPlayerData; import net.mmogroup.mmolib.version.SpigotPlugin; -import org.apache.commons.lang.Validate; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.event.HandlerList; -import org.bukkit.event.Listener; -import org.bukkit.inventory.ItemStack; -import org.bukkit.plugin.java.JavaPlugin; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; -import java.util.logging.Level; public class MMOItems extends JavaPlugin { public static MMOItems plugin; @@ -65,10 +89,10 @@ public class MMOItems extends JavaPlugin { private final PluginUpdateManager pluginUpdateManager = new PluginUpdateManager(); private final CraftingManager stationRecipeManager = new CraftingManager(); private final AbilityManager abilityManager = new AbilityManager(); - private final ItemGenManager itemGenerator = new ItemGenManager(); private final EntityManager entityManager = new EntityManager(); private final TypeManager typeManager = new TypeManager(); - + private final ItemManager itemManager = new ItemManager(); + private DropTableManager dropTableManager; private WorldGenManager worldGenManager; private UpgradeManager upgradeManager; @@ -78,7 +102,6 @@ public class MMOItems extends JavaPlugin { private BlockManager blockManager; private TierManager tierManager; private StatManager statManager; - private ItemManager itemManager; private SetManager setManager; private PlaceholderParser placeholderParser = new DefaultPlaceholderParser(); @@ -119,13 +142,12 @@ public class MMOItems extends JavaPlugin { abilityManager.initialize(); configManager = new ConfigManager(); - itemManager = new ItemManager(); + itemManager.reload(); tierManager = new TierManager(); setManager = new SetManager(); upgradeManager = new UpgradeManager(); dropTableManager = new DropTableManager(); dynamicUpdater = new UpdaterManager(); - itemGenerator.reload(); if (MMOLib.plugin.getVersion().isStrictlyHigher(1, 12)) { worldGenManager = new WorldGenManager(); blockManager = new BlockManager(); @@ -246,7 +268,7 @@ public class MMOItems extends JavaPlugin { // advanced recipes getLogger().log(Level.INFO, "Loading recipes, please wait..."); - recipeManager = MMOLib.plugin.getVersion().isStrictlyHigher(1, 12) ? new RecipeManagerDefault() : new RecipeManagerLegacy(); + recipeManager = new RecipeManager(); // commands getCommand("mmoitems").setExecutor(new MMOItemsCommand()); @@ -304,9 +326,6 @@ public class MMOItems extends JavaPlugin { return flagPlugin; } - public ItemGenManager getItemGenerator() { - return itemGenerator; - } public void setFlags(FlagPlugin value) { flagPlugin = value; diff --git a/src/main/java/net/Indyuce/mmoitems/api/ConfigFile.java b/src/main/java/net/Indyuce/mmoitems/api/ConfigFile.java index 1988bb81..8f841dcc 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/ConfigFile.java +++ b/src/main/java/net/Indyuce/mmoitems/api/ConfigFile.java @@ -61,13 +61,14 @@ public class ConfigFile { } } + @Deprecated public void registerItemEdition(Type type, String id) { /* * uncaches the item so it can be generated to apply newest changes in * case the same inventory is opened again. */ - MMOItems.plugin.getItems().uncache(type, id); + // MMOItems.plugin.getItems().uncache(type, id); /* * update the database UUID for the dynamic item updater diff --git a/src/main/java/net/Indyuce/mmoitems/api/ItemTier.java b/src/main/java/net/Indyuce/mmoitems/api/ItemTier.java index d4289487..24f079a2 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/ItemTier.java +++ b/src/main/java/net/Indyuce/mmoitems/api/ItemTier.java @@ -9,21 +9,27 @@ import org.bukkit.configuration.ConfigurationSection; import org.bukkit.inventory.ItemStack; import net.Indyuce.mmoitems.api.droptable.DropTable; +import net.Indyuce.mmoitems.api.util.NumericStatFormula; import net.Indyuce.mmoitems.comp.itemglow.TierColor; import net.mmogroup.mmolib.MMOLib; public class ItemTier { private final String name, id; + + // unidentification private final UnidentificationInfo unidentificationInfo; + + // deconstruction private final DropTable deconstruct; - /* - * item glow. color is an object because we cant let this class import the - * GlowAPI.Color enum since plugin is not a hard dependency. - */ + // item glow options private final TierColor color; private final boolean hint; + // item generation + private final double chance; + private final NumericStatFormula capacity; + private static final Random random = new Random(); private static final boolean glow = Bukkit.getPluginManager().getPlugin("GlowAPI") != null; @@ -39,6 +45,9 @@ public class ItemTier { } catch (NoClassDefFoundError | IllegalAccessException | NoSuchFieldException | SecurityException exception) { throw new IllegalArgumentException("Could not load tier color: " + exception.getMessage()); } + + chance = config.getDouble("generation.chance"); + capacity = config.contains("generation.capacity") ? new NumericStatFormula(config.getConfigurationSection("")) : null; } public String getId() { @@ -69,12 +78,32 @@ public class ItemTier { return hint; } + /** + * @return The chance of being chosen when a random tier is selected while + * calling an mmoitem template to generate an item. + */ + public double getGenerationChance() { + return chance; + } + + /** + * @return If the item tier has capacity ie if this tier can be applied onto + * item templates. + */ + public boolean hasCapacity() { + return capacity != null; + } + + public NumericStatFormula getCapacity() { + return capacity; + } + public UnidentificationInfo getUnidentificationInfo() { return unidentificationInfo; } - /* - * reads a random item in the drop table. + /** + * @return Reads a random item in the deconstruction drop table */ public List generateDeconstructedItem() { return hasDropTable() ? deconstruct.read(false) : new ArrayList<>(); diff --git a/src/main/java/net/Indyuce/mmoitems/api/Type.java b/src/main/java/net/Indyuce/mmoitems/api/Type.java index 39fee6fe..0fc7019e 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/Type.java +++ b/src/main/java/net/Indyuce/mmoitems/api/Type.java @@ -1,7 +1,7 @@ package net.Indyuce.mmoitems.api; import net.Indyuce.mmoitems.MMOItems; -import net.Indyuce.mmoitems.api.item.plugin.identify.UnidentifiedItem; +import net.Indyuce.mmoitems.api.item.internal.identify.UnidentifiedItem; import net.Indyuce.mmoitems.manager.TypeManager; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.MMOLib; diff --git a/src/main/java/net/Indyuce/mmoitems/api/UpgradeTemplate.java b/src/main/java/net/Indyuce/mmoitems/api/UpgradeTemplate.java index 19124a18..e1003867 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/UpgradeTemplate.java +++ b/src/main/java/net/Indyuce/mmoitems/api/UpgradeTemplate.java @@ -9,7 +9,7 @@ import org.apache.commons.lang.Validate; import org.bukkit.configuration.ConfigurationSection; import net.Indyuce.mmoitems.MMOItems; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.stat.data.type.UpgradeInfo; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.Indyuce.mmoitems.stat.type.Upgradable; diff --git a/src/main/java/net/Indyuce/mmoitems/api/block/CustomBlock.java b/src/main/java/net/Indyuce/mmoitems/api/block/CustomBlock.java index d262402c..77e80e14 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/block/CustomBlock.java +++ b/src/main/java/net/Indyuce/mmoitems/api/block/CustomBlock.java @@ -1,7 +1,7 @@ package net.Indyuce.mmoitems.api.block; import net.Indyuce.mmoitems.MMOItems; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.api.util.MushroomState; import net.Indyuce.mmoitems.stat.data.DoubleData; import net.Indyuce.mmoitems.stat.type.ItemStat; diff --git a/src/main/java/net/Indyuce/mmoitems/api/crafting/ConfigMMOItem.java b/src/main/java/net/Indyuce/mmoitems/api/crafting/ConfigMMOItem.java index 82fee443..f77d0053 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/crafting/ConfigMMOItem.java +++ b/src/main/java/net/Indyuce/mmoitems/api/crafting/ConfigMMOItem.java @@ -6,7 +6,7 @@ import org.bukkit.inventory.ItemStack; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.Type; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; public class ConfigMMOItem { private final MMOItem mmoitem; diff --git a/src/main/java/net/Indyuce/mmoitems/api/crafting/StationItemOptions.java b/src/main/java/net/Indyuce/mmoitems/api/crafting/StationItemOptions.java index 6fe15c00..25aa32a3 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/crafting/StationItemOptions.java +++ b/src/main/java/net/Indyuce/mmoitems/api/crafting/StationItemOptions.java @@ -4,7 +4,7 @@ import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.inventory.ItemStack; -import net.Indyuce.mmoitems.api.item.plugin.ConfigItem; +import net.Indyuce.mmoitems.api.item.internal.ConfigItem; public class StationItemOptions { private final ItemStack fill, noRecipe, noQueueItem; diff --git a/src/main/java/net/Indyuce/mmoitems/api/crafting/ingredient/MMOItemIngredient.java b/src/main/java/net/Indyuce/mmoitems/api/crafting/ingredient/MMOItemIngredient.java index 35cb2d4a..be5524a9 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/crafting/ingredient/MMOItemIngredient.java +++ b/src/main/java/net/Indyuce/mmoitems/api/crafting/ingredient/MMOItemIngredient.java @@ -7,7 +7,7 @@ import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.Type; import net.Indyuce.mmoitems.api.crafting.ConfigMMOItem; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.stat.DisplayName; import net.Indyuce.mmoitems.stat.data.MaterialData; import net.Indyuce.mmoitems.stat.type.ItemStat; diff --git a/src/main/java/net/Indyuce/mmoitems/api/crafting/recipe/CraftingRecipe.java b/src/main/java/net/Indyuce/mmoitems/api/crafting/recipe/CraftingRecipe.java index cf012e54..824ed835 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/crafting/recipe/CraftingRecipe.java +++ b/src/main/java/net/Indyuce/mmoitems/api/crafting/recipe/CraftingRecipe.java @@ -11,7 +11,7 @@ import net.Indyuce.mmoitems.api.crafting.CraftingStation; import net.Indyuce.mmoitems.api.crafting.CraftingStatus.CraftingQueue; import net.Indyuce.mmoitems.api.crafting.IngredientInventory; import net.Indyuce.mmoitems.api.event.crafting.PlayerUseCraftingStationEvent; -import net.Indyuce.mmoitems.api.item.plugin.ConfigItem; +import net.Indyuce.mmoitems.api.item.internal.ConfigItem; import net.Indyuce.mmoitems.api.player.PlayerData; import net.Indyuce.mmoitems.api.util.message.Message; import net.mmogroup.mmolib.api.util.SmartGive; diff --git a/src/main/java/net/Indyuce/mmoitems/api/crafting/recipe/UpgradingRecipe.java b/src/main/java/net/Indyuce/mmoitems/api/crafting/recipe/UpgradingRecipe.java index 1f7ca3af..058ba4bb 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/crafting/recipe/UpgradingRecipe.java +++ b/src/main/java/net/Indyuce/mmoitems/api/crafting/recipe/UpgradingRecipe.java @@ -15,8 +15,8 @@ import net.Indyuce.mmoitems.api.crafting.IngredientInventory.IngredientLookupMod import net.Indyuce.mmoitems.api.crafting.IngredientInventory.PlayerIngredient; import net.Indyuce.mmoitems.api.crafting.ingredient.Ingredient; import net.Indyuce.mmoitems.api.crafting.ingredient.MMOItemIngredient; -import net.Indyuce.mmoitems.api.item.LiveMMOItem; -import net.Indyuce.mmoitems.api.item.plugin.ConfigItem; +import net.Indyuce.mmoitems.api.item.internal.ConfigItem; +import net.Indyuce.mmoitems.api.item.mmoitem.LiveMMOItem; import net.Indyuce.mmoitems.api.player.PlayerData; import net.Indyuce.mmoitems.api.util.message.Message; import net.Indyuce.mmoitems.stat.data.UpgradeData; diff --git a/src/main/java/net/Indyuce/mmoitems/api/crafting/trigger/MMOItemTrigger.java b/src/main/java/net/Indyuce/mmoitems/api/crafting/trigger/MMOItemTrigger.java index 2a917205..bcb4b627 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/crafting/trigger/MMOItemTrigger.java +++ b/src/main/java/net/Indyuce/mmoitems/api/crafting/trigger/MMOItemTrigger.java @@ -1,41 +1,44 @@ package net.Indyuce.mmoitems.api.crafting.trigger; -import net.Indyuce.mmoitems.MMOItems; -import net.Indyuce.mmoitems.api.Type; -import net.Indyuce.mmoitems.api.player.PlayerData; -import net.mmogroup.mmolib.api.MMOLineConfig; -import net.mmogroup.mmolib.api.util.SmartGive; import org.apache.commons.lang.Validate; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import net.Indyuce.mmoitems.MMOItems; +import net.Indyuce.mmoitems.api.Type; +import net.Indyuce.mmoitems.api.item.template.MMOItemTemplate; +import net.Indyuce.mmoitems.api.player.PlayerData; +import net.mmogroup.mmolib.api.MMOLineConfig; +import net.mmogroup.mmolib.api.util.SmartGive; + public class MMOItemTrigger extends Trigger { - private final Type type; - private final String id; - private final int amount; + private final MMOItemTemplate template; + private final int amount; - public MMOItemTrigger(MMOLineConfig config) { - super("mmoitem"); + public MMOItemTrigger(MMOLineConfig config) { + super("mmoitem"); - config.validate("type", "id"); + config.validate("type", "id"); - String format = config.getString("type").toUpperCase().replace("-", "_").replace(" ", "_"); - Validate.isTrue(MMOItems.plugin.getTypes().has(format), "Could not find item type " + format); - type = MMOItems.plugin.getTypes().get(format); + String format = config.getString("type").toUpperCase().replace("-", "_").replace(" ", "_"); + Validate.isTrue(MMOItems.plugin.getTypes().has(format), "Could not find item type with ID '" + format + "'"); + Type type = MMOItems.plugin.getTypes().get(format); - id = config.getString("id").replace("-", "_").toUpperCase(); - amount = config.args().length > 0 ? Math.max(1, Integer.parseInt(config.args()[0])) : 1; - Validate.isTrue(type.getConfigFile().getConfig().contains(id), "Could not find item id " + id); - } + String id = config.getString("id").replace("-", "_").toUpperCase(); + Validate.isTrue(MMOItems.plugin.getItems().hasTemplate(type, id), "Could not find MMOItem with ID '" + id + "'"); - @Override - public void whenCrafting(PlayerData data) { - ItemStack item = MMOItems.plugin.getItems().getItem(type, id); - if (item == null || item.getType() == Material.AIR) - return; + template = MMOItems.plugin.getItems().getTemplate(type, id); + amount = config.args().length > 0 ? Math.max(1, Integer.parseInt(config.args()[0])) : 1; + } - item.setAmount(amount); - if (item != null && item.getType() != Material.AIR) - new SmartGive(data.getPlayer()).give(item); - } + @Override + public void whenCrafting(PlayerData data) { + ItemStack item = template.newBuilder(data.getRPG()).build().newBuilder().build(); + if (item == null || item.getType() == Material.AIR) + return; + + item.setAmount(amount); + if (item != null && item.getType() != Material.AIR) + new SmartGive(data.getPlayer()).give(item); + } } diff --git a/src/main/java/net/Indyuce/mmoitems/api/droptable/DropTable.java b/src/main/java/net/Indyuce/mmoitems/api/droptable/DropTable.java index 986301d8..a6a1bbba 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/droptable/DropTable.java +++ b/src/main/java/net/Indyuce/mmoitems/api/droptable/DropTable.java @@ -15,6 +15,7 @@ import org.bukkit.inventory.ItemStack; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.Type; import net.Indyuce.mmoitems.api.droptable.item.BlockDropItem; +import net.Indyuce.mmoitems.api.droptable.item.DropItem; import net.Indyuce.mmoitems.api.droptable.item.MMOItemDropItem; public class DropTable { diff --git a/src/main/java/net/Indyuce/mmoitems/api/droptable/item/BlockDropItem.java b/src/main/java/net/Indyuce/mmoitems/api/droptable/item/BlockDropItem.java index e01600c4..5eac3fe4 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/droptable/item/BlockDropItem.java +++ b/src/main/java/net/Indyuce/mmoitems/api/droptable/item/BlockDropItem.java @@ -3,7 +3,6 @@ package net.Indyuce.mmoitems.api.droptable.item; import org.bukkit.inventory.ItemStack; import net.Indyuce.mmoitems.MMOItems; -import net.Indyuce.mmoitems.api.droptable.DropItem; public class BlockDropItem extends DropItem { private final int blockId; diff --git a/src/main/java/net/Indyuce/mmoitems/api/droptable/DropItem.java b/src/main/java/net/Indyuce/mmoitems/api/droptable/item/DropItem.java similarity index 95% rename from src/main/java/net/Indyuce/mmoitems/api/droptable/DropItem.java rename to src/main/java/net/Indyuce/mmoitems/api/droptable/item/DropItem.java index 88991714..26f58d52 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/droptable/DropItem.java +++ b/src/main/java/net/Indyuce/mmoitems/api/droptable/item/DropItem.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmoitems.api.droptable; +package net.Indyuce.mmoitems.api.droptable.item; import java.util.Random; diff --git a/src/main/java/net/Indyuce/mmoitems/api/droptable/item/MMOItemDropItem.java b/src/main/java/net/Indyuce/mmoitems/api/droptable/item/MMOItemDropItem.java index 5fa3766d..0cffd903 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/droptable/item/MMOItemDropItem.java +++ b/src/main/java/net/Indyuce/mmoitems/api/droptable/item/MMOItemDropItem.java @@ -5,7 +5,6 @@ import org.bukkit.inventory.ItemStack; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.Type; -import net.Indyuce.mmoitems.api.droptable.DropItem; import net.Indyuce.mmoitems.api.util.RandomAmount; import net.mmogroup.mmolib.api.item.NBTItem; diff --git a/src/main/java/net/Indyuce/mmoitems/api/interaction/Consumable.java b/src/main/java/net/Indyuce/mmoitems/api/interaction/Consumable.java index a7b25cc5..4ebe1d96 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/interaction/Consumable.java +++ b/src/main/java/net/Indyuce/mmoitems/api/interaction/Consumable.java @@ -15,10 +15,10 @@ import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ItemTier; import net.Indyuce.mmoitems.api.Type; import net.Indyuce.mmoitems.api.interaction.util.DurabilityItem; -import net.Indyuce.mmoitems.api.item.LiveMMOItem; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.VolatileMMOItem; -import net.Indyuce.mmoitems.api.item.plugin.identify.IdentifiedItem; +import net.Indyuce.mmoitems.api.item.internal.identify.IdentifiedItem; +import net.Indyuce.mmoitems.api.item.mmoitem.LiveMMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.VolatileMMOItem; import net.Indyuce.mmoitems.api.util.message.Message; import net.Indyuce.mmoitems.comp.flags.FlagPlugin.CustomFlag; import net.Indyuce.mmoitems.stat.data.PotionEffectListData; diff --git a/src/main/java/net/Indyuce/mmoitems/api/interaction/GemStone.java b/src/main/java/net/Indyuce/mmoitems/api/interaction/GemStone.java index ff5f33b1..74e1e608 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/interaction/GemStone.java +++ b/src/main/java/net/Indyuce/mmoitems/api/interaction/GemStone.java @@ -7,8 +7,8 @@ import org.bukkit.inventory.ItemStack; import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.Type; -import net.Indyuce.mmoitems.api.item.LiveMMOItem; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.LiveMMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.api.util.message.Message; import net.Indyuce.mmoitems.stat.data.GemSocketsData; import net.Indyuce.mmoitems.stat.data.GemstoneData; diff --git a/src/main/java/net/Indyuce/mmoitems/api/interaction/UseItem.java b/src/main/java/net/Indyuce/mmoitems/api/interaction/UseItem.java index 85ed7a22..87d879ae 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/interaction/UseItem.java +++ b/src/main/java/net/Indyuce/mmoitems/api/interaction/UseItem.java @@ -15,8 +15,8 @@ import net.Indyuce.mmoitems.api.interaction.weapon.untargeted.Lute; import net.Indyuce.mmoitems.api.interaction.weapon.untargeted.Musket; import net.Indyuce.mmoitems.api.interaction.weapon.untargeted.Staff; import net.Indyuce.mmoitems.api.interaction.weapon.untargeted.Whip; -import net.Indyuce.mmoitems.api.item.LiveMMOItem; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.LiveMMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.api.player.PlayerData; import net.Indyuce.mmoitems.comp.flags.FlagPlugin.CustomFlag; import net.Indyuce.mmoitems.stat.data.CommandData; diff --git a/src/main/java/net/Indyuce/mmoitems/api/item/LootBuilder.java b/src/main/java/net/Indyuce/mmoitems/api/item/LootBuilder.java new file mode 100644 index 00000000..375cd66d --- /dev/null +++ b/src/main/java/net/Indyuce/mmoitems/api/item/LootBuilder.java @@ -0,0 +1,62 @@ +package net.Indyuce.mmoitems.api.item; + +import java.util.Collection; +import java.util.Optional; +import java.util.function.Predicate; + +import net.Indyuce.mmoitems.MMOItems; +import net.Indyuce.mmoitems.api.ItemTier; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.template.MMOItemTemplate; +import net.Indyuce.mmoitems.api.player.RPGPlayer; + +public class LootBuilder { + + /* + * not defined at the beginning to save extra performance, if there are 100+ + * templates this be pretty violent. TODO make type reference necessary? + */ + private final Collection all; + + /* + * options required to generate random loot + */ + private final ItemTier itemTier; + private final int itemLevel; + + public LootBuilder(RPGPlayer player, ItemTier itemTier) { + itemLevel = MMOItems.plugin.getItems().rollLevel(player.getLevel()); + this.itemTier = itemTier; + all = MMOItems.plugin.getItems().collectTemplates(); + } + + public LootBuilder(RPGPlayer player) { + itemLevel = MMOItems.plugin.getItems().rollLevel(player.getLevel()); + itemTier = MMOItems.plugin.getItems().rollTier(); + all = MMOItems.plugin.getItems().collectTemplates(); + } + + public LootBuilder(int itemLevel, ItemTier itemTier) { + this.itemLevel = itemLevel; + this.itemTier = itemTier; + all = MMOItems.plugin.getItems().collectTemplates(); + } + + public int count() { + return all.size(); + } + + public LootBuilder applyFilter(Predicate filter) { + all.removeIf(not(filter)); + return this; + } + + public MMOItem rollLoot() { + Optional found = all.stream().findAny(); + return found.isPresent() ? found.get().newBuilder(itemLevel, itemTier).build() : null; + } + + private Predicate not(Predicate predicate) { + return t -> !predicate.test(t); + } +} diff --git a/src/main/java/net/Indyuce/mmoitems/api/item/build/MMOItemBuilder.java b/src/main/java/net/Indyuce/mmoitems/api/item/build/ItemStackBuilder.java similarity index 98% rename from src/main/java/net/Indyuce/mmoitems/api/item/build/MMOItemBuilder.java rename to src/main/java/net/Indyuce/mmoitems/api/item/build/ItemStackBuilder.java index 2758f5c9..86aa550b 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/item/build/MMOItemBuilder.java +++ b/src/main/java/net/Indyuce/mmoitems/api/item/build/ItemStackBuilder.java @@ -16,7 +16,7 @@ import org.bukkit.inventory.meta.ItemMeta; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.Type; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.api.util.StatFormat; import net.Indyuce.mmoitems.stat.data.DoubleData; import net.Indyuce.mmoitems.stat.data.MaterialData; @@ -30,7 +30,7 @@ import net.mmogroup.mmolib.MMOLib; import net.mmogroup.mmolib.api.item.ItemTag; import net.mmogroup.mmolib.api.item.NBTItem; -public class MMOItemBuilder { +public class ItemStackBuilder { private MMOItem mmoitem; private final ItemStack item; @@ -47,7 +47,7 @@ public class MMOItemBuilder { * @param mmoitem * The mmoitem you want to build */ - public MMOItemBuilder(MMOItem mmoitem) { + public ItemStackBuilder(MMOItem mmoitem) { this.mmoitem = mmoitem; item = new ItemStack( diff --git a/src/main/java/net/Indyuce/mmoitems/api/item/plugin/ConfigItem.java b/src/main/java/net/Indyuce/mmoitems/api/item/internal/ConfigItem.java similarity index 94% rename from src/main/java/net/Indyuce/mmoitems/api/item/plugin/ConfigItem.java rename to src/main/java/net/Indyuce/mmoitems/api/item/internal/ConfigItem.java index 4da092a6..3abf8853 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/item/plugin/ConfigItem.java +++ b/src/main/java/net/Indyuce/mmoitems/api/item/internal/ConfigItem.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmoitems.api.item.plugin; +package net.Indyuce.mmoitems.api.item.internal; import java.util.ArrayList; import java.util.Arrays; @@ -12,9 +12,9 @@ import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -import net.Indyuce.mmoitems.api.item.plugin.crafting.CraftingRecipeDisplay; -import net.Indyuce.mmoitems.api.item.plugin.crafting.QueueItemDisplay; -import net.Indyuce.mmoitems.api.item.plugin.crafting.UpgradingRecipeDisplay; +import net.Indyuce.mmoitems.api.item.internal.crafting.CraftingRecipeDisplay; +import net.Indyuce.mmoitems.api.item.internal.crafting.QueueItemDisplay; +import net.Indyuce.mmoitems.api.item.internal.crafting.UpgradingRecipeDisplay; import net.mmogroup.mmolib.MMOLib; import net.mmogroup.mmolib.version.VersionMaterial; diff --git a/src/main/java/net/Indyuce/mmoitems/api/item/plugin/CustomSkull.java b/src/main/java/net/Indyuce/mmoitems/api/item/internal/CustomSkull.java similarity index 97% rename from src/main/java/net/Indyuce/mmoitems/api/item/plugin/CustomSkull.java rename to src/main/java/net/Indyuce/mmoitems/api/item/internal/CustomSkull.java index 17ee58b4..caaf6fc1 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/item/plugin/CustomSkull.java +++ b/src/main/java/net/Indyuce/mmoitems/api/item/internal/CustomSkull.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmoitems.api.item.plugin; +package net.Indyuce.mmoitems.api.item.internal; import java.lang.reflect.Field; import java.util.ArrayList; diff --git a/src/main/java/net/Indyuce/mmoitems/api/item/plugin/NamedItemStack.java b/src/main/java/net/Indyuce/mmoitems/api/item/internal/NamedItemStack.java similarity index 88% rename from src/main/java/net/Indyuce/mmoitems/api/item/plugin/NamedItemStack.java rename to src/main/java/net/Indyuce/mmoitems/api/item/internal/NamedItemStack.java index fcc00785..1623fd08 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/item/plugin/NamedItemStack.java +++ b/src/main/java/net/Indyuce/mmoitems/api/item/internal/NamedItemStack.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmoitems.api.item.plugin; +package net.Indyuce.mmoitems.api.item.internal; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; diff --git a/src/main/java/net/Indyuce/mmoitems/api/item/plugin/crafting/CraftingRecipeDisplay.java b/src/main/java/net/Indyuce/mmoitems/api/item/internal/crafting/CraftingRecipeDisplay.java similarity index 97% rename from src/main/java/net/Indyuce/mmoitems/api/item/plugin/crafting/CraftingRecipeDisplay.java rename to src/main/java/net/Indyuce/mmoitems/api/item/internal/crafting/CraftingRecipeDisplay.java index 57d20887..226b3c33 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/item/plugin/crafting/CraftingRecipeDisplay.java +++ b/src/main/java/net/Indyuce/mmoitems/api/item/internal/crafting/CraftingRecipeDisplay.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmoitems.api.item.plugin.crafting; +package net.Indyuce.mmoitems.api.item.internal.crafting; import java.text.DecimalFormat; import java.util.ArrayList; @@ -18,7 +18,7 @@ import net.Indyuce.mmoitems.api.crafting.ConditionalDisplay; import net.Indyuce.mmoitems.api.crafting.condition.Condition.CheckedCondition; import net.Indyuce.mmoitems.api.crafting.recipe.CraftingRecipe; import net.Indyuce.mmoitems.api.crafting.recipe.RecipeInfo; -import net.Indyuce.mmoitems.api.item.plugin.ConfigItem; +import net.Indyuce.mmoitems.api.item.internal.ConfigItem; import net.Indyuce.mmoitems.api.util.message.Message; import net.mmogroup.mmolib.MMOLib; import net.mmogroup.mmolib.api.item.ItemTag; diff --git a/src/main/java/net/Indyuce/mmoitems/api/item/plugin/crafting/QueueItemDisplay.java b/src/main/java/net/Indyuce/mmoitems/api/item/internal/crafting/QueueItemDisplay.java similarity index 96% rename from src/main/java/net/Indyuce/mmoitems/api/item/plugin/crafting/QueueItemDisplay.java rename to src/main/java/net/Indyuce/mmoitems/api/item/internal/crafting/QueueItemDisplay.java index 35600b4d..2ba287fd 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/item/plugin/crafting/QueueItemDisplay.java +++ b/src/main/java/net/Indyuce/mmoitems/api/item/internal/crafting/QueueItemDisplay.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmoitems.api.item.plugin.crafting; +package net.Indyuce.mmoitems.api.item.internal.crafting; import java.util.ArrayList; import java.util.HashMap; @@ -13,7 +13,7 @@ import org.bukkit.inventory.meta.ItemMeta; import net.Indyuce.mmoitems.api.crafting.CraftingStatus.CraftingQueue.CraftingInfo; import net.Indyuce.mmoitems.api.crafting.recipe.CraftingRecipe; -import net.Indyuce.mmoitems.api.item.plugin.ConfigItem; +import net.Indyuce.mmoitems.api.item.internal.ConfigItem; import net.mmogroup.mmolib.MMOLib; import net.mmogroup.mmolib.api.item.ItemTag; diff --git a/src/main/java/net/Indyuce/mmoitems/api/item/plugin/crafting/UpgradingRecipeDisplay.java b/src/main/java/net/Indyuce/mmoitems/api/item/internal/crafting/UpgradingRecipeDisplay.java similarity index 96% rename from src/main/java/net/Indyuce/mmoitems/api/item/plugin/crafting/UpgradingRecipeDisplay.java rename to src/main/java/net/Indyuce/mmoitems/api/item/internal/crafting/UpgradingRecipeDisplay.java index b7fcae8c..45312bca 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/item/plugin/crafting/UpgradingRecipeDisplay.java +++ b/src/main/java/net/Indyuce/mmoitems/api/item/internal/crafting/UpgradingRecipeDisplay.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmoitems.api.item.plugin.crafting; +package net.Indyuce.mmoitems.api.item.internal.crafting; import java.util.ArrayList; import java.util.HashMap; @@ -16,7 +16,7 @@ import net.Indyuce.mmoitems.api.crafting.ConditionalDisplay; import net.Indyuce.mmoitems.api.crafting.condition.Condition.CheckedCondition; import net.Indyuce.mmoitems.api.crafting.recipe.RecipeInfo; import net.Indyuce.mmoitems.api.crafting.recipe.UpgradingRecipe; -import net.Indyuce.mmoitems.api.item.plugin.ConfigItem; +import net.Indyuce.mmoitems.api.item.internal.ConfigItem; import net.mmogroup.mmolib.MMOLib; import net.mmogroup.mmolib.api.item.ItemTag; diff --git a/src/main/java/net/Indyuce/mmoitems/api/item/plugin/identify/IdentifiedItem.java b/src/main/java/net/Indyuce/mmoitems/api/item/internal/identify/IdentifiedItem.java similarity index 94% rename from src/main/java/net/Indyuce/mmoitems/api/item/plugin/identify/IdentifiedItem.java rename to src/main/java/net/Indyuce/mmoitems/api/item/internal/identify/IdentifiedItem.java index 61dba4d5..921a0901 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/item/plugin/identify/IdentifiedItem.java +++ b/src/main/java/net/Indyuce/mmoitems/api/item/internal/identify/IdentifiedItem.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmoitems.api.item.plugin.identify; +package net.Indyuce.mmoitems.api.item.internal.identify; import java.io.ByteArrayInputStream; import java.io.IOException; diff --git a/src/main/java/net/Indyuce/mmoitems/api/item/plugin/identify/UnidentifiedItem.java b/src/main/java/net/Indyuce/mmoitems/api/item/internal/identify/UnidentifiedItem.java similarity index 94% rename from src/main/java/net/Indyuce/mmoitems/api/item/plugin/identify/UnidentifiedItem.java rename to src/main/java/net/Indyuce/mmoitems/api/item/internal/identify/UnidentifiedItem.java index d90a719d..c9591cce 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/item/plugin/identify/UnidentifiedItem.java +++ b/src/main/java/net/Indyuce/mmoitems/api/item/internal/identify/UnidentifiedItem.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmoitems.api.item.plugin.identify; +package net.Indyuce.mmoitems.api.item.internal.identify; import java.io.ByteArrayOutputStream; import java.util.ArrayList; @@ -17,9 +17,9 @@ import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ItemTier; import net.Indyuce.mmoitems.api.Type; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.VolatileMMOItem; -import net.Indyuce.mmoitems.api.item.plugin.ConfigItem; +import net.Indyuce.mmoitems.api.item.internal.ConfigItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.VolatileMMOItem; import net.Indyuce.mmoitems.stat.data.DoubleData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.MMOLib; diff --git a/src/main/java/net/Indyuce/mmoitems/api/item/LiveMMOItem.java b/src/main/java/net/Indyuce/mmoitems/api/item/mmoitem/LiveMMOItem.java similarity index 91% rename from src/main/java/net/Indyuce/mmoitems/api/item/LiveMMOItem.java rename to src/main/java/net/Indyuce/mmoitems/api/item/mmoitem/LiveMMOItem.java index 82477c10..3ae32f60 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/item/LiveMMOItem.java +++ b/src/main/java/net/Indyuce/mmoitems/api/item/mmoitem/LiveMMOItem.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmoitems.api.item; +package net.Indyuce.mmoitems.api.item.mmoitem; import java.util.logging.Level; diff --git a/src/main/java/net/Indyuce/mmoitems/api/item/MMOItem.java b/src/main/java/net/Indyuce/mmoitems/api/item/mmoitem/MMOItem.java similarity index 91% rename from src/main/java/net/Indyuce/mmoitems/api/item/MMOItem.java rename to src/main/java/net/Indyuce/mmoitems/api/item/mmoitem/MMOItem.java index 7dca5633..13076813 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/item/MMOItem.java +++ b/src/main/java/net/Indyuce/mmoitems/api/item/mmoitem/MMOItem.java @@ -1,11 +1,11 @@ -package net.Indyuce.mmoitems.api.item; +package net.Indyuce.mmoitems.api.item.mmoitem; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import net.Indyuce.mmoitems.api.Type; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; @@ -71,8 +71,8 @@ public class MMOItem { return stats.keySet(); } - public MMOItemBuilder newBuilder() { - return new MMOItemBuilder(this); + public ItemStackBuilder newBuilder() { + return new ItemStackBuilder(this); } /*** diff --git a/src/main/java/net/Indyuce/mmoitems/api/item/ReadMMOItem.java b/src/main/java/net/Indyuce/mmoitems/api/item/mmoitem/ReadMMOItem.java similarity index 82% rename from src/main/java/net/Indyuce/mmoitems/api/item/ReadMMOItem.java rename to src/main/java/net/Indyuce/mmoitems/api/item/mmoitem/ReadMMOItem.java index c22ab342..dccb580e 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/item/ReadMMOItem.java +++ b/src/main/java/net/Indyuce/mmoitems/api/item/mmoitem/ReadMMOItem.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmoitems.api.item; +package net.Indyuce.mmoitems.api.item.mmoitem; import net.mmogroup.mmolib.api.item.NBTItem; diff --git a/src/main/java/net/Indyuce/mmoitems/api/item/VolatileMMOItem.java b/src/main/java/net/Indyuce/mmoitems/api/item/mmoitem/VolatileMMOItem.java similarity index 92% rename from src/main/java/net/Indyuce/mmoitems/api/item/VolatileMMOItem.java rename to src/main/java/net/Indyuce/mmoitems/api/item/mmoitem/VolatileMMOItem.java index d69c72c7..f99d0a44 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/item/VolatileMMOItem.java +++ b/src/main/java/net/Indyuce/mmoitems/api/item/mmoitem/VolatileMMOItem.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmoitems.api.item; +package net.Indyuce.mmoitems.api.item.mmoitem; import java.util.logging.Level; diff --git a/src/main/java/net/Indyuce/mmoitems/api/itemgen/GeneratedItemBuilder.java b/src/main/java/net/Indyuce/mmoitems/api/item/template/MMOItemBuilder.java similarity index 73% rename from src/main/java/net/Indyuce/mmoitems/api/itemgen/GeneratedItemBuilder.java rename to src/main/java/net/Indyuce/mmoitems/api/item/template/MMOItemBuilder.java index 306e37b8..bbcc7fab 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/itemgen/GeneratedItemBuilder.java +++ b/src/main/java/net/Indyuce/mmoitems/api/item/template/MMOItemBuilder.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmoitems.api.itemgen; +package net.Indyuce.mmoitems.api.item.template; import java.util.ArrayList; import java.util.Collection; @@ -7,19 +7,20 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.itemgen.GenerationTemplate.TemplateOption; -import net.Indyuce.mmoitems.api.itemgen.NameModifier.ModifierType; -import net.Indyuce.mmoitems.api.itemgen.tier.RolledTier; +import net.Indyuce.mmoitems.MMOItems; +import net.Indyuce.mmoitems.api.ItemTier; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.template.MMOItemTemplate.TemplateOption; +import net.Indyuce.mmoitems.api.item.template.NameModifier.ModifierType; import net.Indyuce.mmoitems.stat.data.StringData; import net.Indyuce.mmoitems.stat.data.type.Mergeable; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; -public class GeneratedItemBuilder { +public class MMOItemBuilder { private final int level; private final MMOItem mmoitem; - private final RolledTier tier; + private final ItemTier tier; /* * capacity is not final because it is lowered as modifiers are applied @@ -35,20 +36,20 @@ public class GeneratedItemBuilder { /* * instance is created everytime an item is being randomly generated. */ - public GeneratedItemBuilder(GenerationTemplate template, int level, RolledTier tier) { + public MMOItemBuilder(MMOItemTemplate template, int level, ItemTier tier) { this.level = level; this.tier = tier; - this.capacity = tier.getCapacity(); + this.capacity = (tier != null ? tier.getCapacity() : MMOItems.plugin.getLanguage().defaultItemCapacity).calculate(level); this.mmoitem = new MMOItem(template.getType(), template.getId()); // apply base item data template.getBaseItemData().entrySet().forEach(entry -> applyData(entry.getKey(), entry.getValue().randomize(this))); - if (!tier.isDefault()) - mmoitem.setData(ItemStat.TIER, new StringData(tier.getTier().getId())); + if (tier != null) + mmoitem.setData(ItemStat.TIER, new StringData(tier.getId())); // roll item gen modifiers - for (GenerationModifier modifier : rollModifiers(template)) { + for (TemplateModifier modifier : rollModifiers(template)) { // roll modifier change if (!modifier.rollChance()) @@ -73,7 +74,7 @@ public class GeneratedItemBuilder { return capacity; } - public RolledTier getTier() { + public ItemTier getTier() { return tier; } @@ -112,11 +113,11 @@ public class GeneratedItemBuilder { nameModifiers.add(modifier); } - private Collection rollModifiers(GenerationTemplate template) { + private Collection rollModifiers(MMOItemTemplate template) { if (!template.hasOption(TemplateOption.ROLL_MODIFIER_CHECK_ORDER)) return template.getModifiers(); - List modifiers = new ArrayList<>(template.getModifiers()); + List modifiers = new ArrayList<>(template.getModifiers()); Collections.shuffle(modifiers); return modifiers; } diff --git a/src/main/java/net/Indyuce/mmoitems/api/itemgen/GenerationTemplate.java b/src/main/java/net/Indyuce/mmoitems/api/item/template/MMOItemTemplate.java similarity index 77% rename from src/main/java/net/Indyuce/mmoitems/api/itemgen/GenerationTemplate.java rename to src/main/java/net/Indyuce/mmoitems/api/item/template/MMOItemTemplate.java index 1d6148fe..029dfd7e 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/itemgen/GenerationTemplate.java +++ b/src/main/java/net/Indyuce/mmoitems/api/item/template/MMOItemTemplate.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmoitems.api.itemgen; +package net.Indyuce.mmoitems.api.item.template; import java.util.HashMap; import java.util.HashSet; @@ -11,22 +11,23 @@ import org.apache.commons.lang.Validate; import org.bukkit.configuration.ConfigurationSection; import net.Indyuce.mmoitems.MMOItems; +import net.Indyuce.mmoitems.api.ItemTier; import net.Indyuce.mmoitems.api.Type; -import net.Indyuce.mmoitems.api.itemgen.tier.RolledTier; import net.Indyuce.mmoitems.api.player.RPGPlayer; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.type.ItemStat; -public class GenerationTemplate { +public class MMOItemTemplate { private final String id; private final Type type; // base item data private final Map base = new HashMap<>(); - private final Set modifiers = new LinkedHashSet<>(); + private final Set modifiers = new LinkedHashSet<>(); private final Set options = new HashSet<>(); - public GenerationTemplate(ConfigurationSection config) { + public MMOItemTemplate(ConfigurationSection config) { Validate.notNull(config, "Could not load item gen template config"); this.id = config.getName().toUpperCase().replace("-", "_").replace(" ", "_"); @@ -46,7 +47,7 @@ public class GenerationTemplate { if (config.contains("modifiers")) for (String key : config.getConfigurationSection("modifiers").getKeys(false)) try { - modifiers.add(new GenerationModifier(MMOItems.plugin.getItemGenerator(), config.getConfigurationSection("modifiers." + key))); + modifiers.add(new TemplateModifier(MMOItems.plugin.getItems(), config.getConfigurationSection("modifiers." + key))); } catch (IllegalArgumentException exception) { MMOItems.plugin.getLogger().log(Level.INFO, "An error occured while trying to load modifier '" + key + "' from item gen template '" + id + "': " + exception.getMessage()); @@ -70,7 +71,7 @@ public class GenerationTemplate { return base; } - public Set getModifiers() { + public Set getModifiers() { return modifiers; } @@ -92,14 +93,14 @@ public class GenerationTemplate { * item to * @return A random item builder which scales on the player's level. */ - public GeneratedItemBuilder newBuilder(RPGPlayer player) { - int itemLevel = MMOItems.plugin.getItemGenerator().rollLevel(player.getLevel()); - RolledTier itemTier = MMOItems.plugin.getItemGenerator().rollTier(itemLevel); + public MMOItemBuilder newBuilder(RPGPlayer player) { + int itemLevel = MMOItems.plugin.getItems().rollLevel(player.getLevel()); + ItemTier itemTier = MMOItems.plugin.getItems().rollTier(); return newBuilder(itemLevel, itemTier); } - public GeneratedItemBuilder newBuilder(int itemLevel, RolledTier itemTier) { - return new GeneratedItemBuilder(this, itemLevel, itemTier); + public MMOItemBuilder newBuilder(int itemLevel, ItemTier itemTier) { + return new MMOItemBuilder(this, itemLevel, itemTier); } public enum TemplateOption { diff --git a/src/main/java/net/Indyuce/mmoitems/api/itemgen/NameModifier.java b/src/main/java/net/Indyuce/mmoitems/api/item/template/NameModifier.java similarity index 93% rename from src/main/java/net/Indyuce/mmoitems/api/itemgen/NameModifier.java rename to src/main/java/net/Indyuce/mmoitems/api/item/template/NameModifier.java index 53db5608..3f8ef50e 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/itemgen/NameModifier.java +++ b/src/main/java/net/Indyuce/mmoitems/api/item/template/NameModifier.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmoitems.api.itemgen; +package net.Indyuce.mmoitems.api.item.template; import org.apache.commons.lang.Validate; import org.bukkit.configuration.ConfigurationSection; diff --git a/src/main/java/net/Indyuce/mmoitems/api/itemgen/GenerationModifier.java b/src/main/java/net/Indyuce/mmoitems/api/item/template/TemplateModifier.java similarity index 85% rename from src/main/java/net/Indyuce/mmoitems/api/itemgen/GenerationModifier.java rename to src/main/java/net/Indyuce/mmoitems/api/item/template/TemplateModifier.java index f4b36525..748f1b62 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/itemgen/GenerationModifier.java +++ b/src/main/java/net/Indyuce/mmoitems/api/item/template/TemplateModifier.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmoitems.api.itemgen; +package net.Indyuce.mmoitems.api.item.template; import java.util.HashMap; import java.util.Map; @@ -9,11 +9,12 @@ import org.apache.commons.lang.Validate; import org.bukkit.configuration.ConfigurationSection; import net.Indyuce.mmoitems.MMOItems; -import net.Indyuce.mmoitems.api.itemgen.NameModifier.ModifierType; -import net.Indyuce.mmoitems.manager.ItemGenManager; +import net.Indyuce.mmoitems.api.item.template.NameModifier.ModifierType; +import net.Indyuce.mmoitems.manager.ItemManager; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.type.ItemStat; -public class GenerationModifier { +public class TemplateModifier { /* * not really used internally apart from letting the user locate the mod in @@ -27,7 +28,7 @@ public class GenerationModifier { private static final Random random = new Random(); - public GenerationModifier(ConfigurationSection config) { + public TemplateModifier(ConfigurationSection config) { this(null, config); } @@ -41,7 +42,7 @@ public class GenerationModifier { * @param config * The configuration section to load the modifier from */ - public GenerationModifier(ItemGenManager manager, ConfigurationSection config) { + public TemplateModifier(ItemManager manager, ConfigurationSection config) { Validate.notNull(config, "Could not read config"); id = config.getName().toLowerCase().replace("_", "-"); @@ -52,7 +53,7 @@ public class GenerationModifier { if (manager != null && config.contains("parent")) { String parentFormat = config.get("parent").toString().toLowerCase().replace("_", "-").replace(" ", "_"); Validate.isTrue(manager.hasModifier(parentFormat), "Could not find public modifier with ID '" + parentFormat + "'"); - GenerationModifier parent = manager.getModifier(parentFormat); + TemplateModifier parent = manager.getModifier(parentFormat); chance = Math.max(Math.min(config.getDouble("chance", parent.chance), 1), 0); weight = config.getDouble("weight", parent.weight); diff --git a/src/main/java/net/Indyuce/mmoitems/api/itemgen/loot/restriction/ClassFilter.java b/src/main/java/net/Indyuce/mmoitems/api/item/template/loot/ClassFilter.java similarity index 71% rename from src/main/java/net/Indyuce/mmoitems/api/itemgen/loot/restriction/ClassFilter.java rename to src/main/java/net/Indyuce/mmoitems/api/item/template/loot/ClassFilter.java index 5dfe7a7c..f0e54abc 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/itemgen/loot/restriction/ClassFilter.java +++ b/src/main/java/net/Indyuce/mmoitems/api/item/template/loot/ClassFilter.java @@ -1,13 +1,13 @@ -package net.Indyuce.mmoitems.api.itemgen.loot.restriction; +package net.Indyuce.mmoitems.api.item.template.loot; import java.util.function.Predicate; -import net.Indyuce.mmoitems.api.itemgen.GenerationTemplate; +import net.Indyuce.mmoitems.api.item.template.MMOItemTemplate; import net.Indyuce.mmoitems.api.player.RPGPlayer; import net.Indyuce.mmoitems.stat.data.StringListData; import net.Indyuce.mmoitems.stat.type.ItemStat; -public class ClassFilter implements Predicate { +public class ClassFilter implements Predicate { private final String name; public ClassFilter(RPGPlayer player) { @@ -19,7 +19,7 @@ public class ClassFilter implements Predicate { } @Override - public boolean test(GenerationTemplate template) { + public boolean test(MMOItemTemplate template) { if (!template.getBaseItemData().containsKey(ItemStat.REQUIRED_CLASS)) return true; diff --git a/src/main/java/net/Indyuce/mmoitems/api/item/template/loot/TypeFilter.java b/src/main/java/net/Indyuce/mmoitems/api/item/template/loot/TypeFilter.java new file mode 100644 index 00000000..497aec2f --- /dev/null +++ b/src/main/java/net/Indyuce/mmoitems/api/item/template/loot/TypeFilter.java @@ -0,0 +1,19 @@ +package net.Indyuce.mmoitems.api.item.template.loot; + +import java.util.function.Predicate; + +import net.Indyuce.mmoitems.api.Type; +import net.Indyuce.mmoitems.api.item.template.MMOItemTemplate; + +public class TypeFilter implements Predicate { + private final Type type; + + public TypeFilter(Type type) { + this.type = type; + } + + @Override + public boolean test(MMOItemTemplate template) { + return template.getType().equals(type); + } +} diff --git a/src/main/java/net/Indyuce/mmoitems/api/itemgen/loot/LootBuilder.java b/src/main/java/net/Indyuce/mmoitems/api/itemgen/loot/LootBuilder.java deleted file mode 100644 index 7af7d638..00000000 --- a/src/main/java/net/Indyuce/mmoitems/api/itemgen/loot/LootBuilder.java +++ /dev/null @@ -1,63 +0,0 @@ -package net.Indyuce.mmoitems.api.itemgen.loot; - -import java.util.Collection; -import java.util.Optional; -import java.util.function.Predicate; - -import net.Indyuce.mmoitems.MMOItems; -import net.Indyuce.mmoitems.api.ItemTier; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.itemgen.GenerationTemplate; -import net.Indyuce.mmoitems.api.itemgen.tier.RolledTier; -import net.Indyuce.mmoitems.api.player.RPGPlayer; - -public class LootBuilder { - - /* - * not defined at the beginning to save extra performance, if there are 100+ - * templates this be pretty violent. TODO make type reference necessary? - */ - private final Collection all; - - /* - * options required to generate random loot - */ - private final RolledTier itemTier; - private final int itemLevel; - - public LootBuilder(RPGPlayer player, ItemTier itemTier) { - itemLevel = MMOItems.plugin.getItemGenerator().rollLevel(player.getLevel()); - this.itemTier = MMOItems.plugin.getItemGenerator().getTierInfo(itemTier).roll(itemLevel); - all = MMOItems.plugin.getItemGenerator().getTemplates(); - } - - public LootBuilder(RPGPlayer player) { - itemLevel = MMOItems.plugin.getItemGenerator().rollLevel(player.getLevel()); - itemTier = MMOItems.plugin.getItemGenerator().rollTier(itemLevel); - all = MMOItems.plugin.getItemGenerator().getTemplates(); - } - - public LootBuilder(int itemLevel, RolledTier itemTier) { - this.itemLevel = itemLevel; - this.itemTier = itemTier; - all = MMOItems.plugin.getItemGenerator().getTemplates(); - } - - public int count() { - return all.size(); - } - - public LootBuilder applyFilter(Predicate filter) { - all.removeIf(not(filter)); - return this; - } - - public MMOItem rollLoot() { - Optional found = all.stream().findAny(); - return found.isPresent() ? found.get().newBuilder(itemLevel, itemTier).build() : null; - } - - private Predicate not(Predicate predicate) { - return t -> !predicate.test(t); - } -} diff --git a/src/main/java/net/Indyuce/mmoitems/api/itemgen/loot/restriction/TypeFilter.java b/src/main/java/net/Indyuce/mmoitems/api/itemgen/loot/restriction/TypeFilter.java deleted file mode 100644 index a3d9a3bf..00000000 --- a/src/main/java/net/Indyuce/mmoitems/api/itemgen/loot/restriction/TypeFilter.java +++ /dev/null @@ -1,19 +0,0 @@ -package net.Indyuce.mmoitems.api.itemgen.loot.restriction; - -import java.util.function.Predicate; - -import net.Indyuce.mmoitems.api.Type; -import net.Indyuce.mmoitems.api.itemgen.GenerationTemplate; - -public class TypeFilter implements Predicate { - private final Type type; - - public TypeFilter(Type type) { - this.type = type; - } - - @Override - public boolean test(GenerationTemplate template) { - return template.getType().equals(type); - } -} diff --git a/src/main/java/net/Indyuce/mmoitems/api/itemgen/tier/RandomTierInfo.java b/src/main/java/net/Indyuce/mmoitems/api/itemgen/tier/RandomTierInfo.java deleted file mode 100644 index a6e6dc41..00000000 --- a/src/main/java/net/Indyuce/mmoitems/api/itemgen/tier/RandomTierInfo.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.Indyuce.mmoitems.api.itemgen.tier; - -import org.apache.commons.lang.Validate; -import org.bukkit.configuration.ConfigurationSection; - -import net.Indyuce.mmoitems.MMOItems; -import net.Indyuce.mmoitems.api.ItemTier; -import net.Indyuce.mmoitems.api.itemgen.NumericStatFormula; - -public class RandomTierInfo { - private final ItemTier tier; - private final double chance; - private final NumericStatFormula capacity; - - public RandomTierInfo(ConfigurationSection config) { - Validate.notNull(config, "Config cannot be null"); - - String tierFormat = config.getName().toUpperCase().replace("-", "_").replace(" ", "_"); - Validate.isTrue(MMOItems.plugin.getTiers().has(tierFormat), "Could not find tier with ID '" + tierFormat + "'"); - tier = MMOItems.plugin.getTiers().get(tierFormat); - - chance = config.getDouble("chance"); - Validate.isTrue(chance > 0 && chance < 1, "Chance must be stricly between 0 and 1"); - - capacity = new NumericStatFormula(config.get("capacity")); - } - - /* - * constructor for the default tier: there is no need for chance or tier - * instance - */ - public RandomTierInfo(NumericStatFormula capacity) { - this(null, 0, capacity); - } - - public RandomTierInfo(ItemTier tier, double chance, NumericStatFormula capacity) { - this.tier = tier; - this.chance = chance; - this.capacity = capacity; - } - - public boolean isDefault() { - return tier == null; - } - - public ItemTier getTier() { - return tier; - } - - public NumericStatFormula getCapacity() { - return capacity; - } - - public double getChance() { - return chance; - } - - public RolledTier roll(int itemLevel) { - return new RolledTier(this, itemLevel); - } -} \ No newline at end of file diff --git a/src/main/java/net/Indyuce/mmoitems/api/itemgen/tier/RolledTier.java b/src/main/java/net/Indyuce/mmoitems/api/itemgen/tier/RolledTier.java deleted file mode 100644 index fffd38d3..00000000 --- a/src/main/java/net/Indyuce/mmoitems/api/itemgen/tier/RolledTier.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.Indyuce.mmoitems.api.itemgen.tier; - -import net.Indyuce.mmoitems.api.ItemTier; - -public class RolledTier { - private final ItemTier tier; - private final double capacity; - - public RolledTier(RandomTierInfo info, int itemLevel) { - this.tier = info.getTier(); - this.capacity = info.getCapacity().calculate(itemLevel); - } - - public boolean isDefault() { - return tier == null; - } - - public ItemTier getTier() { - return tier; - } - - public double getCapacity() { - return capacity; - } -} diff --git a/src/main/java/net/Indyuce/mmoitems/api/player/PlayerData.java b/src/main/java/net/Indyuce/mmoitems/api/player/PlayerData.java index 7cb71b9f..35029d2b 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/player/PlayerData.java +++ b/src/main/java/net/Indyuce/mmoitems/api/player/PlayerData.java @@ -32,7 +32,7 @@ import net.Indyuce.mmoitems.api.ability.Ability.CastingMode; import net.Indyuce.mmoitems.api.ability.AbilityResult; import net.Indyuce.mmoitems.api.crafting.CraftingStatus; import net.Indyuce.mmoitems.api.event.AbilityUseEvent; -import net.Indyuce.mmoitems.api.item.VolatileMMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.VolatileMMOItem; import net.Indyuce.mmoitems.api.player.PlayerStats.CachedStats; import net.Indyuce.mmoitems.comp.flags.FlagPlugin.CustomFlag; import net.Indyuce.mmoitems.comp.inventory.PlayerInventory.EquippedItem; diff --git a/src/main/java/net/Indyuce/mmoitems/api/player/PlayerStats.java b/src/main/java/net/Indyuce/mmoitems/api/player/PlayerStats.java index 16c5ab48..e8370ab6 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/player/PlayerStats.java +++ b/src/main/java/net/Indyuce/mmoitems/api/player/PlayerStats.java @@ -6,7 +6,7 @@ import java.util.Map; import org.bukkit.entity.Player; import net.Indyuce.mmoitems.MMOItems; -import net.Indyuce.mmoitems.api.item.VolatileMMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.VolatileMMOItem; import net.Indyuce.mmoitems.stat.type.AttributeStat; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.stat.StatInstance; diff --git a/src/main/java/net/Indyuce/mmoitems/api/itemgen/NumericStatFormula.java b/src/main/java/net/Indyuce/mmoitems/api/util/NumericStatFormula.java similarity index 85% rename from src/main/java/net/Indyuce/mmoitems/api/itemgen/NumericStatFormula.java rename to src/main/java/net/Indyuce/mmoitems/api/util/NumericStatFormula.java index 1a702ca1..f344ed95 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/itemgen/NumericStatFormula.java +++ b/src/main/java/net/Indyuce/mmoitems/api/util/NumericStatFormula.java @@ -1,11 +1,13 @@ -package net.Indyuce.mmoitems.api.itemgen; +package net.Indyuce.mmoitems.api.util; import java.util.Random; import org.apache.commons.lang.Validate; import org.bukkit.configuration.ConfigurationSection; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; import net.Indyuce.mmoitems.stat.data.DoubleData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; public class NumericStatFormula implements RandomStatData { @@ -31,7 +33,7 @@ public class NumericStatFormula implements RandomStatData { base = config.getDouble("base"); scale = config.getDouble("scale"); spread = config.getDouble("spread"); - maxSpread = config.getDouble("max-spread"); + maxSpread = config.getDouble("max-spread", .3); Validate.isTrue(spread >= 0, "Spread must be positive"); Validate.isTrue(maxSpread >= 0, "Max spread must be positive"); @@ -73,7 +75,7 @@ public class NumericStatFormula implements RandomStatData { } @Override - public StatData randomize(GeneratedItemBuilder builder) { + public StatData randomize(MMOItemBuilder builder) { return new DoubleData(calculate(builder.getLevel())); } } diff --git a/src/main/java/net/Indyuce/mmoitems/command/MMOItemsCommand.java b/src/main/java/net/Indyuce/mmoitems/command/MMOItemsCommand.java index 89d31391..22e40829 100644 --- a/src/main/java/net/Indyuce/mmoitems/command/MMOItemsCommand.java +++ b/src/main/java/net/Indyuce/mmoitems/command/MMOItemsCommand.java @@ -1,8 +1,33 @@ package net.Indyuce.mmoitems.command; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import org.apache.commons.lang.Validate; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.attribute.Attribute; +import org.bukkit.attribute.AttributeInstance; +import org.bukkit.attribute.AttributeModifier; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.potion.PotionEffectType; + import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; +import net.Indyuce.mmoitems.api.ItemTier; import net.Indyuce.mmoitems.api.PluginUpdate; import net.Indyuce.mmoitems.api.Type; import net.Indyuce.mmoitems.api.UpdaterData; @@ -10,13 +35,12 @@ import net.Indyuce.mmoitems.api.ability.Ability; import net.Indyuce.mmoitems.api.ability.Ability.CastingMode; import net.Indyuce.mmoitems.api.crafting.CraftingStation; import net.Indyuce.mmoitems.api.droptable.item.MMOItemDropItem; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.plugin.identify.IdentifiedItem; -import net.Indyuce.mmoitems.api.itemgen.GenerationTemplate; -import net.Indyuce.mmoitems.api.itemgen.loot.LootBuilder; -import net.Indyuce.mmoitems.api.itemgen.loot.restriction.ClassFilter; -import net.Indyuce.mmoitems.api.itemgen.loot.restriction.TypeFilter; -import net.Indyuce.mmoitems.api.itemgen.tier.RolledTier; +import net.Indyuce.mmoitems.api.item.LootBuilder; +import net.Indyuce.mmoitems.api.item.internal.identify.IdentifiedItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.template.MMOItemTemplate; +import net.Indyuce.mmoitems.api.item.template.loot.ClassFilter; +import net.Indyuce.mmoitems.api.item.template.loot.TypeFilter; import net.Indyuce.mmoitems.api.player.PlayerData; import net.Indyuce.mmoitems.api.player.RPGPlayer; import net.Indyuce.mmoitems.api.util.RandomAmount; @@ -33,25 +57,6 @@ import net.mmogroup.mmolib.MMOLib; import net.mmogroup.mmolib.api.item.ItemTag; import net.mmogroup.mmolib.api.item.NBTItem; import net.mmogroup.mmolib.api.util.SmartGive; -import org.apache.commons.lang.Validate; -import org.bukkit.*; -import org.bukkit.attribute.Attribute; -import org.bukkit.attribute.AttributeInstance; -import org.bukkit.attribute.AttributeModifier; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.enchantments.Enchantment; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemFlag; -import org.bukkit.inventory.ItemStack; -import org.bukkit.potion.PotionEffectType; - -import java.text.DecimalFormat; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; public class MMOItemsCommand implements CommandExecutor { private static final Random random = new Random(); @@ -115,22 +120,24 @@ public class MMOItemsCommand implements CommandExecutor { RPGPlayer rpgPlayer = PlayerData.get(target).getRPG(); final int itemLevel = handler.hasArgument("level") ? Integer.parseInt(handler.getValue("level")) : (handler.hasArgument("matchlevel") - ? MMOItems.plugin.getItemGenerator().rollLevel(rpgPlayer.getLevel()) + ? MMOItems.plugin.getItems().rollLevel(rpgPlayer.getLevel()) : 1 + random.nextInt(100)); - final RolledTier itemTier = handler.hasArgument("tier") ? MMOItems.plugin.getItemGenerator() - .getTierInfo(MMOItems.plugin.getTiers() - .getOrThrow(handler.getValue("tier").toUpperCase().replace("-", "_"))) - .roll(itemLevel) : MMOItems.plugin.getItemGenerator().rollTier(itemLevel); + final ItemTier itemTier = handler.hasArgument("tier") + ? MMOItems.plugin.getTiers().getOrThrow(handler.getValue("tier").toUpperCase().replace("-", "_")) + : MMOItems.plugin.getItems().rollTier(); // no need to use a LootBuilder if (handler.hasArgument("id")) { + Validate.isTrue(handler.hasArgument("type"), "You must specify a type as well."); + String format = handler.getValue("type"); + Validate.isTrue(Type.isValid(format), "Could not find type with ID '" + format + "'"); + Type type = Type.get(format); + String id = handler.getValue("id").toUpperCase().replace("-", "_"); - Validate.isTrue(MMOItems.plugin.getItemGenerator().hasTemplate(id), - "Could not find gen item with ID '" + id + "'"); - GenerationTemplate template = MMOItems.plugin.getItemGenerator().getTemplate(id); + Validate.isTrue(MMOItems.plugin.getItems().hasTemplate(type, id), "Could not find gen item with ID '" + id + "'"); + MMOItemTemplate template = MMOItems.plugin.getItems().getTemplate(type, id); ItemStack item = template.newBuilder(itemLevel, itemTier).build().newBuilder().build(); - Validate.isTrue(item != null && item.getType() != Material.AIR, - "Could not generate gen item with ID '" + id + "'"); + Validate.isTrue(item != null && item.getType() != Material.AIR, "Could not generate gen item with ID '" + id + "'"); new SmartGive(give).give(item); return true; } @@ -558,7 +565,7 @@ public class MMOItemsCommand implements CommandExecutor { MMOItems.plugin.getTiers().reload(); MMOItems.plugin.getSets().reload(); MMOItems.plugin.getUpgrades().reload(); - MMOItems.plugin.getItemGenerator().reload(); + MMOItems.plugin.getItems().reload(); if (MMOLib.plugin.getVersion().isStrictlyHigher(1, 12)) { MMOItems.plugin.getWorldGen().reload(); MMOItems.plugin.getCustomBlocks().reload(); diff --git a/src/main/java/net/Indyuce/mmoitems/command/UpdateItemCommand.java b/src/main/java/net/Indyuce/mmoitems/command/UpdateItemCommand.java index 76ef4888..c13397eb 100644 --- a/src/main/java/net/Indyuce/mmoitems/command/UpdateItemCommand.java +++ b/src/main/java/net/Indyuce/mmoitems/command/UpdateItemCommand.java @@ -10,7 +10,7 @@ import org.bukkit.inventory.ItemStack; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.Type; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.api.util.message.Message; import net.Indyuce.mmoitems.gui.edition.ItemUpdaterEdition; import net.mmogroup.mmolib.MMOLib; diff --git a/src/main/java/net/Indyuce/mmoitems/comp/mmocore/load/ItemTemplateDropItem.java b/src/main/java/net/Indyuce/mmoitems/comp/mmocore/load/ItemTemplateDropItem.java index e761ab2b..776991c1 100644 --- a/src/main/java/net/Indyuce/mmoitems/comp/mmocore/load/ItemTemplateDropItem.java +++ b/src/main/java/net/Indyuce/mmoitems/comp/mmocore/load/ItemTemplateDropItem.java @@ -4,31 +4,35 @@ import org.apache.commons.lang.Validate; import net.Indyuce.mmocore.api.loot.LootBuilder; import net.Indyuce.mmoitems.MMOItems; -import net.Indyuce.mmoitems.api.itemgen.GenerationTemplate; -import net.Indyuce.mmoitems.api.itemgen.tier.RolledTier; +import net.Indyuce.mmoitems.api.ItemTier; +import net.Indyuce.mmoitems.api.Type; +import net.Indyuce.mmoitems.api.item.template.MMOItemTemplate; import net.Indyuce.mmoitems.api.player.RPGPlayer; import net.mmogroup.mmolib.api.MMOLineConfig; public class ItemTemplateDropItem extends ItemGenerationDropItem { - private final GenerationTemplate template; + private final MMOItemTemplate template; public ItemTemplateDropItem(MMOLineConfig config) { super(config); - config.validate("id"); + config.validate("type", "id"); - String id = config.getString("id"); - Validate.isTrue(MMOItems.plugin.getItemGenerator().hasTemplate(id), "Could not find gen template with ID '" + id + "'"); - template = MMOItems.plugin.getItemGenerator().getTemplate(id); + String format = config.getString("type").toUpperCase().replace("-", "_").replace(" ", "_"); + Validate.isTrue(MMOItems.plugin.getTypes().has(format), "Could not find item type with ID '" + format + "'"); + Type type = MMOItems.plugin.getTypes().get(format); + + String id = config.getString("id").replace("-", "_").toUpperCase(); + Validate.isTrue(MMOItems.plugin.getItems().hasTemplate(type, id), "Could not find MMOItem with ID '" + id + "'"); + template = MMOItems.plugin.getItems().getTemplate(type, id); } @Override public void collect(LootBuilder builder) { RPGPlayer rpgPlayer = builder.getEntity().getMMOPlayerData().getMMOItems().getRPG(); - int itemLevel = MMOItems.plugin.getItemGenerator().rollLevel(matchLevel ? rpgPlayer.getLevel() : this.level); - RolledTier itemTier = this.tier != null ? new RolledTier(MMOItems.plugin.getItemGenerator().getTierInfo(this.tier), itemLevel) - : MMOItems.plugin.getItemGenerator().rollTier(itemLevel); + int itemLevel = MMOItems.plugin.getItems().rollLevel(matchLevel ? rpgPlayer.getLevel() : this.level); + ItemTier itemTier = this.tier != null ? this.tier : MMOItems.plugin.getItems().rollTier(); builder.addLoot(template.newBuilder(itemLevel, itemTier).build().newBuilder().build()); } diff --git a/src/main/java/net/Indyuce/mmoitems/comp/mmocore/load/RandomItemDropItem.java b/src/main/java/net/Indyuce/mmoitems/comp/mmocore/load/RandomItemDropItem.java index 7bf108ac..9a44ab8a 100644 --- a/src/main/java/net/Indyuce/mmoitems/comp/mmocore/load/RandomItemDropItem.java +++ b/src/main/java/net/Indyuce/mmoitems/comp/mmocore/load/RandomItemDropItem.java @@ -5,11 +5,11 @@ import org.bukkit.inventory.ItemStack; import net.Indyuce.mmocore.api.loot.LootBuilder; import net.Indyuce.mmoitems.MMOItems; +import net.Indyuce.mmoitems.api.ItemTier; import net.Indyuce.mmoitems.api.Type; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.itemgen.loot.restriction.ClassFilter; -import net.Indyuce.mmoitems.api.itemgen.loot.restriction.TypeFilter; -import net.Indyuce.mmoitems.api.itemgen.tier.RolledTier; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.template.loot.ClassFilter; +import net.Indyuce.mmoitems.api.item.template.loot.TypeFilter; import net.Indyuce.mmoitems.api.player.RPGPlayer; import net.mmogroup.mmolib.api.MMOLineConfig; @@ -38,11 +38,10 @@ public class RandomItemDropItem extends ItemGenerationDropItem { public void collect(LootBuilder builder) { RPGPlayer rpgPlayer = builder.getEntity().getMMOPlayerData().getMMOItems().getRPG(); - int itemLevel = MMOItems.plugin.getItemGenerator().rollLevel(matchLevel ? rpgPlayer.getLevel() : this.level); - RolledTier itemTier = this.tier != null ? new RolledTier(MMOItems.plugin.getItemGenerator().getTierInfo(this.tier), itemLevel) - : MMOItems.plugin.getItemGenerator().rollTier(itemLevel); + int itemLevel = MMOItems.plugin.getItems().rollLevel(matchLevel ? rpgPlayer.getLevel() : this.level); + ItemTier itemTier = this.tier != null ? this.tier : MMOItems.plugin.getItems().rollTier(); - net.Indyuce.mmoitems.api.itemgen.loot.LootBuilder loot = new net.Indyuce.mmoitems.api.itemgen.loot.LootBuilder(itemLevel, itemTier); + net.Indyuce.mmoitems.api.item.LootBuilder loot = new net.Indyuce.mmoitems.api.item.LootBuilder(itemLevel, itemTier); if (matchClass) loot.applyFilter(new ClassFilter(rpgPlayer)); diff --git a/src/main/java/net/Indyuce/mmoitems/comp/mythicmobs/MythicMobsHook.java b/src/main/java/net/Indyuce/mmoitems/comp/mythicmobs/MythicMobsHook.java index 106e2889..e02cd2c7 100644 --- a/src/main/java/net/Indyuce/mmoitems/comp/mythicmobs/MythicMobsHook.java +++ b/src/main/java/net/Indyuce/mmoitems/comp/mythicmobs/MythicMobsHook.java @@ -20,7 +20,7 @@ import io.lumine.xikage.mythicmobs.io.MythicLineConfig; import io.lumine.xikage.mythicmobs.skills.placeholders.Placeholder; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.Type; -import net.Indyuce.mmoitems.api.droptable.DropItem; +import net.Indyuce.mmoitems.api.droptable.item.DropItem; import net.Indyuce.mmoitems.api.droptable.item.MMOItemDropItem; import net.Indyuce.mmoitems.api.player.PlayerData; diff --git a/src/main/java/net/Indyuce/mmoitems/gui/CraftingStationPreview.java b/src/main/java/net/Indyuce/mmoitems/gui/CraftingStationPreview.java index 235b64f2..55295e94 100644 --- a/src/main/java/net/Indyuce/mmoitems/gui/CraftingStationPreview.java +++ b/src/main/java/net/Indyuce/mmoitems/gui/CraftingStationPreview.java @@ -17,7 +17,7 @@ import net.Indyuce.mmoitems.api.crafting.ingredient.Ingredient.CheckedIngredient import net.Indyuce.mmoitems.api.crafting.recipe.CraftingRecipe; import net.Indyuce.mmoitems.api.crafting.recipe.RecipeInfo; import net.Indyuce.mmoitems.api.crafting.recipe.UpgradingRecipe; -import net.Indyuce.mmoitems.api.item.plugin.ConfigItem; +import net.Indyuce.mmoitems.api.item.internal.ConfigItem; import net.Indyuce.mmoitems.api.util.message.Message; public class CraftingStationPreview extends PluginInventory { diff --git a/src/main/java/net/Indyuce/mmoitems/gui/CraftingStationView.java b/src/main/java/net/Indyuce/mmoitems/gui/CraftingStationView.java index d34f59f1..093757eb 100644 --- a/src/main/java/net/Indyuce/mmoitems/gui/CraftingStationView.java +++ b/src/main/java/net/Indyuce/mmoitems/gui/CraftingStationView.java @@ -23,7 +23,7 @@ import net.Indyuce.mmoitems.api.crafting.recipe.CraftingRecipe; import net.Indyuce.mmoitems.api.crafting.recipe.Recipe; import net.Indyuce.mmoitems.api.crafting.recipe.RecipeInfo; import net.Indyuce.mmoitems.api.event.crafting.PlayerUseCraftingStationEvent; -import net.Indyuce.mmoitems.api.item.plugin.ConfigItem; +import net.Indyuce.mmoitems.api.item.internal.ConfigItem; import net.Indyuce.mmoitems.api.player.PlayerData; import net.Indyuce.mmoitems.api.util.message.Message; import net.Indyuce.mmoitems.listener.CustomSoundListener; diff --git a/src/main/java/net/Indyuce/mmoitems/gui/edition/AbilityEdition.java b/src/main/java/net/Indyuce/mmoitems/gui/edition/AbilityEdition.java index a195d7b1..5efb3a6d 100644 --- a/src/main/java/net/Indyuce/mmoitems/gui/edition/AbilityEdition.java +++ b/src/main/java/net/Indyuce/mmoitems/gui/edition/AbilityEdition.java @@ -22,7 +22,7 @@ import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.ability.Ability; import net.Indyuce.mmoitems.api.ability.Ability.CastingMode; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.MMOLib; import net.mmogroup.mmolib.api.item.ItemTag; diff --git a/src/main/java/net/Indyuce/mmoitems/gui/edition/AbilityListEdition.java b/src/main/java/net/Indyuce/mmoitems/gui/edition/AbilityListEdition.java index 647c6d8e..eb4e5a19 100644 --- a/src/main/java/net/Indyuce/mmoitems/gui/edition/AbilityListEdition.java +++ b/src/main/java/net/Indyuce/mmoitems/gui/edition/AbilityListEdition.java @@ -20,7 +20,7 @@ import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.ability.Ability; import net.Indyuce.mmoitems.api.ability.Ability.CastingMode; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.mmogroup.mmolib.MMOLib; import net.mmogroup.mmolib.api.item.ItemTag; import net.mmogroup.mmolib.api.util.AltChar; diff --git a/src/main/java/net/Indyuce/mmoitems/gui/edition/ArrowParticlesEdition.java b/src/main/java/net/Indyuce/mmoitems/gui/edition/ArrowParticlesEdition.java index d9d79179..a968fc39 100644 --- a/src/main/java/net/Indyuce/mmoitems/gui/edition/ArrowParticlesEdition.java +++ b/src/main/java/net/Indyuce/mmoitems/gui/edition/ArrowParticlesEdition.java @@ -20,7 +20,7 @@ import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.stat.data.ParticleData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.util.AltChar; diff --git a/src/main/java/net/Indyuce/mmoitems/gui/edition/CommandListEdition.java b/src/main/java/net/Indyuce/mmoitems/gui/edition/CommandListEdition.java index 77b17470..efbee659 100644 --- a/src/main/java/net/Indyuce/mmoitems/gui/edition/CommandListEdition.java +++ b/src/main/java/net/Indyuce/mmoitems/gui/edition/CommandListEdition.java @@ -17,7 +17,7 @@ import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.MMOLib; import net.mmogroup.mmolib.api.item.ItemTag; diff --git a/src/main/java/net/Indyuce/mmoitems/gui/edition/CraftingEdition.java b/src/main/java/net/Indyuce/mmoitems/gui/edition/CraftingEdition.java index 5628d610..f13346d0 100644 --- a/src/main/java/net/Indyuce/mmoitems/gui/edition/CraftingEdition.java +++ b/src/main/java/net/Indyuce/mmoitems/gui/edition/CraftingEdition.java @@ -17,7 +17,7 @@ import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.api.recipe.CraftingType; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.MMOLib; diff --git a/src/main/java/net/Indyuce/mmoitems/gui/edition/EditionInventory.java b/src/main/java/net/Indyuce/mmoitems/gui/edition/EditionInventory.java index 9640231e..7d12f2df 100644 --- a/src/main/java/net/Indyuce/mmoitems/gui/edition/EditionInventory.java +++ b/src/main/java/net/Indyuce/mmoitems/gui/edition/EditionInventory.java @@ -13,7 +13,7 @@ import org.bukkit.inventory.meta.ItemMeta; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.gui.PluginInventory; import net.mmogroup.mmolib.api.util.AltChar; diff --git a/src/main/java/net/Indyuce/mmoitems/gui/edition/ElementsEdition.java b/src/main/java/net/Indyuce/mmoitems/gui/edition/ElementsEdition.java index ccad7f37..09136b8e 100644 --- a/src/main/java/net/Indyuce/mmoitems/gui/edition/ElementsEdition.java +++ b/src/main/java/net/Indyuce/mmoitems/gui/edition/ElementsEdition.java @@ -20,7 +20,7 @@ import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.Element; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.util.AltChar; diff --git a/src/main/java/net/Indyuce/mmoitems/gui/edition/ItemEdition.java b/src/main/java/net/Indyuce/mmoitems/gui/edition/ItemEdition.java index 8aee4c34..a7f12cb4 100644 --- a/src/main/java/net/Indyuce/mmoitems/gui/edition/ItemEdition.java +++ b/src/main/java/net/Indyuce/mmoitems/gui/edition/ItemEdition.java @@ -2,7 +2,7 @@ package net.Indyuce.mmoitems.gui.edition; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.stat.type.InternalStat; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.MMOLib; diff --git a/src/main/java/net/Indyuce/mmoitems/gui/edition/ItemUpdaterEdition.java b/src/main/java/net/Indyuce/mmoitems/gui/edition/ItemUpdaterEdition.java index faf3d27e..818c887a 100644 --- a/src/main/java/net/Indyuce/mmoitems/gui/edition/ItemUpdaterEdition.java +++ b/src/main/java/net/Indyuce/mmoitems/gui/edition/ItemUpdaterEdition.java @@ -14,7 +14,7 @@ import org.bukkit.inventory.meta.ItemMeta; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.UpdaterData; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.manager.UpdaterManager.KeepOption; import net.mmogroup.mmolib.api.util.AltChar; import net.mmogroup.mmolib.version.VersionMaterial; diff --git a/src/main/java/net/Indyuce/mmoitems/gui/edition/ParticlesEdition.java b/src/main/java/net/Indyuce/mmoitems/gui/edition/ParticlesEdition.java index fe26ab58..6f7cd940 100644 --- a/src/main/java/net/Indyuce/mmoitems/gui/edition/ParticlesEdition.java +++ b/src/main/java/net/Indyuce/mmoitems/gui/edition/ParticlesEdition.java @@ -20,7 +20,7 @@ import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.particle.api.ParticleType; import net.Indyuce.mmoitems.stat.data.ParticleData; import net.Indyuce.mmoitems.stat.type.ItemStat; diff --git a/src/main/java/net/Indyuce/mmoitems/gui/edition/RecipeEdition.java b/src/main/java/net/Indyuce/mmoitems/gui/edition/RecipeEdition.java index f523767f..bf61fc99 100644 --- a/src/main/java/net/Indyuce/mmoitems/gui/edition/RecipeEdition.java +++ b/src/main/java/net/Indyuce/mmoitems/gui/edition/RecipeEdition.java @@ -17,7 +17,7 @@ import org.bukkit.inventory.meta.ItemMeta; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.util.AltChar; diff --git a/src/main/java/net/Indyuce/mmoitems/gui/edition/SoundsEdition.java b/src/main/java/net/Indyuce/mmoitems/gui/edition/SoundsEdition.java index 2a210cc1..a601abef 100644 --- a/src/main/java/net/Indyuce/mmoitems/gui/edition/SoundsEdition.java +++ b/src/main/java/net/Indyuce/mmoitems/gui/edition/SoundsEdition.java @@ -21,7 +21,7 @@ import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.CustomSound; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.util.AltChar; diff --git a/src/main/java/net/Indyuce/mmoitems/gui/edition/UpgradingEdition.java b/src/main/java/net/Indyuce/mmoitems/gui/edition/UpgradingEdition.java index 12974b3c..4ae7efa8 100644 --- a/src/main/java/net/Indyuce/mmoitems/gui/edition/UpgradingEdition.java +++ b/src/main/java/net/Indyuce/mmoitems/gui/edition/UpgradingEdition.java @@ -18,8 +18,8 @@ import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.Type; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.plugin.NamedItemStack; +import net.Indyuce.mmoitems.api.item.internal.NamedItemStack; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.MMOLib; import net.mmogroup.mmolib.api.util.AltChar; diff --git a/src/main/java/net/Indyuce/mmoitems/gui/listener/GuiListener.java b/src/main/java/net/Indyuce/mmoitems/gui/listener/GuiListener.java index 133766b4..07b89f12 100644 --- a/src/main/java/net/Indyuce/mmoitems/gui/listener/GuiListener.java +++ b/src/main/java/net/Indyuce/mmoitems/gui/listener/GuiListener.java @@ -1,7 +1,7 @@ package net.Indyuce.mmoitems.gui.listener; import net.Indyuce.mmoitems.MMOUtils; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.gui.ItemBrowser; import net.Indyuce.mmoitems.gui.PluginInventory; import net.Indyuce.mmoitems.gui.edition.CraftingEdition; diff --git a/src/main/java/net/Indyuce/mmoitems/manager/BlockManager.java b/src/main/java/net/Indyuce/mmoitems/manager/BlockManager.java index 237fa8f5..1e3ee840 100644 --- a/src/main/java/net/Indyuce/mmoitems/manager/BlockManager.java +++ b/src/main/java/net/Indyuce/mmoitems/manager/BlockManager.java @@ -3,7 +3,7 @@ package net.Indyuce.mmoitems.manager; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.Type; import net.Indyuce.mmoitems.api.block.CustomBlock; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.api.util.MushroomState; import net.Indyuce.mmoitems.stat.data.DoubleData; import net.Indyuce.mmoitems.stat.type.ItemStat; diff --git a/src/main/java/net/Indyuce/mmoitems/manager/ConfigManager.java b/src/main/java/net/Indyuce/mmoitems/manager/ConfigManager.java index e7b943af..efa4bd0b 100644 --- a/src/main/java/net/Indyuce/mmoitems/manager/ConfigManager.java +++ b/src/main/java/net/Indyuce/mmoitems/manager/ConfigManager.java @@ -1,20 +1,5 @@ package net.Indyuce.mmoitems.manager; -import net.Indyuce.mmoitems.MMOItems; -import net.Indyuce.mmoitems.MMOUtils; -import net.Indyuce.mmoitems.api.ConfigFile; -import net.Indyuce.mmoitems.api.ability.Ability; -import net.Indyuce.mmoitems.api.ability.Ability.CastingMode; -import net.Indyuce.mmoitems.api.item.plugin.ConfigItem; -import net.Indyuce.mmoitems.api.util.message.Message; -import net.Indyuce.mmoitems.stat.LuteAttackEffectStat.LuteAttackEffect; -import net.Indyuce.mmoitems.stat.StaffSpiritStat.StaffSpirit; -import net.mmogroup.mmolib.MMOLib; -import net.mmogroup.mmolib.api.util.AltChar; -import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.potion.PotionEffectType; - import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -27,6 +12,23 @@ import java.util.jar.JarEntry; import java.util.jar.JarFile; import java.util.logging.Level; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.potion.PotionEffectType; + +import net.Indyuce.mmoitems.MMOItems; +import net.Indyuce.mmoitems.MMOUtils; +import net.Indyuce.mmoitems.api.ConfigFile; +import net.Indyuce.mmoitems.api.ability.Ability; +import net.Indyuce.mmoitems.api.ability.Ability.CastingMode; +import net.Indyuce.mmoitems.api.item.internal.ConfigItem; +import net.Indyuce.mmoitems.api.util.NumericStatFormula; +import net.Indyuce.mmoitems.api.util.message.Message; +import net.Indyuce.mmoitems.stat.LuteAttackEffectStat.LuteAttackEffect; +import net.Indyuce.mmoitems.stat.StaffSpiritStat.StaffSpirit; +import net.mmogroup.mmolib.MMOLib; +import net.mmogroup.mmolib.api.util.AltChar; + public class ConfigManager { // cached config files @@ -36,8 +38,8 @@ public class ConfigManager { public boolean abilityPlayerDamage, dodgeKnockbackEnabled, replaceMushroomDrops, worldGenEnabled, upgradeRequirementsCheck; public String healIndicatorFormat, damageIndicatorFormat, abilitySplitter; public DecimalFormat healIndicatorDecimalFormat, damageIndicatorDecimalFormat; - - public double dodgeKnockbackForce, soulboundBaseDamage, soulboundPerLvlDamage; + public double dodgeKnockbackForce, soulboundBaseDamage, soulboundPerLvlDamage, levelSpread; + public NumericStatFormula defaultItemCapacity; private static final Random random = new Random(); private static final String[] fileNames = { "abilities", "messages", "potion-effects", "stats", "items", "attack-effects" }; @@ -72,8 +74,7 @@ public class ConfigManager { String name = entries.nextElement().getName(); if (name.startsWith("default/crafting-stations/") && name.length() > "default/crafting-stations/".length()) Files.copy(MMOItems.plugin.getResource(name), - new File(MMOItems.plugin.getDataFolder() + "/crafting-stations", name.split("\\/")[2]) - .toPath()); + new File(MMOItems.plugin.getDataFolder() + "/crafting-stations", name.split("\\/")[2]).toPath()); } jarFile.close(); } catch (IOException exception) { @@ -203,6 +204,16 @@ public class ConfigManager { soulboundBaseDamage = MMOItems.plugin.getConfig().getDouble("soulbound.damage.base"); soulboundPerLvlDamage = MMOItems.plugin.getConfig().getDouble("soulbound.damage.per-lvl"); upgradeRequirementsCheck = MMOItems.plugin.getConfig().getBoolean("item-upgrade-requirements-check"); + levelSpread = MMOItems.plugin.getConfig().getDouble("item-level-spread"); + + try { + defaultItemCapacity = new NumericStatFormula(MMOItems.plugin.getConfig().getConfigurationSection("default-item-capacity")); + } catch (IllegalArgumentException exception) { + defaultItemCapacity = new NumericStatFormula(5, .05, .1, .3); + MMOItems.plugin.getLogger().log(Level.INFO, + "An error occured while trying to load default capacity formula for the item generator, using default: " + + exception.getMessage()); + } for (ConfigItem item : ConfigItem.values) item.update(items.getConfig().getConfigurationSection(item.getId())); @@ -344,6 +355,7 @@ public class ConfigManager { } } } + public static class YamlConverter { private File file; @@ -357,7 +369,10 @@ public class ConfigManager { public boolean convert() throws IOException { if (!file.exists()) - if (fileName.equalsIgnoreCase("block.yml") && new File(MMOItems.plugin.getDataFolder(), "custom-blocks.yml").exists()) { // this converts old custom-blocks.yml + if (fileName.equalsIgnoreCase("block.yml") && new File(MMOItems.plugin.getDataFolder(), "custom-blocks.yml").exists()) { // this + // converts + // old + // custom-blocks.yml file.createNewFile(); // creates the file YamlConfiguration oldConfig = YamlConfiguration.loadConfiguration(new File(MMOItems.plugin.getDataFolder(), "custom-blocks.yml")); @@ -367,10 +382,14 @@ public class ConfigManager { for (String id : oldConfig.getKeys(false)) { ConfigurationSection section = newConfig.getConfigurationSection(id); section.set("material", "STONE"); // adds material - section.set("block-id", Integer.parseInt(id)); // adds block id + section.set("block-id", Integer.parseInt(id)); // adds + // block + // id for (String node : section.getKeys(false)) { Object value = section.get(node); - if (node.equalsIgnoreCase("display-name")) { // converts name format + if (node.equalsIgnoreCase("display-name")) { // converts + // name + // format section.set("display-name", null); section.set("name", value); } diff --git a/src/main/java/net/Indyuce/mmoitems/manager/ItemGenManager.java b/src/main/java/net/Indyuce/mmoitems/manager/ItemGenManager.java deleted file mode 100644 index c6739db6..00000000 --- a/src/main/java/net/Indyuce/mmoitems/manager/ItemGenManager.java +++ /dev/null @@ -1,156 +0,0 @@ -package net.Indyuce.mmoitems.manager; - -import java.io.File; -import java.util.Collection; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Random; -import java.util.logging.Level; - -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; - -import net.Indyuce.mmoitems.MMOItems; -import net.Indyuce.mmoitems.api.ConfigFile; -import net.Indyuce.mmoitems.api.ItemTier; -import net.Indyuce.mmoitems.api.itemgen.GenerationModifier; -import net.Indyuce.mmoitems.api.itemgen.GenerationTemplate; -import net.Indyuce.mmoitems.api.itemgen.NumericStatFormula; -import net.Indyuce.mmoitems.api.itemgen.tier.RandomTierInfo; -import net.Indyuce.mmoitems.api.itemgen.tier.RolledTier; - -public class ItemGenManager { - private final Map templates = new HashMap<>(); - - /* - * bank of item modifiers which can be used anywhere in generation templates - * to make item generation easier. - */ - private final Map modifiers = new HashMap<>(); - - /* - * tiers which the item generator can use to determine how much modifier - * capacity an item has. plugin has a default capacity calculator in case - * none is specified by the user but it's best to configure it - */ - private final Map itemGenTiers = new LinkedHashMap<>(); - private RandomTierInfo defaultTier; - - /* - * config options that must be updated and that are cached here for easier - * calculations - */ - private double levelSpread; - - private static final Random random = new Random(); - - public Collection getTemplates() { - return templates.values(); - } - - public Collection getModifiers() { - return modifiers.values(); - } - - public boolean hasTemplate(String id) { - return templates.containsKey(id); - } - - public boolean hasModifier(String id) { - return modifiers.containsKey(id); - } - - public GenerationTemplate getTemplate(String id) { - return templates.get(id); - } - - public GenerationModifier getModifier(String id) { - return modifiers.get(id); - } - - public RandomTierInfo getTierInfo(ItemTier tier) { - return itemGenTiers.getOrDefault(tier, defaultTier); - } - - public void reload() { - templates.clear(); - itemGenTiers.clear(); - modifiers.clear(); - - for (File file : new File(MMOItems.plugin.getDataFolder() + "/generator/modifiers").listFiles()) { - FileConfiguration config = YamlConfiguration.loadConfiguration(file); - for (String key : config.getKeys(false)) - try { - GenerationModifier modifier = new GenerationModifier(config.getConfigurationSection(key)); - modifiers.put(modifier.getId(), modifier); - } catch (IllegalArgumentException exception) { - MMOItems.plugin.getLogger().log(Level.INFO, - "An error occured while trying to load item gen modifier '" + key + "': " + exception.getMessage()); - } - } - - for (File file : new File(MMOItems.plugin.getDataFolder() + "/generator/templates").listFiles()) { - FileConfiguration config = YamlConfiguration.loadConfiguration(file); - for (String key : config.getKeys(false)) - try { - GenerationTemplate template = new GenerationTemplate(config.getConfigurationSection(key)); - templates.put(template.getId(), template); - } catch (IllegalArgumentException exception) { - MMOItems.plugin.getLogger().log(Level.INFO, - "An error occured while trying to load item gen template '" + key + "': " + exception.getMessage()); - } - } - - FileConfiguration config = new ConfigFile("/generator", "config").getConfig(); - - levelSpread = config.getDouble("item-level-spread"); - - for (String key : config.getConfigurationSection("tiers").getKeys(false)) - if (!key.equalsIgnoreCase("default")) - try { - RandomTierInfo info = new RandomTierInfo(config.getConfigurationSection("tiers." + key)); - itemGenTiers.put(info.getTier(), info); - } catch (IllegalArgumentException exception) { - MMOItems.plugin.getLogger().log(Level.INFO, - "An error occured while trying to load item gen tier capacity formula which ID '" + key + "': " + exception.getMessage()); - } - - try { - defaultTier = new RandomTierInfo(new NumericStatFormula(config.getConfigurationSection("tiers.default.capacity"))); - } catch (IllegalArgumentException exception) { - defaultTier = new RandomTierInfo(new NumericStatFormula(5, .05, .1, .3)); - MMOItems.plugin.getLogger().log(Level.INFO, - "An error occured while trying to load default capacity formula for the item generator, using default: " - + exception.getMessage()); - } - } - - public RolledTier rollTier(int itemLevel) { - - double s = 0; - for (RandomTierInfo tier : itemGenTiers.values()) { - if (random.nextDouble() < tier.getChance() / (1 - s)) - return tier.roll(itemLevel); - - s += tier.getChance(); - } - - // default tier - return defaultTier.roll(itemLevel); - } - - /* - * formula to generate the item level. input is the player level and the - * level spread which corresponds to the standard deviation of a gaussian - * distribution centered on the player level - */ - public int rollLevel(int playerLevel) { - double found = random.nextGaussian() * levelSpread + playerLevel; - - // cannot be more than 2x the level and must be higher than 1 - found = Math.max(Math.min(2 * playerLevel, found), 1); - - return (int) found; - } -} diff --git a/src/main/java/net/Indyuce/mmoitems/manager/ItemManager.java b/src/main/java/net/Indyuce/mmoitems/manager/ItemManager.java index 92632a8e..653c6399 100644 --- a/src/main/java/net/Indyuce/mmoitems/manager/ItemManager.java +++ b/src/main/java/net/Indyuce/mmoitems/manager/ItemManager.java @@ -1,148 +1,168 @@ package net.Indyuce.mmoitems.manager; +import java.io.File; +import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; -import java.util.function.Predicate; +import java.util.Random; +import java.util.Set; import java.util.logging.Level; -import org.bukkit.configuration.ConfigurationSection; +import org.apache.commons.lang.Validate; import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.inventory.ItemStack; -import org.bukkit.scheduler.BukkitRunnable; import net.Indyuce.mmoitems.MMOItems; +import net.Indyuce.mmoitems.api.ItemTier; import net.Indyuce.mmoitems.api.Type; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.stat.type.ItemStat; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.template.MMOItemTemplate; +import net.Indyuce.mmoitems.api.item.template.TemplateModifier; +import net.Indyuce.mmoitems.api.player.PlayerData; -public class ItemManager extends BukkitRunnable { - private final Map cache = new HashMap<>(); +public class ItemManager { - public ItemManager() { - runTaskTimerAsynchronously(MMOItems.plugin, 60 * 20, 2 * 60 * 20); + /* + * registered mmoitem templates + */ + private final Map> templates = new HashMap<>(); + + /* + * bank of item modifiers which can be used anywhere in generation templates + * to make item generation easier. + */ + private final Map modifiers = new HashMap<>(); + + private static final Random random = new Random(); + + public MMOItemTemplate getTemplate(Type type, String id) { + + Validate.isTrue(templates.containsKey(type), "No template is registered with type " + type.getId() + ""); + Map templates = this.templates.get(type); + + id = id.toUpperCase().replace("-", "_").replace(" ", "_"); + Validate.isTrue(templates.containsKey(id), "No template was found with ID '" + id + "'"); + + return templates.get(id); } + public MMOItem generateMMOItem(Type type, String id, PlayerData player) { + return getTemplate(type, id).newBuilder(player.getRPG()).build(); + } + + @Deprecated public MMOItem getMMOItem(Type type, String id) { - id = id.toUpperCase().replace("-", "_").replace(" ", "_"); - - LoadedItem cached = getCachedMMOItem(type, id); - if (cached != null) { - cached.refresh(); - return cached.getItem(); - } - - FileConfiguration typeConfig = type.getConfigFile().getConfig(); - if (!typeConfig.contains(id)) - return null; - - MMOItem mmoitem = new MMOItem(type, id); - ConfigurationSection section = typeConfig.getConfigurationSection(id); - - for (ItemStat stat : type.getAvailableStats()) - if (section.contains(stat.getPath())) - try { - mmoitem.setData(stat, stat.whenInitialized(section.get(stat.getPath()))); - } catch (IllegalArgumentException exception) { - MMOItems.plugin.getLogger().log(Level.WARNING, - "Error while loading " + type.getId() + "." + id + " (" + stat.getName() + "): " + exception.getMessage()); - } - - cache(mmoitem); - return mmoitem; + return getTemplate(type, id).newBuilder(0, rollTier()).build(); } + @Deprecated public ItemStack getItem(Type type, String id) { - MMOItem item = getMMOItem(type, id); - return item == null ? null : item.newBuilder().build(); + return getMMOItem(type, id).newBuilder().build(); } - public LoadedItem getCachedMMOItem(Type type, String id) { - CachedItems cached; - return this.cache.containsKey(type) ? (cached = cache.get(type)).isCached(id) ? cached.getCached(id) : null : null; - } - - /* - * warning, this method checks the entire config file and should only be - * used when the plugin is loading. + /** + * Registers an MMOItem template internally. Can be done at any time + * + * @param template + * Template to register */ + public void registerTemplate(MMOItemTemplate template) { + Validate.notNull(template, "MMOItem template cannot be null"); + + if (!templates.containsKey(template.getType())) + templates.put(template.getType(), new HashMap<>()); + templates.get(template.getType()).put(template.getId(), template); + } + + @Deprecated public boolean hasMMOItem(Type type, String id) { + return hasTemplate(type, id); + } + + public boolean hasTemplate(Type type, String id) { id = id.toUpperCase().replace("-", "_").replace(" ", "_"); - - // check cache - if (cache.containsKey(type) && cache.get(type).isCached(id)) - return true; - - // check type config file - return type.getConfigFile().getConfig().contains(id); + return templates.containsKey(type) && templates.get(type).containsKey(id); } - public void uncache(Type type, String id) { - if (cache.containsKey(type)) - cache.get(type).emptyCache(id); + public Collection getModifiers() { + return modifiers.values(); } - private void cache(MMOItem item) { - if (!cache.containsKey(item.getType())) - cache.put(item.getType(), new CachedItems()); - cache.get(item.getType()).cache(item.getId(), item); + public boolean hasModifier(String id) { + return modifiers.containsKey(id); + } + + public TemplateModifier getModifier(String id) { + return modifiers.get(id); + } + + public ItemTier rollTier() { + + double s = 0; + for (ItemTier tier : MMOItems.plugin.getTiers().getAll()) { + if (random.nextDouble() < tier.getGenerationChance() / (1 - s)) + return tier; + + s += tier.getGenerationChance(); + } + + // default tier + return null; } /* - * every two minutes, loops through any loaded item and uncaches any if they - * have not been generated for more than 5 minutes. + * formula to generate the item level. input is the player level and the + * level spread which corresponds to the standard deviation of a gaussian + * distribution centered on the player level */ - @Override - public void run() { - cache.values().forEach(cached -> cached.removeIf(loaded -> loaded.isTimedOut())); + public int rollLevel(int playerLevel) { + double found = random.nextGaussian() * MMOItems.plugin.getLanguage().levelSpread + playerLevel; + + // cannot be more than 2x the level and must be higher than 1 + found = Math.max(Math.min(2 * playerLevel, found), 1); + + return (int) found; } - public class CachedItems { - private final Map cache = new HashMap<>(); - - public LoadedItem getCached(String id) { - return cache.get(id); - } - - public boolean isCached(String id) { - return cache.containsKey(id); - } - - public void emptyCache(String id) { - cache.remove(id); - } - - public void cache(String id, MMOItem item) { - cache.put(id, new LoadedItem(item)); - } - - public void removeIf(Predicate filter) { - cache.values().removeIf(filter); - } - } - - public class LoadedItem { - private final MMOItem item; - - private long loaded = System.currentTimeMillis(); - - public LoadedItem(MMOItem item) { - this.item = item; - } - - public void refresh() { - loaded = System.currentTimeMillis(); - } - - public MMOItem getItem() { - return item; - } - - public boolean isTimedOut() { - return loaded + 5 * 60 * 1000 < System.currentTimeMillis(); - } + /** + * @return Collects all existing mmoitem templates into a set so that it can + * be filtered afterwards to generate random loot + */ + public Set collectTemplates() { + Set templates = new HashSet<>(); + this.templates.values().forEach(map -> templates.addAll(map.values())); + return templates; } public void reload() { - cache.clear(); + templates.clear(); + modifiers.clear(); + + MMOItems.plugin.getLogger().log(Level.INFO, "Loading template modifiers, please wait.."); + for (File file : new File(MMOItems.plugin.getDataFolder() + "/generator/modifiers").listFiles()) { + FileConfiguration config = YamlConfiguration.loadConfiguration(file); + for (String key : config.getKeys(false)) + try { + TemplateModifier modifier = new TemplateModifier(config.getConfigurationSection(key)); + modifiers.put(modifier.getId(), modifier); + } catch (IllegalArgumentException exception) { + MMOItems.plugin.getLogger().log(Level.INFO, + "An error occured while trying to load item gen modifier '" + key + "': " + exception.getMessage()); + } + } + + MMOItems.plugin.getLogger().log(Level.INFO, "Loading item templates, please wait.."); + for (Type type : MMOItems.plugin.getTypes().getAll()) { + FileConfiguration config = type.getConfigFile().getConfig(); + for (String key : config.getKeys(false)) + try { + registerTemplate(new MMOItemTemplate(config.getConfigurationSection(key))); + } catch (IllegalArgumentException exception) { + MMOItems.plugin.getLogger().log(Level.INFO, + "An error occured while trying to load item gen template '" + key + "': " + exception.getMessage()); + } + } } } diff --git a/src/main/java/net/Indyuce/mmoitems/manager/recipe/RecipeManagerDefault.java b/src/main/java/net/Indyuce/mmoitems/manager/RecipeManager.java similarity index 66% rename from src/main/java/net/Indyuce/mmoitems/manager/recipe/RecipeManagerDefault.java rename to src/main/java/net/Indyuce/mmoitems/manager/RecipeManager.java index d66376cd..2e50c43a 100644 --- a/src/main/java/net/Indyuce/mmoitems/manager/recipe/RecipeManagerDefault.java +++ b/src/main/java/net/Indyuce/mmoitems/manager/RecipeManager.java @@ -1,15 +1,22 @@ -package net.Indyuce.mmoitems.manager.recipe; +package net.Indyuce.mmoitems.manager; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Iterator; import java.util.List; +import java.util.Set; import java.util.logging.Level; +import java.util.stream.Collectors; import org.bukkit.Bukkit; +import org.bukkit.Keyed; import org.bukkit.NamespacedKey; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.inventory.BlastingRecipe; import org.bukkit.inventory.CampfireRecipe; import org.bukkit.inventory.FurnaceRecipe; +import org.bukkit.inventory.Recipe; import org.bukkit.inventory.RecipeChoice; import org.bukkit.inventory.SmokingRecipe; @@ -18,12 +25,14 @@ import net.Indyuce.mmoitems.api.Type; import net.Indyuce.mmoitems.api.recipe.MMORecipeChoice; import net.Indyuce.mmoitems.api.recipe.workbench.CustomRecipe; -public class RecipeManagerDefault extends RecipeManager { - public RecipeManagerDefault() { +public class RecipeManager { + private final Set craftingRecipes = new HashSet<>(); + private final Set loadedRecipes = new HashSet<>(); + + public RecipeManager() { reload(); } - @Override public void reload() { clearCustomRecipes(); @@ -64,7 +73,6 @@ public class RecipeManagerDefault extends RecipeManager { getLoadedRecipes().forEach(recipe -> Bukkit.addRecipe(recipe.getRecipe()))); } - @Override public void registerFurnaceRecipe(Type type, String id, BurningRecipeInformation info, String number) { if (!info.getChoice().isValid()) { MMOItems.plugin.getLogger().warning("Couldn't load furnace recipe for '" + type.getId() + "." + id + "'"); @@ -109,12 +117,10 @@ public class RecipeManagerDefault extends RecipeManager { registerRecipe(key, recipe); } - @Override public void registerShapedRecipe(Type type, String id, List list) { registerRecipe(new CustomRecipe(MMOItems.plugin.getItems().getMMOItem(type, id).newBuilder().buildNBT(), list, false)); } - @Override public void registerShapelessRecipe(Type type, String id, List list) { registerRecipe(new CustomRecipe(MMOItems.plugin.getItems().getMMOItem(type, id).newBuilder().buildNBT(), list, true)); } @@ -129,4 +135,104 @@ public class RecipeManagerDefault extends RecipeManager { public RecipeChoice toBukkit(MMORecipeChoice choice) { return choice.isVanilla() ? new RecipeChoice.MaterialChoice(choice.getItem().getType()) : new RecipeChoice.ExactChoice(choice.getItem()); } + + public void registerRecipe(NamespacedKey key, Recipe recipe) { + loadedRecipes.add(new LoadedRecipe(key, recipe)); + } + + public void registerRecipe(CustomRecipe recipe) { + if (!recipe.isEmpty()) + craftingRecipes.add(recipe); + } + + public Set getLoadedRecipes() { + return loadedRecipes; + } + + public Set getCustomRecipes() { + return craftingRecipes; + } + + public Set getNamespacedKeys() { + return loadedRecipes.stream().map(recipe -> recipe.getKey()).collect(Collectors.toSet()); + } + + public void sortRecipes() { + List temporary = new ArrayList<>(); + temporary.addAll(craftingRecipes); + craftingRecipes.clear(); + craftingRecipes.addAll(temporary.stream().sorted().collect(Collectors.toList())); + } + + public void clearCustomRecipes() { + craftingRecipes.clear(); + } + + public NamespacedKey getRecipeKey(Type type, String id, String recipeType, String number) { + return new NamespacedKey(MMOItems.plugin, recipeType + "_" + type.getId() + "_" + id + "_" + number); + } + + public void reloadRecipes() { + Bukkit.getScheduler().runTask(MMOItems.plugin, () -> { + + Iterator iterator = Bukkit.recipeIterator(); + while (iterator.hasNext()) { + Recipe recipe = iterator.next(); + if (recipe instanceof Keyed && ((Keyed) recipe).getKey().getNamespace().equals("mmoitems")) + iterator.remove(); + } + + loadedRecipes.clear(); + reload(); + }); + } + + /* + * used because spigot API does not let us access namespaced key of a Recipe + * instance. + */ + public class LoadedRecipe { + private final Recipe recipe; + private final NamespacedKey key; + + public LoadedRecipe(NamespacedKey key, Recipe recipe) { + this.recipe = recipe; + this.key = key; + } + + public NamespacedKey getKey() { + return key; + } + + public Recipe getRecipe() { + return recipe; + } + } + + /* + * blast furnace, smoker, campfire and furnace recipes have extra parameters + */ + public class BurningRecipeInformation { + private final MMORecipeChoice choice; + private final float exp; + private final int burnTime; + + protected BurningRecipeInformation(ConfigurationSection config) { + choice = new MMORecipeChoice(config.getString("item")); + exp = (float) config.getDouble("exp", 0.35); + burnTime = config.getInt("time", 200); + } + + public int getBurnTime() { + return burnTime; + } + + public MMORecipeChoice getChoice() { + return choice; + } + + public float getExp() { + return exp; + } + } } diff --git a/src/main/java/net/Indyuce/mmoitems/manager/TierManager.java b/src/main/java/net/Indyuce/mmoitems/manager/TierManager.java index 7e21be6c..171ffce8 100644 --- a/src/main/java/net/Indyuce/mmoitems/manager/TierManager.java +++ b/src/main/java/net/Indyuce/mmoitems/manager/TierManager.java @@ -10,7 +10,7 @@ import org.apache.commons.lang.Validate; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.ItemTier; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.stat.type.ItemStat; public class TierManager { diff --git a/src/main/java/net/Indyuce/mmoitems/manager/UpdaterManager.java b/src/main/java/net/Indyuce/mmoitems/manager/UpdaterManager.java index a3317eb2..ae4f6de2 100644 --- a/src/main/java/net/Indyuce/mmoitems/manager/UpdaterManager.java +++ b/src/main/java/net/Indyuce/mmoitems/manager/UpdaterManager.java @@ -24,8 +24,8 @@ import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.Type; import net.Indyuce.mmoitems.api.UpdaterData; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.VolatileMMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.VolatileMMOItem; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.MMOLib; import net.mmogroup.mmolib.api.item.NBTItem; diff --git a/src/main/java/net/Indyuce/mmoitems/manager/recipe/RecipeManager.java b/src/main/java/net/Indyuce/mmoitems/manager/recipe/RecipeManager.java deleted file mode 100644 index e953aadf..00000000 --- a/src/main/java/net/Indyuce/mmoitems/manager/recipe/RecipeManager.java +++ /dev/null @@ -1,130 +0,0 @@ -package net.Indyuce.mmoitems.manager.recipe; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import org.bukkit.Bukkit; -import org.bukkit.Keyed; -import org.bukkit.NamespacedKey; -import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.inventory.Recipe; - -import net.Indyuce.mmoitems.MMOItems; -import net.Indyuce.mmoitems.api.Type; -import net.Indyuce.mmoitems.api.recipe.MMORecipeChoice; -import net.Indyuce.mmoitems.api.recipe.workbench.CustomRecipe; - -public abstract class RecipeManager { - private final Set craftingRecipes = new HashSet<>(); - private final Set loadedRecipes = new HashSet<>(); - - public abstract void reload(); - - public abstract void registerFurnaceRecipe(Type type, String id, BurningRecipeInformation info, String number); - public abstract void registerShapedRecipe(Type type, String id, List list); - public abstract void registerShapelessRecipe(Type type, String id, List ingredients); - - public void registerRecipe(NamespacedKey key, Recipe recipe) { - loadedRecipes.add(new LoadedRecipe(key, recipe)); - } - - public void registerRecipe(CustomRecipe recipe) { - if(!recipe.isEmpty()) - craftingRecipes.add(recipe); - } - - public Set getLoadedRecipes() { - return loadedRecipes; - } - - public Set getCustomRecipes() { - return craftingRecipes; - } - - public Set getNamespacedKeys() { - return loadedRecipes.stream().map(recipe -> recipe.getKey()).collect(Collectors.toSet()); - } - - public void sortRecipes() { - List temporary = new ArrayList<>(); - temporary.addAll(craftingRecipes); - craftingRecipes.clear(); - craftingRecipes.addAll(temporary.stream().sorted().collect(Collectors.toList())); - } - - public void clearCustomRecipes() { - craftingRecipes.clear(); - } - - public NamespacedKey getRecipeKey(Type type, String id, String recipeType, String number) { - return new NamespacedKey(MMOItems.plugin, recipeType + "_" + type.getId() + "_" + id + "_" + number); - } - - public void reloadRecipes() { - Bukkit.getScheduler().runTask(MMOItems.plugin, () -> { - - Iterator iterator = Bukkit.recipeIterator(); - while (iterator.hasNext()) { - Recipe recipe = iterator.next(); - if (recipe instanceof Keyed && ((Keyed) recipe).getKey().getNamespace().equals("mmoitems")) - iterator.remove(); - } - - loadedRecipes.clear(); - reload(); - }); - } - - /* - * used because spigot API does not let us access namespaced key of a Recipe - * instance. - */ - public class LoadedRecipe { - private final Recipe recipe; - private final NamespacedKey key; - - public LoadedRecipe(NamespacedKey key, Recipe recipe) { - this.recipe = recipe; - this.key = key; - } - - public NamespacedKey getKey() { - return key; - } - - public Recipe getRecipe() { - return recipe; - } - } - - /* - * blast furnace, smoker, campfire and furnace recipes have extra parameters - */ - public class BurningRecipeInformation { - private final MMORecipeChoice choice; - private final float exp; - private final int burnTime; - - protected BurningRecipeInformation(ConfigurationSection config) { - choice = new MMORecipeChoice(config.getString("item")); - exp = (float) config.getDouble("exp", 0.35); - burnTime = config.getInt("time", 200); - } - - public int getBurnTime() { - return burnTime; - } - - public MMORecipeChoice getChoice() { - return choice; - } - - public float getExp() { - return exp; - } - } -} diff --git a/src/main/java/net/Indyuce/mmoitems/manager/recipe/RecipeManagerLegacy.java b/src/main/java/net/Indyuce/mmoitems/manager/recipe/RecipeManagerLegacy.java deleted file mode 100644 index f053c2f6..00000000 --- a/src/main/java/net/Indyuce/mmoitems/manager/recipe/RecipeManagerLegacy.java +++ /dev/null @@ -1,77 +0,0 @@ -package net.Indyuce.mmoitems.manager.recipe; - -import java.util.List; -import java.util.logging.Level; - -import org.bukkit.Bukkit; -import org.bukkit.NamespacedKey; -import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.inventory.FurnaceRecipe; - -import net.Indyuce.mmoitems.MMOItems; -import net.Indyuce.mmoitems.api.Type; -import net.Indyuce.mmoitems.api.recipe.workbench.CustomRecipe; - -/** One day we'll get rid of 1.12 for real >:) */ -public class RecipeManagerLegacy extends RecipeManager { - public RecipeManagerLegacy() { - reload(); - } - - @Override - public void reload() { - clearCustomRecipes(); - - for (Type type : MMOItems.plugin.getTypes().getAll()) { - FileConfiguration config = type.getConfigFile().getConfig(); - - for (String id : config.getKeys(false)) - try { - if (config.getConfigurationSection(id).contains("crafting")) { - ConfigurationSection section = config.getConfigurationSection(id + ".crafting"); - - if (section.contains("shaped")) - section.getConfigurationSection("shaped").getKeys(false) - .forEach(recipe -> registerShapedRecipe(type, id, section.getStringList("shaped." + recipe))); - if (section.contains("shapeless")) - section.getConfigurationSection("shapeless").getKeys(false) - .forEach(recipe -> registerShapelessRecipe(type, id, section.getStringList("shapeless." + recipe))); - if (section.contains("furnace")) - section.getConfigurationSection("furnace").getKeys(false) - .forEach(recipe -> registerFurnaceRecipe(type, id, - new BurningRecipeInformation(section.getConfigurationSection("furnace." + recipe)), recipe)); - } - } catch (IllegalArgumentException exception) { - MMOItems.plugin.getLogger().log(Level.WARNING, - "Could not load recipe of " + id + ": " + exception.getMessage()); - } - } - - sortRecipes(); - Bukkit.getScheduler().runTask(MMOItems.plugin, - () -> getLoadedRecipes().forEach(recipe -> Bukkit.addRecipe(recipe.getRecipe()))); - } - - @Override - public void registerFurnaceRecipe(Type type, String id, BurningRecipeInformation info, String number) { - if (!info.getChoice().isValid()) { - MMOItems.plugin.getLogger().warning("Couldn't load furnace recipe for '" + type.getId() + "." + id + "'"); - return; - } - NamespacedKey key = getRecipeKey(type, id, "furnace", number); - FurnaceRecipe recipe = new FurnaceRecipe(key, MMOItems.plugin.getItems().getItem(type, id), - info.getChoice().getItem().getType(), info.getExp(), info.getBurnTime()); - registerRecipe(key, recipe); - } - - @Override - public void registerShapedRecipe(Type type, String id, List list) { - registerRecipe(new CustomRecipe(MMOItems.plugin.getItems().getMMOItem(type, id).newBuilder().buildNBT(), list, false)); - } - - @Override - public void registerShapelessRecipe(Type type, String id, List list) { - registerRecipe(new CustomRecipe(MMOItems.plugin.getItems().getMMOItem(type, id).newBuilder().buildNBT(), list, true)); - } -} diff --git a/src/main/java/net/Indyuce/mmoitems/stat/Abilities.java b/src/main/java/net/Indyuce/mmoitems/stat/Abilities.java index 5a02ca4e..9604544e 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/Abilities.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/Abilities.java @@ -8,16 +8,16 @@ import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.ability.Ability; import net.Indyuce.mmoitems.api.ability.Ability.CastingMode; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.AbilityListEdition; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.AbilityData; import net.Indyuce.mmoitems.stat.data.AbilityListData; import net.Indyuce.mmoitems.stat.data.random.RandomAbilityData; import net.Indyuce.mmoitems.stat.data.random.RandomAbilityListData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.item.ItemTag; @@ -68,7 +68,7 @@ public class Abilities extends ItemStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { List abilityLore = new ArrayList<>(); boolean splitter = !MMOItems.plugin.getLanguage().abilitySplitter.equals(""); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/Armor.java b/src/main/java/net/Indyuce/mmoitems/stat/Armor.java index 5453279e..aac9958b 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/Armor.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/Armor.java @@ -3,7 +3,7 @@ package net.Indyuce.mmoitems.stat; import org.bukkit.attribute.Attribute; import org.bukkit.inventory.ItemStack; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.api.util.StatFormat; import net.Indyuce.mmoitems.stat.data.DoubleData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -17,7 +17,7 @@ public class Armor extends AttributeStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { double value = ((DoubleData) data).generateNewValue(); // for (String slot : item.getMMOItem().getType().getSlots()) // item.addItemAttribute(new Attribute("armor", value, slot)); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/ArmorToughness.java b/src/main/java/net/Indyuce/mmoitems/stat/ArmorToughness.java index 7e8fde70..51b2649a 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/ArmorToughness.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/ArmorToughness.java @@ -4,7 +4,7 @@ import org.bukkit.Material; import org.bukkit.attribute.Attribute; import org.bukkit.inventory.ItemStack; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.api.util.StatFormat; import net.Indyuce.mmoitems.stat.data.DoubleData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -17,7 +17,7 @@ public class ArmorToughness extends AttributeStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { double value = ((DoubleData) data).generateNewValue(); item.addItemTag(new ItemTag("MMOITEMS_ARMOR_TOUGHNESS", value)); item.getLore().insert("armor-toughness", formatNumericStat(value, "#", new StatFormat("##").format(value))); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/ArrowParticles.java b/src/main/java/net/Indyuce/mmoitems/stat/ArrowParticles.java index 8eddf6bc..ebeecc15 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/ArrowParticles.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/ArrowParticles.java @@ -15,14 +15,14 @@ import com.google.gson.JsonSyntaxException; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.ArrowParticlesEdition; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.ArrowParticlesData; import net.Indyuce.mmoitems.stat.data.ParticleData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.item.ItemTag; @@ -58,7 +58,7 @@ public class ArrowParticles extends ItemStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { item.addItemTag(new ItemTag("MMOITEMS_ARROW_PARTICLES", data.toString())); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/AttackDamage.java b/src/main/java/net/Indyuce/mmoitems/stat/AttackDamage.java index 4fc3506d..699339fb 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/AttackDamage.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/AttackDamage.java @@ -4,7 +4,7 @@ import org.bukkit.Material; import org.bukkit.attribute.Attribute; import org.bukkit.inventory.ItemStack; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.api.util.StatFormat; import net.Indyuce.mmoitems.stat.data.DoubleData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -17,7 +17,7 @@ public class AttackDamage extends AttributeStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { double value = ((DoubleData) data).generateNewValue(); item.addItemTag(new ItemTag("MMOITEMS_ATTACK_DAMAGE", value)); item.getLore().insert("attack-damage", formatNumericStat(value, "#", new StatFormat("##").format(value))); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/AttackSpeed.java b/src/main/java/net/Indyuce/mmoitems/stat/AttackSpeed.java index 76df9ab9..437bb5b2 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/AttackSpeed.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/AttackSpeed.java @@ -2,7 +2,7 @@ package net.Indyuce.mmoitems.stat; import org.bukkit.attribute.Attribute; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.api.util.StatFormat; import net.Indyuce.mmoitems.stat.data.DoubleData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -17,7 +17,7 @@ public class AttackSpeed extends AttributeStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { double value = ((DoubleData) data).generateNewValue(); item.addItemTag(new ItemTag("MMOITEMS_ATTACK_SPEED", value)); item.getLore().insert("attack-speed", formatNumericStat(value, "#", new StatFormat("##").format(value))); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/Commands.java b/src/main/java/net/Indyuce/mmoitems/stat/Commands.java index ecf07e2b..ad4ac684 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/Commands.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/Commands.java @@ -6,14 +6,14 @@ import com.google.gson.JsonParser; import com.google.gson.JsonSyntaxException; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.CommandListEdition; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.CommandData; import net.Indyuce.mmoitems.stat.data.CommandListData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.item.ItemTag; @@ -131,7 +131,7 @@ public class Commands extends ItemStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { JsonArray array = new JsonArray(); List lore = new ArrayList<>(); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/CompatibleTypes.java b/src/main/java/net/Indyuce/mmoitems/stat/CompatibleTypes.java index 6fc077de..95e44a05 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/CompatibleTypes.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/CompatibleTypes.java @@ -15,12 +15,12 @@ import com.google.gson.JsonParser; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.StringListData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.item.ItemTag; @@ -97,7 +97,7 @@ public class CompatibleTypes extends ItemStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { List compatibleTypes = new ArrayList<>(); JsonArray array = new JsonArray(); ((StringListData) data).getList().forEach(line -> { diff --git a/src/main/java/net/Indyuce/mmoitems/stat/Crafting.java b/src/main/java/net/Indyuce/mmoitems/stat/Crafting.java index 4672aaa9..0e760409 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/Crafting.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/Crafting.java @@ -13,12 +13,12 @@ import org.bukkit.inventory.ItemStack; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.Type; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.CraftingEdition; import net.Indyuce.mmoitems.gui.edition.EditionInventory; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.util.AltChar; @@ -121,7 +121,7 @@ public class Crafting extends ItemStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { } @Override diff --git a/src/main/java/net/Indyuce/mmoitems/stat/CraftingPermission.java b/src/main/java/net/Indyuce/mmoitems/stat/CraftingPermission.java index ac4626e6..1d78d02e 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/CraftingPermission.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/CraftingPermission.java @@ -2,8 +2,8 @@ package net.Indyuce.mmoitems.stat; import org.bukkit.inventory.ItemStack; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.StringStat; import net.mmogroup.mmolib.version.VersionMaterial; @@ -25,6 +25,6 @@ public class CraftingPermission extends StringStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { } } \ No newline at end of file diff --git a/src/main/java/net/Indyuce/mmoitems/stat/CustomModelData.java b/src/main/java/net/Indyuce/mmoitems/stat/CustomModelData.java index 6edc691b..6fb1bb4e 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/CustomModelData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/CustomModelData.java @@ -1,7 +1,7 @@ package net.Indyuce.mmoitems.stat; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.stat.data.DoubleData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.DoubleStat; @@ -20,7 +20,7 @@ public class CustomModelData extends DoubleStat implements ProperStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { item.addItemTag(new ItemTag("CustomModelData", (int) ((DoubleData) data).generateNewValue())); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/CustomSounds.java b/src/main/java/net/Indyuce/mmoitems/stat/CustomSounds.java index d74fd422..5aa305cd 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/CustomSounds.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/CustomSounds.java @@ -14,14 +14,14 @@ import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.CustomSound; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.gui.edition.SoundsEdition; import net.Indyuce.mmoitems.stat.data.SoundData; import net.Indyuce.mmoitems.stat.data.SoundListData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.Indyuce.mmoitems.stat.type.ProperStat; @@ -135,7 +135,7 @@ public class CustomSounds extends ItemStat implements ProperStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { SoundListData sounds = (SoundListData) data; sounds.getCustomSounds().forEach(sound -> { diff --git a/src/main/java/net/Indyuce/mmoitems/stat/DefaultDurability.java b/src/main/java/net/Indyuce/mmoitems/stat/DefaultDurability.java index dd64da7b..7bb8efb5 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/DefaultDurability.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/DefaultDurability.java @@ -1,7 +1,7 @@ package net.Indyuce.mmoitems.stat; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.stat.data.DoubleData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.DoubleStat; @@ -17,7 +17,7 @@ public class DefaultDurability extends DoubleStat implements ProperStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { if (item.getMeta() instanceof Damageable) ((Damageable) item.getMeta()).setDamage((int) ((DoubleData) data).generateNewValue()); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/DisplayName.java b/src/main/java/net/Indyuce/mmoitems/stat/DisplayName.java index b9a143e6..4c1dfd8b 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/DisplayName.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/DisplayName.java @@ -4,9 +4,9 @@ import org.bukkit.ChatColor; import org.bukkit.inventory.ItemStack; import net.Indyuce.mmoitems.MMOItems; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.stat.data.StringData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; @@ -20,7 +20,7 @@ public class DisplayName extends StringStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { item.getMeta().setDisplayName(fix(MMOLib.plugin.parseColors(getDisplayName(data)))); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/DyeColor.java b/src/main/java/net/Indyuce/mmoitems/stat/DyeColor.java index f5a0dcd9..64bf3209 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/DyeColor.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/DyeColor.java @@ -12,12 +12,12 @@ import org.bukkit.inventory.meta.LeatherArmorMeta; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.ColorData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.util.AltChar; @@ -95,7 +95,7 @@ public class DyeColor extends ItemStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { if (item.getMeta() instanceof LeatherArmorMeta) ((LeatherArmorMeta) item.getMeta()).setColor(((ColorData) data).getColor()); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/Effects.java b/src/main/java/net/Indyuce/mmoitems/stat/Effects.java index 4cc8ff69..87c82fd1 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/Effects.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/Effects.java @@ -24,14 +24,14 @@ import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.PotionEffectData; import net.Indyuce.mmoitems.stat.data.PotionEffectListData; import net.Indyuce.mmoitems.stat.data.random.RandomPotionEffectListData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.item.ItemTag; @@ -162,7 +162,7 @@ public class Effects extends ItemStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { List lore = new ArrayList<>(); JsonArray array = new JsonArray(); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/Elements.java b/src/main/java/net/Indyuce/mmoitems/stat/Elements.java index bb892fdd..18fd8d10 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/Elements.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/Elements.java @@ -14,15 +14,15 @@ import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.Element; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.api.util.StatFormat; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.gui.edition.ElementsEdition; import net.Indyuce.mmoitems.stat.data.ElementListData; import net.Indyuce.mmoitems.stat.data.random.RandomElementListData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.item.ItemTag; @@ -121,7 +121,7 @@ public class Elements extends ItemStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { ElementListData elements = (ElementListData) data; for (Element element : elements.getDamageElements()) { diff --git a/src/main/java/net/Indyuce/mmoitems/stat/Enchants.java b/src/main/java/net/Indyuce/mmoitems/stat/Enchants.java index 3f2eea1c..a71ef225 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/Enchants.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/Enchants.java @@ -18,13 +18,13 @@ import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.EnchantListData; import net.Indyuce.mmoitems.stat.data.random.RandomEnchantListData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.MMOLib; @@ -148,7 +148,7 @@ public class Enchants extends ItemStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { EnchantListData enchants = (EnchantListData) data; for (Enchantment enchant : enchants.getEnchants()) item.getMeta().addEnchant(enchant, enchants.getLevel(enchant), true); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/GemColor.java b/src/main/java/net/Indyuce/mmoitems/stat/GemColor.java index 28c7a7c5..6c554ba6 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/GemColor.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/GemColor.java @@ -1,6 +1,6 @@ package net.Indyuce.mmoitems.stat; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.StringStat; import net.mmogroup.mmolib.api.item.ItemTag; @@ -12,7 +12,7 @@ public class GemColor extends StringStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { item.addItemTag(new ItemTag(getNBTPath(), data.toString())); } } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/GemSockets.java b/src/main/java/net/Indyuce/mmoitems/stat/GemSockets.java index 365e4ab0..96d7edc2 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/GemSockets.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/GemSockets.java @@ -18,13 +18,13 @@ import com.google.gson.JsonSyntaxException; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.GemSocketsData; import net.Indyuce.mmoitems.stat.data.GemstoneData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.item.ItemTag; @@ -49,7 +49,7 @@ public class GemSockets extends ItemStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { GemSocketsData sockets = (GemSocketsData) data; item.addItemTag(new ItemTag("MMOITEMS_GEM_STONES", sockets.toJson().toString())); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/HideEnchants.java b/src/main/java/net/Indyuce/mmoitems/stat/HideEnchants.java index fe360f66..62a51400 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/HideEnchants.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/HideEnchants.java @@ -4,8 +4,8 @@ import org.bukkit.Material; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.stat.data.BooleanData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.BooleanStat; @@ -17,7 +17,7 @@ public class HideEnchants extends BooleanStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { if (((BooleanData) data).isEnabled()) item.getMeta().addItemFlags(ItemFlag.HIDE_ENCHANTS); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/HidePotionEffects.java b/src/main/java/net/Indyuce/mmoitems/stat/HidePotionEffects.java index dea87dbb..a78a7347 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/HidePotionEffects.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/HidePotionEffects.java @@ -4,8 +4,8 @@ import org.bukkit.Material; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.stat.data.BooleanData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.BooleanStat; @@ -17,7 +17,7 @@ public class HidePotionEffects extends BooleanStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { if (((BooleanData) data).isEnabled()) item.getMeta().addItemFlags(ItemFlag.HIDE_POTION_EFFECTS); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/Inedible.java b/src/main/java/net/Indyuce/mmoitems/stat/Inedible.java index 67632f6f..1d9aa2fc 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/Inedible.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/Inedible.java @@ -3,7 +3,7 @@ package net.Indyuce.mmoitems.stat; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.stat.data.BooleanData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.BooleanStat; @@ -15,7 +15,7 @@ public class Inedible extends BooleanStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { if (((BooleanData) data).isEnabled()) item.addItemTag(new ItemTag("MMOITEMS_INEDIBLE", true)); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/ItemParticles.java b/src/main/java/net/Indyuce/mmoitems/stat/ItemParticles.java index ea933b8e..0971ad9d 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/ItemParticles.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/ItemParticles.java @@ -5,14 +5,14 @@ import com.google.gson.JsonSyntaxException; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.gui.edition.ParticlesEdition; import net.Indyuce.mmoitems.particle.api.ParticleType; import net.Indyuce.mmoitems.stat.data.ParticleData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.item.ItemTag; @@ -50,7 +50,7 @@ public class ItemParticles extends ItemStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { item.addItemTag(new ItemTag("MMOITEMS_ITEM_PARTICLES", ((ParticleData) data).toJson().toString())); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/ItemSetStat.java b/src/main/java/net/Indyuce/mmoitems/stat/ItemSetStat.java index d756bb41..bbce310e 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/ItemSetStat.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/ItemSetStat.java @@ -5,8 +5,8 @@ import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.ItemSet; import net.Indyuce.mmoitems.api.Type; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.StringData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -42,7 +42,7 @@ public class ItemSetStat extends StringStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { String path = data.toString(); ItemSet set = MMOItems.plugin.getSets().get(path); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/ItemTierStat.java b/src/main/java/net/Indyuce/mmoitems/stat/ItemTierStat.java index 204da7c0..a35af1a4 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/ItemTierStat.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/ItemTierStat.java @@ -8,7 +8,7 @@ import org.bukkit.inventory.ItemStack; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.ItemTier; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.StringStat; @@ -22,7 +22,7 @@ public class ItemTierStat extends StringStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { String path = data.toString().toUpperCase().replace("-", "_").replace(" ", "_"); Validate.isTrue(MMOItems.plugin.getTiers().has(path), "Could not find item tier with ID '" + path + "'"); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/ItemTypeRestriction.java b/src/main/java/net/Indyuce/mmoitems/stat/ItemTypeRestriction.java index 30de761b..c64a097f 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/ItemTypeRestriction.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/ItemTypeRestriction.java @@ -15,8 +15,8 @@ import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.Type; import net.Indyuce.mmoitems.api.TypeSet; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.StringListData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -128,7 +128,7 @@ public class ItemTypeRestriction extends StringStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { // List displayedTypes = new ArrayList(); // // for (String typeId : (List) values[0]) diff --git a/src/main/java/net/Indyuce/mmoitems/stat/KnockbackResistance.java b/src/main/java/net/Indyuce/mmoitems/stat/KnockbackResistance.java index c1054c5e..cafdb909 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/KnockbackResistance.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/KnockbackResistance.java @@ -4,7 +4,7 @@ import org.bukkit.Material; import org.bukkit.attribute.Attribute; import org.bukkit.inventory.ItemStack; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.api.util.StatFormat; import net.Indyuce.mmoitems.stat.data.DoubleData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -17,7 +17,7 @@ public class KnockbackResistance extends AttributeStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { double value = ((DoubleData) data).generateNewValue(); item.addItemTag(new ItemTag("MMOITEMS_KNOCKBACK_RESISTANCE", value)); item.getLore().insert("knockback-resistance", formatNumericStat(value, "#", new StatFormat("#").format(value * 100))); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/LegacyDurability.java b/src/main/java/net/Indyuce/mmoitems/stat/LegacyDurability.java index 11a42d77..45d0b6ee 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/LegacyDurability.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/LegacyDurability.java @@ -3,8 +3,8 @@ package net.Indyuce.mmoitems.stat; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.stat.data.DoubleData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.DoubleStat; @@ -18,7 +18,7 @@ public class LegacyDurability extends DoubleStat implements ProperStat { @Override @SuppressWarnings("deprecation") - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { item.getItemStack().setDurability((short) ((DoubleData) data).generateNewValue()); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/Lore.java b/src/main/java/net/Indyuce/mmoitems/stat/Lore.java index 06ba74f3..aa8b3abd 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/Lore.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/Lore.java @@ -15,12 +15,12 @@ import com.google.gson.JsonParser; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.StringListData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.Indyuce.mmoitems.stat.type.ProperStat; @@ -99,7 +99,7 @@ public class Lore extends ItemStat implements ProperStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { List lore = new ArrayList<>(); JsonArray array = new JsonArray(); ((StringListData) data).getList().forEach(line -> { diff --git a/src/main/java/net/Indyuce/mmoitems/stat/LostWhenBroken.java b/src/main/java/net/Indyuce/mmoitems/stat/LostWhenBroken.java index c2e0c59e..0262d0b9 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/LostWhenBroken.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/LostWhenBroken.java @@ -1,6 +1,6 @@ package net.Indyuce.mmoitems.stat; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.stat.data.BooleanData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.BooleanStat; @@ -14,7 +14,7 @@ public class LostWhenBroken extends BooleanStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { if (((BooleanData) data).isEnabled()) item.addItemTag(new ItemTag("MMOITEMS_WILL_BREAK", true)); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/LuteAttackEffectStat.java b/src/main/java/net/Indyuce/mmoitems/stat/LuteAttackEffectStat.java index 3a70f0b6..f197b86e 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/LuteAttackEffectStat.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/LuteAttackEffectStat.java @@ -14,7 +14,7 @@ import net.Indyuce.mmoitems.api.interaction.weapon.untargeted.lute.LuteAttackHan import net.Indyuce.mmoitems.api.interaction.weapon.untargeted.lute.SimpleLuteAttack; import net.Indyuce.mmoitems.api.interaction.weapon.untargeted.lute.SlashLuteAttack; import net.Indyuce.mmoitems.api.interaction.weapon.untargeted.lute.WaveLuteAttack; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.StringData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -63,7 +63,7 @@ public class LuteAttackEffectStat extends StringStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { LuteAttackEffect effect = LuteAttackEffect.valueOf(((StringData) data).toString().toUpperCase().replace(" ", "_").replace("-", "_")); item.addItemTag(new ItemTag("MMOITEMS_LUTE_ATTACK_EFFECT", effect.name())); item.getLore().insert("lute-attack-effect", effect.getName()); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/LuteAttackSoundStat.java b/src/main/java/net/Indyuce/mmoitems/stat/LuteAttackSoundStat.java index 5b23e205..e750b479 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/LuteAttackSoundStat.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/LuteAttackSoundStat.java @@ -2,7 +2,7 @@ package net.Indyuce.mmoitems.stat; import org.bukkit.inventory.ItemStack; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.stat.data.StringData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.StringStat; @@ -15,7 +15,7 @@ public class LuteAttackSoundStat extends StringStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { item.addItemTag(new ItemTag("MMOITEMS_LUTE_ATTACK_SOUND", ((StringData) data).toString().toUpperCase().replace("-", "_").replace(" ", "_"))); } } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/MaterialStat.java b/src/main/java/net/Indyuce/mmoitems/stat/MaterialStat.java index e44cafca..10fb2173 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/MaterialStat.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/MaterialStat.java @@ -12,12 +12,12 @@ import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.MaterialData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.util.AltChar; @@ -66,7 +66,7 @@ public class MaterialStat extends ItemStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { /* * material is set handled directly in the MMOBuilder constructor * therefore nothing needs to be done here diff --git a/src/main/java/net/Indyuce/mmoitems/stat/MaxHealth.java b/src/main/java/net/Indyuce/mmoitems/stat/MaxHealth.java index f24f791b..54534665 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/MaxHealth.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/MaxHealth.java @@ -4,7 +4,7 @@ import org.bukkit.Material; import org.bukkit.attribute.Attribute; import org.bukkit.inventory.ItemStack; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.api.util.StatFormat; import net.Indyuce.mmoitems.stat.data.DoubleData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -17,7 +17,7 @@ public class MaxHealth extends AttributeStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { double value = ((DoubleData) data).generateNewValue(); item.addItemTag(new ItemTag("MMOITEMS_MAX_HEALTH", value)); item.getLore().insert("max-health", formatNumericStat(value, "#", new StatFormat("##").format(value))); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/MaximumDurability.java b/src/main/java/net/Indyuce/mmoitems/stat/MaximumDurability.java index e7552bb7..fd0da999 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/MaximumDurability.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/MaximumDurability.java @@ -1,6 +1,6 @@ package net.Indyuce.mmoitems.stat; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.api.player.RPGPlayer; import net.Indyuce.mmoitems.api.util.message.Message; import net.Indyuce.mmoitems.stat.data.DoubleData; @@ -24,7 +24,7 @@ public class MaximumDurability extends DoubleStat implements ItemRestriction, Pr * initializes the custom durability mecanism on an item. */ @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { double value = ((DoubleData) data).generateNewValue(); item.addItemTag(new ItemTag("MMOITEMS_MAX_DURABILITY", value), new ItemTag("MMOITEMS_DURABILITY", value)); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/MovementSpeed.java b/src/main/java/net/Indyuce/mmoitems/stat/MovementSpeed.java index 74c3adf2..15004ad0 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/MovementSpeed.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/MovementSpeed.java @@ -4,7 +4,7 @@ import org.bukkit.Material; import org.bukkit.attribute.Attribute; import org.bukkit.inventory.ItemStack; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.api.util.StatFormat; import net.Indyuce.mmoitems.stat.data.DoubleData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -17,7 +17,7 @@ public class MovementSpeed extends AttributeStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { double value = ((DoubleData) data).generateNewValue(); // for (String slot : item.getMMOItem().getType().getSlots()) // item.addItemAttribute(new Attribute("movementSpeed", value, slot)); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/NBTTags.java b/src/main/java/net/Indyuce/mmoitems/stat/NBTTags.java index e15df803..6a435ffe 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/NBTTags.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/NBTTags.java @@ -16,12 +16,12 @@ import com.google.gson.JsonParser; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.StringListData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.item.ItemTag; @@ -102,7 +102,7 @@ public class NBTTags extends ItemStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { JsonArray array = new JsonArray(); ((StringListData) data).getList().forEach(tag -> { array.add(tag); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/PermanentEffects.java b/src/main/java/net/Indyuce/mmoitems/stat/PermanentEffects.java index 91511ac9..2a40a97e 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/PermanentEffects.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/PermanentEffects.java @@ -6,16 +6,16 @@ import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.NumericStatFormula; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; +import net.Indyuce.mmoitems.api.util.NumericStatFormula; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.PotionEffectData; import net.Indyuce.mmoitems.stat.data.PotionEffectListData; import net.Indyuce.mmoitems.stat.data.random.RandomPotionEffectData; import net.Indyuce.mmoitems.stat.data.random.RandomPotionEffectListData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.item.ItemTag; @@ -150,7 +150,7 @@ public class PermanentEffects extends ItemStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { JsonObject object = new JsonObject(); List lore = new ArrayList<>(); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/Permission.java b/src/main/java/net/Indyuce/mmoitems/stat/Permission.java index a6ccfd61..88f0687d 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/Permission.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/Permission.java @@ -3,14 +3,14 @@ package net.Indyuce.mmoitems.stat; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.api.player.RPGPlayer; import net.Indyuce.mmoitems.api.util.message.Message; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.StringListData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemRestriction; import net.Indyuce.mmoitems.stat.type.ItemStat; @@ -105,7 +105,7 @@ public class Permission extends ItemStat implements ItemRestriction, ProperStat } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { item.addItemTag(new ItemTag("MMOITEMS_PERMISSION", String.join("|", ((StringListData) data).getList()))); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/PickaxePower.java b/src/main/java/net/Indyuce/mmoitems/stat/PickaxePower.java index 9d95651d..795fb892 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/PickaxePower.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/PickaxePower.java @@ -3,7 +3,7 @@ package net.Indyuce.mmoitems.stat; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.stat.data.DoubleData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.DoubleStat; @@ -15,7 +15,7 @@ public class PickaxePower extends DoubleStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { int pickPower = (int) ((DoubleData) data).generateNewValue(); item.addItemTag(new ItemTag("MMOITEMS_PICKAXE_POWER", pickPower)); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/PotionColor.java b/src/main/java/net/Indyuce/mmoitems/stat/PotionColor.java index 9c33f8ba..b9c25112 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/PotionColor.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/PotionColor.java @@ -13,8 +13,8 @@ import org.bukkit.inventory.meta.PotionMeta; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.ColorData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -85,7 +85,7 @@ public class PotionColor extends StringStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { if (item.getItemStack().getType().name().contains("POTION") || item.getItemStack().getType() == Material.TIPPED_ARROW) ((PotionMeta) item.getMeta()).setColor(((ColorData) data).getColor()); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/PotionEffects.java b/src/main/java/net/Indyuce/mmoitems/stat/PotionEffects.java index 87ffa56e..9a204554 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/PotionEffects.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/PotionEffects.java @@ -19,15 +19,15 @@ import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.PotionEffectData; import net.Indyuce.mmoitems.stat.data.PotionEffectListData; import net.Indyuce.mmoitems.stat.data.StringData; import net.Indyuce.mmoitems.stat.data.random.RandomPotionEffectListData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.util.AltChar; @@ -158,7 +158,7 @@ public class PotionEffects extends ItemStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { if (item.getItemStack().getType().name().contains("POTION") || item.getItemStack().getType() == Material.TIPPED_ARROW) for (PotionEffectData effect : ((PotionEffectListData) data).getEffects()) ((PotionMeta) item.getMeta()).addCustomEffect(effect.toEffect(), false); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/RepairMaterial.java b/src/main/java/net/Indyuce/mmoitems/stat/RepairMaterial.java index 08b11608..10f881b4 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/RepairMaterial.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/RepairMaterial.java @@ -8,7 +8,7 @@ import org.bukkit.inventory.ItemStack; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.StringStat; @@ -49,7 +49,7 @@ public class RepairMaterial extends StringStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { String path = data.toString().toUpperCase().replace("-", "_").replace(" ", "_"); item.addItemTag(new ItemTag("MMOITEMS_REPAIR_MATERIAL", Material.valueOf(path).name())); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/RequiredClass.java b/src/main/java/net/Indyuce/mmoitems/stat/RequiredClass.java index 473f968c..3df6d52b 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/RequiredClass.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/RequiredClass.java @@ -3,14 +3,14 @@ package net.Indyuce.mmoitems.stat; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.api.player.RPGPlayer; import net.Indyuce.mmoitems.api.util.message.Message; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.StringListData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemRestriction; import net.Indyuce.mmoitems.stat.type.ItemStat; @@ -106,7 +106,7 @@ public class RequiredClass extends ItemStat implements ItemRestriction, ProperSt } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { String joined = String.join(", ", ((StringListData) data).getList()); item.getLore().insert("required-class", MMOItems.plugin.getLanguage().getStatFormat(getPath()).replace("#", joined)); item.addItemTag(new ItemTag("MMOITEMS_REQUIRED_CLASS", joined)); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/RequiredLevel.java b/src/main/java/net/Indyuce/mmoitems/stat/RequiredLevel.java index 8744c746..73983128 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/RequiredLevel.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/RequiredLevel.java @@ -1,13 +1,13 @@ package net.Indyuce.mmoitems.stat; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.api.player.RPGPlayer; import net.Indyuce.mmoitems.api.util.message.Message; import net.Indyuce.mmoitems.stat.data.DoubleData; import net.Indyuce.mmoitems.stat.data.RequiredLevelData; import net.Indyuce.mmoitems.stat.data.random.RandomRequiredLevelData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.DoubleStat; import net.Indyuce.mmoitems.stat.type.ItemRestriction; @@ -31,7 +31,7 @@ public class RequiredLevel extends DoubleStat implements ItemRestriction { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { int lvl = (int) ((DoubleData) data).generateNewValue(); item.addItemTag(new ItemTag("MMOITEMS_REQUIRED_LEVEL", lvl)); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/Restore.java b/src/main/java/net/Indyuce/mmoitems/stat/Restore.java index e30d4cef..f7f68556 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/Restore.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/Restore.java @@ -10,14 +10,14 @@ import org.bukkit.event.inventory.InventoryClickEvent; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.api.util.StatFormat; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.RestoreData; import net.Indyuce.mmoitems.stat.data.random.RandomRestoreData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.item.ItemTag; @@ -104,7 +104,7 @@ public class Restore extends ItemStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { RestoreData restore = (RestoreData) data; if (restore.getHealth() != 0) { diff --git a/src/main/java/net/Indyuce/mmoitems/stat/ShieldPatternStat.java b/src/main/java/net/Indyuce/mmoitems/stat/ShieldPatternStat.java index 7cb1777b..c98ea91e 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/ShieldPatternStat.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/ShieldPatternStat.java @@ -23,9 +23,9 @@ import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.ShieldPatternData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -63,7 +63,7 @@ public class ShieldPatternStat extends StringStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { BlockStateMeta meta = (BlockStateMeta) item.getMeta(); Banner banner = (Banner) meta.getBlockState(); ShieldPatternData pattern = (ShieldPatternData) data; diff --git a/src/main/java/net/Indyuce/mmoitems/stat/SkullTextureStat.java b/src/main/java/net/Indyuce/mmoitems/stat/SkullTextureStat.java index ad7cebbd..5fad2ac4 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/SkullTextureStat.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/SkullTextureStat.java @@ -11,8 +11,8 @@ import com.mojang.authlib.properties.Property; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.SkullTextureData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -55,7 +55,7 @@ public class SkullTextureStat extends StringStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { if (item.getItemStack().getType() != VersionMaterial.PLAYER_HEAD.toMaterial()) return; diff --git a/src/main/java/net/Indyuce/mmoitems/stat/Soulbound.java b/src/main/java/net/Indyuce/mmoitems/stat/Soulbound.java index 9f387576..af323c5b 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/Soulbound.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/Soulbound.java @@ -12,8 +12,8 @@ import com.google.gson.JsonSyntaxException; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.api.player.RPGPlayer; import net.Indyuce.mmoitems.api.util.message.Message; import net.Indyuce.mmoitems.stat.data.SoulboundData; @@ -31,7 +31,7 @@ public class Soulbound extends InternalStat implements ItemRestriction { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { item.addItemTag(new ItemTag("MMOITEMS_SOULBOUND", ((SoulboundData) data).toJson().toString())); String formattedLoreTag = Message.SOULBOUND_ITEM_LORE.getUpdated().replace("#player#", ((SoulboundData) data).getName()).replace("#level#", MMOUtils.intToRoman(((SoulboundData) data).getLevel())); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/SoulboundLevel.java b/src/main/java/net/Indyuce/mmoitems/stat/SoulboundLevel.java index 49370cf8..0e4ec2b8 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/SoulboundLevel.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/SoulboundLevel.java @@ -3,7 +3,7 @@ package net.Indyuce.mmoitems.stat; import org.bukkit.inventory.ItemStack; import net.Indyuce.mmoitems.MMOUtils; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.stat.data.DoubleData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.DoubleStat; @@ -17,7 +17,7 @@ public class SoulboundLevel extends DoubleStat { // writes soulbound level with roman writing in lore @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { int value = (int) ((DoubleData) data).generateNewValue(); item.addItemTag(new ItemTag("MMOITEMS_SOULBOUND_LEVEL", value)); item.getLore().insert("soulbound-level", formatNumericStat(value, "#", MMOUtils.intToRoman(value))); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/StaffSpiritStat.java b/src/main/java/net/Indyuce/mmoitems/stat/StaffSpiritStat.java index ce9cad78..16d1afea 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/StaffSpiritStat.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/StaffSpiritStat.java @@ -12,7 +12,7 @@ import net.Indyuce.mmoitems.api.interaction.weapon.untargeted.staff.SunfireSpiri import net.Indyuce.mmoitems.api.interaction.weapon.untargeted.staff.ThunderSpirit; import net.Indyuce.mmoitems.api.interaction.weapon.untargeted.staff.VoidSpirit; import net.Indyuce.mmoitems.api.interaction.weapon.untargeted.staff.XRaySpirit; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.StringData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -47,7 +47,7 @@ public class StaffSpiritStat extends StringStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { StaffSpirit staffSpirit = StaffSpirit.valueOf(((StringData) data).toString().toUpperCase().replace(" ", "_").replace("-", "_")); item.addItemTag(new ItemTag("MMOITEMS_STAFF_SPIRIT", staffSpirit.name())); item.getLore().insert("staff-spirit", staffSpirit.getName()); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/StoredTags.java b/src/main/java/net/Indyuce/mmoitems/stat/StoredTags.java index 54928d2e..cc414ef3 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/StoredTags.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/StoredTags.java @@ -1,7 +1,7 @@ package net.Indyuce.mmoitems.stat; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.stat.data.StoredTagsData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.InternalStat; @@ -17,7 +17,7 @@ public class StoredTags extends InternalStat implements ProperStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { for (ItemTag tag : ((StoredTagsData) data).getTags()) item.addItemTag(tag); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/Unbreakable.java b/src/main/java/net/Indyuce/mmoitems/stat/Unbreakable.java index 13f9d00d..918c712b 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/Unbreakable.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/Unbreakable.java @@ -4,8 +4,8 @@ import org.bukkit.Material; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.stat.data.BooleanData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.BooleanStat; @@ -17,7 +17,7 @@ public class Unbreakable extends BooleanStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { if (((BooleanData) data).isEnabled()) { item.addItemTag(new ItemTag("Unbreakable", true)); item.getMeta().addItemFlags(ItemFlag.HIDE_UNBREAKABLE); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/Unstackable.java b/src/main/java/net/Indyuce/mmoitems/stat/Unstackable.java index 6fd42be2..74c059fe 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/Unstackable.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/Unstackable.java @@ -1,6 +1,6 @@ package net.Indyuce.mmoitems.stat; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.stat.data.BooleanData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.BooleanStat; @@ -17,7 +17,7 @@ public class Unstackable extends BooleanStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { if (((BooleanData) data).isEnabled()) { item.addItemTag(new ItemTag(getNBTPath(), true)); item.addItemTag(new ItemTag(getNBTPath() + "_UUID", UUID.randomUUID().toString())); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/UpgradeStat.java b/src/main/java/net/Indyuce/mmoitems/stat/UpgradeStat.java index 8818922a..310ee0b8 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/UpgradeStat.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/UpgradeStat.java @@ -14,13 +14,13 @@ import com.google.gson.JsonParser; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.gui.edition.UpgradingEdition; import net.Indyuce.mmoitems.stat.data.UpgradeData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.api.item.ItemTag; @@ -46,7 +46,7 @@ public class UpgradeStat extends ItemStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { item.addItemTag(new ItemTag("MMOITEMS_UPGRADE", data.toString())); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/VanillaEatingAnimation.java b/src/main/java/net/Indyuce/mmoitems/stat/VanillaEatingAnimation.java index 33aa4895..dd60d87d 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/VanillaEatingAnimation.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/VanillaEatingAnimation.java @@ -3,7 +3,7 @@ package net.Indyuce.mmoitems.stat; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.stat.data.BooleanData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.BooleanStat; @@ -15,7 +15,7 @@ public class VanillaEatingAnimation extends BooleanStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { if (((BooleanData) data).isEnabled()) item.addItemTag(new ItemTag("MMOITEMS_VANILLA_EATING", true)); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/block/BlockID.java b/src/main/java/net/Indyuce/mmoitems/stat/block/BlockID.java index 6d1dd3bf..825581a9 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/block/BlockID.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/block/BlockID.java @@ -1,6 +1,6 @@ package net.Indyuce.mmoitems.stat.block; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.stat.data.DoubleData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.DoubleStat; @@ -15,7 +15,7 @@ public class BlockID extends DoubleStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { super.whenApplied(item, data); item.addItemTag(new ItemTag("CustomModelData", (int) ((DoubleData) data).generateNewValue() +1000)); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/ArrowParticlesData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/ArrowParticlesData.java index a253a181..45585c09 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/ArrowParticlesData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/ArrowParticlesData.java @@ -4,8 +4,8 @@ import org.bukkit.Particle; import com.google.gson.JsonObject; -import net.Indyuce.mmoitems.api.itemgen.GeneratedItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; public class ArrowParticlesData implements StatData, RandomStatData { @@ -90,7 +90,7 @@ public class ArrowParticlesData implements StatData, RandomStatData { } @Override - public StatData randomize(GeneratedItemBuilder builder) { + public StatData randomize(MMOItemBuilder builder) { return this; } } \ No newline at end of file diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/ColorData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/ColorData.java index ac265686..ad99f226 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/ColorData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/ColorData.java @@ -3,8 +3,8 @@ package net.Indyuce.mmoitems.stat.data; import org.apache.commons.lang.Validate; import org.bukkit.Color; -import net.Indyuce.mmoitems.api.itemgen.GeneratedItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; public class ColorData implements StatData, RandomStatData { @@ -51,7 +51,7 @@ public class ColorData implements StatData, RandomStatData { } @Override - public StatData randomize(GeneratedItemBuilder builder) { + public StatData randomize(MMOItemBuilder builder) { return this; } } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/CommandListData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/CommandListData.java index 949cff7e..9c5c88c7 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/CommandListData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/CommandListData.java @@ -5,8 +5,8 @@ import java.util.Set; import org.apache.commons.lang.Validate; -import net.Indyuce.mmoitems.api.itemgen.GeneratedItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.Mergeable; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -39,7 +39,7 @@ public class CommandListData implements StatData, Mergeable, RandomStatData { } @Override - public StatData randomize(GeneratedItemBuilder builder) { + public StatData randomize(MMOItemBuilder builder) { return new CommandListData(new HashSet<>(commands)); } } \ No newline at end of file diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/GemSocketsData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/GemSocketsData.java index 259ea91c..6f2e84c3 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/GemSocketsData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/GemSocketsData.java @@ -11,8 +11,8 @@ import com.google.gson.JsonArray; import com.google.gson.JsonObject; import net.Indyuce.mmoitems.MMOItems; -import net.Indyuce.mmoitems.api.itemgen.GeneratedItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.Mergeable; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -77,7 +77,7 @@ public class GemSocketsData implements StatData, Mergeable, RandomStatData { } @Override - public StatData randomize(GeneratedItemBuilder builder) { + public StatData randomize(MMOItemBuilder builder) { return new GemSocketsData(new ArrayList<>(emptySlots)); } } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/GemstoneData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/GemstoneData.java index f0148d7d..36b2c631 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/GemstoneData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/GemstoneData.java @@ -14,7 +14,7 @@ import com.google.gson.JsonObject; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; -import net.Indyuce.mmoitems.api.item.LiveMMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.LiveMMOItem; import net.Indyuce.mmoitems.stat.type.ItemStat; public class GemstoneData { diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/MaterialData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/MaterialData.java index 8f030a3f..c07700c3 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/MaterialData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/MaterialData.java @@ -3,8 +3,8 @@ package net.Indyuce.mmoitems.stat.data; import org.apache.commons.lang.Validate; import org.bukkit.Material; -import net.Indyuce.mmoitems.api.itemgen.GeneratedItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; public class MaterialData implements StatData, RandomStatData { @@ -29,7 +29,7 @@ public class MaterialData implements StatData, RandomStatData { } @Override - public StatData randomize(GeneratedItemBuilder builder) { + public StatData randomize(MMOItemBuilder builder) { return this; } } \ No newline at end of file diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/ParticleData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/ParticleData.java index 8a7e778b..c4237834 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/ParticleData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/ParticleData.java @@ -14,11 +14,11 @@ import org.bukkit.util.Vector; import com.google.gson.JsonObject; import net.Indyuce.mmoitems.MMOItems; -import net.Indyuce.mmoitems.api.itemgen.GeneratedItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; import net.Indyuce.mmoitems.api.player.PlayerData; import net.Indyuce.mmoitems.particle.api.ParticleRunnable; import net.Indyuce.mmoitems.particle.api.ParticleType; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.mmogroup.mmolib.MMOLib; @@ -143,7 +143,7 @@ public class ParticleData implements StatData, RandomStatData { } @Override - public StatData randomize(GeneratedItemBuilder builder) { + public StatData randomize(MMOItemBuilder builder) { return this; } } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/SoundListData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/SoundListData.java index 2df91853..80691ab3 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/SoundListData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/SoundListData.java @@ -7,8 +7,8 @@ import java.util.Set; import org.apache.commons.lang.Validate; import net.Indyuce.mmoitems.api.CustomSound; -import net.Indyuce.mmoitems.api.itemgen.GeneratedItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.Mergeable; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -47,7 +47,7 @@ public class SoundListData implements StatData, Mergeable, RandomStatData { } @Override - public StatData randomize(GeneratedItemBuilder builder) { + public StatData randomize(MMOItemBuilder builder) { return new SoundListData(new HashMap<>(sounds)); } } \ No newline at end of file diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/StringData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/StringData.java index 228cb9b3..d7490821 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/StringData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/StringData.java @@ -1,7 +1,7 @@ package net.Indyuce.mmoitems.stat.data; -import net.Indyuce.mmoitems.api.itemgen.GeneratedItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; public class StringData implements StatData, RandomStatData { @@ -21,7 +21,7 @@ public class StringData implements StatData, RandomStatData { } @Override - public StatData randomize(GeneratedItemBuilder builder) { + public StatData randomize(MMOItemBuilder builder) { return this; } } \ No newline at end of file diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/StringListData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/StringListData.java index f2eec8cd..2f27e34a 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/StringListData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/StringListData.java @@ -8,8 +8,8 @@ import org.apache.commons.lang.Validate; import com.google.gson.JsonArray; -import net.Indyuce.mmoitems.api.itemgen.GeneratedItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.Mergeable; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -39,7 +39,7 @@ public class StringListData implements StatData, RandomStatData, Mergeable { } @Override - public StatData randomize(GeneratedItemBuilder builder) { + public StatData randomize(MMOItemBuilder builder) { return new StringListData(new ArrayList<>(list)); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/UpgradeData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/UpgradeData.java index b32d8fa5..14bb1c7e 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/UpgradeData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/UpgradeData.java @@ -6,9 +6,9 @@ import com.google.gson.JsonObject; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.UpgradeTemplate; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.itemgen.GeneratedItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.type.ItemStat; import net.mmogroup.mmolib.MMOLib; @@ -123,7 +123,7 @@ public class UpgradeData implements StatData, RandomStatData { } @Override - public StatData randomize(GeneratedItemBuilder builder) { + public StatData randomize(MMOItemBuilder builder) { return this; } } \ No newline at end of file diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomAbilityData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomAbilityData.java index 3f8a96ab..dc7582e0 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomAbilityData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomAbilityData.java @@ -10,8 +10,8 @@ import org.bukkit.configuration.ConfigurationSection; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ability.Ability; import net.Indyuce.mmoitems.api.ability.Ability.CastingMode; -import net.Indyuce.mmoitems.api.itemgen.NumericStatFormula; -import net.Indyuce.mmoitems.api.itemgen.GeneratedItemBuilder; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; +import net.Indyuce.mmoitems.api.util.NumericStatFormula; import net.Indyuce.mmoitems.stat.data.AbilityData; public class RandomAbilityData { @@ -65,7 +65,7 @@ public class RandomAbilityData { return modifiers.get(path); } - public AbilityData randomize(GeneratedItemBuilder builder) { + public AbilityData randomize(MMOItemBuilder builder) { AbilityData data = new AbilityData(ability, castMode); modifiers.forEach((key, formula) -> data.setModifier(key, formula.calculate(builder.getLevel()))); return data; diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomAbilityListData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomAbilityListData.java index c1389264..5138d886 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomAbilityListData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomAbilityListData.java @@ -3,8 +3,7 @@ package net.Indyuce.mmoitems.stat.data.random; import java.util.LinkedHashSet; import java.util.Set; -import net.Indyuce.mmoitems.api.itemgen.GeneratedItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; import net.Indyuce.mmoitems.stat.data.AbilityListData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -25,7 +24,7 @@ public class RandomAbilityListData implements RandomStatData { } @Override - public StatData randomize(GeneratedItemBuilder builder) { + public StatData randomize(MMOItemBuilder builder) { AbilityListData list = new AbilityListData(); abilities.forEach(random -> list.add(random.randomize(builder))); return list; diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomBooleanData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomBooleanData.java index 77fe0aff..8258e59a 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomBooleanData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomBooleanData.java @@ -2,8 +2,7 @@ package net.Indyuce.mmoitems.stat.data.random; import java.util.Random; -import net.Indyuce.mmoitems.api.itemgen.GeneratedItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; import net.Indyuce.mmoitems.stat.data.BooleanData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -21,7 +20,7 @@ public class RandomBooleanData implements RandomStatData { } @Override - public StatData randomize(GeneratedItemBuilder builder) { + public StatData randomize(MMOItemBuilder builder) { return new BooleanData(random.nextDouble() < chance); } } \ No newline at end of file diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomElementListData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomElementListData.java index d2ec7b4f..22104c69 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomElementListData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomElementListData.java @@ -8,9 +8,8 @@ import org.apache.commons.lang.Validate; import org.bukkit.configuration.ConfigurationSection; import net.Indyuce.mmoitems.api.Element; -import net.Indyuce.mmoitems.api.itemgen.GeneratedItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.NumericStatFormula; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; +import net.Indyuce.mmoitems.api.util.NumericStatFormula; import net.Indyuce.mmoitems.stat.data.ElementListData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -54,7 +53,7 @@ public class RandomElementListData implements StatData, RandomStatData { } @Override - public StatData randomize(GeneratedItemBuilder builder) { + public StatData randomize(MMOItemBuilder builder) { ElementListData elements = new ElementListData(); damage.forEach((element, formula) -> elements.setDamage(element, formula.calculate(builder.getLevel()))); defense.forEach((element, formula) -> elements.setDefense(element, formula.calculate(builder.getLevel()))); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomEnchantListData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomEnchantListData.java index ba072e1c..4a062afc 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomEnchantListData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomEnchantListData.java @@ -9,9 +9,8 @@ import org.bukkit.NamespacedKey; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.enchantments.Enchantment; -import net.Indyuce.mmoitems.api.itemgen.GeneratedItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.NumericStatFormula; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; +import net.Indyuce.mmoitems.api.util.NumericStatFormula; import net.Indyuce.mmoitems.stat.data.EnchantListData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -41,7 +40,7 @@ public class RandomEnchantListData implements RandomStatData { } @Override - public StatData randomize(GeneratedItemBuilder builder) { + public StatData randomize(MMOItemBuilder builder) { EnchantListData list = new EnchantListData(); enchants.forEach((enchant, formula) -> list.addEnchant(enchant, (int) Math.max(formula.calculate(builder.getLevel()), enchant.getStartLevel()))); return list; diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomPotionEffectData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomPotionEffectData.java index 5b7390a5..23c27c91 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomPotionEffectData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomPotionEffectData.java @@ -5,8 +5,8 @@ import org.bukkit.configuration.ConfigurationSection; import org.bukkit.potion.PotionEffectType; import net.Indyuce.mmoitems.MMOUtils; -import net.Indyuce.mmoitems.api.itemgen.GeneratedItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.NumericStatFormula; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; +import net.Indyuce.mmoitems.api.util.NumericStatFormula; import net.Indyuce.mmoitems.stat.data.PotionEffectData; public class RandomPotionEffectData { @@ -45,7 +45,7 @@ public class RandomPotionEffectData { return level; } - public PotionEffectData randomize(GeneratedItemBuilder builder) { + public PotionEffectData randomize(MMOItemBuilder builder) { return new PotionEffectData(type, duration.calculate(builder.getLevel()), (int) level.calculate(builder.getLevel())); } } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomPotionEffectListData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomPotionEffectListData.java index 9f56ba76..eeee8c09 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomPotionEffectListData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomPotionEffectListData.java @@ -6,8 +6,7 @@ import java.util.List; import org.apache.commons.lang.Validate; import org.bukkit.configuration.ConfigurationSection; -import net.Indyuce.mmoitems.api.itemgen.GeneratedItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; import net.Indyuce.mmoitems.stat.data.PotionEffectListData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -35,7 +34,7 @@ public class RandomPotionEffectListData implements RandomStatData { } @Override - public StatData randomize(GeneratedItemBuilder builder) { + public StatData randomize(MMOItemBuilder builder) { PotionEffectListData list = new PotionEffectListData(); effects.forEach(random -> list.add(random.randomize(builder))); return list; diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomRequiredLevelData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomRequiredLevelData.java index 1a50ab81..3792a418 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomRequiredLevelData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomRequiredLevelData.java @@ -1,7 +1,7 @@ package net.Indyuce.mmoitems.stat.data.random; -import net.Indyuce.mmoitems.api.itemgen.GeneratedItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.NumericStatFormula; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; +import net.Indyuce.mmoitems.api.util.NumericStatFormula; import net.Indyuce.mmoitems.stat.data.RequiredLevelData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -15,7 +15,7 @@ public class RandomRequiredLevelData extends NumericStatFormula { } @Override - public StatData randomize(GeneratedItemBuilder builder) { + public StatData randomize(MMOItemBuilder builder) { return new RequiredLevelData(calculate(builder.getLevel())); } } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomRestoreData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomRestoreData.java index e1c5a8f6..dfe94330 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomRestoreData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomRestoreData.java @@ -3,9 +3,8 @@ package net.Indyuce.mmoitems.stat.data.random; import org.apache.commons.lang.Validate; import org.bukkit.configuration.ConfigurationSection; -import net.Indyuce.mmoitems.api.itemgen.GeneratedItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.NumericStatFormula; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; +import net.Indyuce.mmoitems.api.util.NumericStatFormula; import net.Indyuce.mmoitems.stat.data.RestoreData; import net.Indyuce.mmoitems.stat.data.type.StatData; @@ -33,7 +32,7 @@ public class RandomRestoreData implements RandomStatData { } @Override - public StatData randomize(GeneratedItemBuilder builder) { + public StatData randomize(MMOItemBuilder builder) { return new RestoreData(health.calculate(builder.getLevel()), food.calculate(builder.getLevel()), saturation.calculate(builder.getLevel())); } } \ No newline at end of file diff --git a/src/main/java/net/Indyuce/mmoitems/api/itemgen/RandomStatData.java b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomStatData.java similarity index 72% rename from src/main/java/net/Indyuce/mmoitems/api/itemgen/RandomStatData.java rename to src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomStatData.java index c79eac2b..ea663cc8 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/itemgen/RandomStatData.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/data/random/RandomStatData.java @@ -1,5 +1,6 @@ -package net.Indyuce.mmoitems.api.itemgen; +package net.Indyuce.mmoitems.stat.data.random; +import net.Indyuce.mmoitems.api.item.template.MMOItemBuilder; import net.Indyuce.mmoitems.stat.data.type.StatData; /** @@ -16,5 +17,5 @@ public interface RandomStatData { * @return A random stat data instance which will then be merged onto the * base item template */ - public StatData randomize(GeneratedItemBuilder builder); + public StatData randomize(MMOItemBuilder builder); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/type/BooleanStat.java b/src/main/java/net/Indyuce/mmoitems/stat/type/BooleanStat.java index 05056ed3..4ff19f75 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/type/BooleanStat.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/type/BooleanStat.java @@ -10,13 +10,13 @@ import org.bukkit.inventory.ItemStack; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.BooleanData; import net.Indyuce.mmoitems.stat.data.random.RandomBooleanData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.mmogroup.mmolib.api.item.ItemTag; import net.mmogroup.mmolib.api.util.AltChar; @@ -33,7 +33,7 @@ public class BooleanStat extends ItemStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { if (((BooleanData) data).isEnabled()) { item.addItemTag(new ItemTag(getNBTPath(), true)); item.getLore().insert(getPath(), MMOItems.plugin.getLanguage().getStatFormat(getPath())); diff --git a/src/main/java/net/Indyuce/mmoitems/stat/type/DisableStat.java b/src/main/java/net/Indyuce/mmoitems/stat/type/DisableStat.java index 4de3aa3c..4e08d825 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/type/DisableStat.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/type/DisableStat.java @@ -4,7 +4,7 @@ import org.apache.commons.lang.Validate; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; import net.Indyuce.mmoitems.stat.data.BooleanData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.mmogroup.mmolib.api.item.ItemTag; @@ -29,7 +29,7 @@ public class DisableStat extends BooleanStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { if (((BooleanData) data).isEnabled()) item.addItemTag(new ItemTag("MMOITEMS_" + getId(), true)); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/type/DoubleStat.java b/src/main/java/net/Indyuce/mmoitems/stat/type/DoubleStat.java index 42070c84..1dc27bb7 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/type/DoubleStat.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/type/DoubleStat.java @@ -3,14 +3,14 @@ package net.Indyuce.mmoitems.stat.type; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.NumericStatFormula; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; +import net.Indyuce.mmoitems.api.util.NumericStatFormula; import net.Indyuce.mmoitems.api.util.StatFormat; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.DoubleData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.data.type.UpgradeInfo; import net.mmogroup.mmolib.api.item.ItemTag; @@ -53,7 +53,7 @@ public class DoubleStat extends ItemStat implements Upgradable { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { double value = ((DoubleData) data).generateNewValue(); item.addItemTag(new ItemTag(getNBTPath(), value)); if (value > 0) diff --git a/src/main/java/net/Indyuce/mmoitems/stat/type/InternalStat.java b/src/main/java/net/Indyuce/mmoitems/stat/type/InternalStat.java index e66575b1..67247ed5 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/type/InternalStat.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/type/InternalStat.java @@ -7,9 +7,9 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.ItemStack; import net.Indyuce.mmoitems.api.ConfigFile; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; public abstract class InternalStat extends ItemStat { diff --git a/src/main/java/net/Indyuce/mmoitems/stat/type/ItemStat.java b/src/main/java/net/Indyuce/mmoitems/stat/type/ItemStat.java index d3709ff0..fa8a4a89 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/type/ItemStat.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/type/ItemStat.java @@ -3,13 +3,13 @@ package net.Indyuce.mmoitems.stat.type; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.Type; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.*; import net.Indyuce.mmoitems.stat.block.*; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.mmogroup.mmolib.MMOLib; import net.mmogroup.mmolib.version.VersionMaterial; @@ -291,7 +291,7 @@ public abstract class ItemStat { * @param data * Stat data being applied */ - public abstract void whenApplied(MMOItemBuilder item, StatData data); + public abstract void whenApplied(ItemStackBuilder item, StatData data); /** * Called when the stat item is clicked in the item edition menu diff --git a/src/main/java/net/Indyuce/mmoitems/stat/type/StringStat.java b/src/main/java/net/Indyuce/mmoitems/stat/type/StringStat.java index d8cf503b..54fbfe9e 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/type/StringStat.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/type/StringStat.java @@ -11,12 +11,12 @@ import org.bukkit.inventory.ItemStack; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.edition.StatEdition; -import net.Indyuce.mmoitems.api.item.MMOItem; -import net.Indyuce.mmoitems.api.item.ReadMMOItem; -import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder; -import net.Indyuce.mmoitems.api.itemgen.RandomStatData; +import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem; import net.Indyuce.mmoitems.gui.edition.EditionInventory; import net.Indyuce.mmoitems.stat.data.StringData; +import net.Indyuce.mmoitems.stat.data.random.RandomStatData; import net.Indyuce.mmoitems.stat.data.type.StatData; import net.mmogroup.mmolib.MMOLib; import net.mmogroup.mmolib.api.item.ItemTag; @@ -33,7 +33,7 @@ public class StringStat extends ItemStat { } @Override - public void whenApplied(MMOItemBuilder item, StatData data) { + public void whenApplied(ItemStackBuilder item, StatData data) { item.addItemTag(new ItemTag(getNBTPath(), data.toString())); item.getLore().insert(getPath(), data.toString()); } diff --git a/src/main/java/net/Indyuce/mmoitems/stat/type/Upgradable.java b/src/main/java/net/Indyuce/mmoitems/stat/type/Upgradable.java index 83ca7541..714cf696 100644 --- a/src/main/java/net/Indyuce/mmoitems/stat/type/Upgradable.java +++ b/src/main/java/net/Indyuce/mmoitems/stat/type/Upgradable.java @@ -1,6 +1,6 @@ package net.Indyuce.mmoitems.stat.type; -import net.Indyuce.mmoitems.api.item.MMOItem; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; import net.Indyuce.mmoitems.stat.data.type.UpgradeInfo; public interface Upgradable { diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index e9c656e3..8fc8140e 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -28,6 +28,26 @@ disable-abilities-in-offhand: false # 10 ticks which corresponds to 2 inventory updates a second. inventory-update-delay: 10 +# When generating an item, the item gen must +# choose an item level which coincides with +# the player's level (otherwise unplayable). +# +# The item level is modeled by a gaussian +# random variable which mean is the player level. +# You can edit the standard deviation here. +# +# Leave it like this if don't you know +# what it does, default value is fine. +item-level-spread: 2 + +# When an item is generated with no tier, +# this is the capacity it should have. +default-item-capacity: + base: 3 + scale: 0 + spread: 0 + max-spread: 0 + # Changes the default value for some stats. default: attack-speed: 0.67 diff --git a/src/main/resources/default/generator/config.yml b/src/main/resources/default/generator/config.yml index 41bb679d..428df685 100644 --- a/src/main/resources/default/generator/config.yml +++ b/src/main/resources/default/generator/config.yml @@ -5,15 +5,7 @@ # modifier capacity they should have. tiers: uncommon: - chance: 0.15 - capacity: - base: 6 - - # Scales on the item level - scale: .1 - - spread: .1 - max-spread: .3 + rare: chance: 0.06 capacity: @@ -22,19 +14,8 @@ tiers: spread: .1 max-spread: .3 legendary: - chance: 0.01 - capacity: - base: 12 - scale: .2 - spread: .1 - max-spread: .3 - mythical: - chance: 0.003 - capacity: - base: 15 - scale: .3 - spread: .1 - max-spread: .3 + + default: capacity: base: 3 diff --git a/src/main/resources/default/generator/templates/example-templates.yml b/src/main/resources/default/generator/templates/example-templates.yml index 084b129e..ab83a8eb 100644 --- a/src/main/resources/default/generator/templates/example-templates.yml +++ b/src/main/resources/default/generator/templates/example-templates.yml @@ -1,60 +1,5 @@ -# Example item -LONG_SWORD: - - # Basic item information - type: SWORD - - # Base item data - base: - material: IRON_SWORD - name: '&fLong Sword' - attack-speed: 1.6 - attack-damage: - base: 6 - scale: 1.2 - spread: .1 - max-spread: .3 - required-level: - base: 0 - scale: 1 - element: - fire: - damage: 10 - - # Modifiers which have a chance to be rolled - modifiers: - sharp: - chance: 0.5 - parent: sharp - fiery: - chance: 0.5 - parent: fiery -COMPOSITE_BOW: - type: BOW - base: - material: BOW - name: '&fComposite Bow' - critical-strike-chance: 30.0 - attack-damage: - base: 7 - scale: 0.3 - spread: .1 - max-spread: .3 - required-level: - base: 0 - scale: 1 - modifiers: - swiftness: - weight: 3 - parent: swiftness - heavy: - chance: 0.05 - weight: 3 - parent: heavy - doom: - weight: 5 - parent: impending-doom \ No newline at end of file + diff --git a/src/main/resources/default/item-tiers.yml b/src/main/resources/default/item-tiers.yml index 5e5de931..4beda66f 100644 --- a/src/main/resources/default/item-tiers.yml +++ b/src/main/resources/default/item-tiers.yml @@ -48,6 +48,17 @@ UNCOMMON: # https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Color.html color: 'GRAY' + generation: + chance: 0.15 + capacity: + base: 6 + + # Scales on the item level + scale: .1 + + spread: .1 + max-spread: .3 + deconstruct-item: success: coef: 1 @@ -65,6 +76,13 @@ RARE: name: 'Rare' range: 6 prefix: '&6' + generation: + chance: 0.01 + capacity: + base: 12 + scale: .2 + spread: .1 + max-spread: .3 deconstruct-item: success: coef: 1 @@ -116,6 +134,13 @@ MYTHICAL: name: 'Mythical' prefix: '&5' range: 6 + generation: + chance: 0.003 + capacity: + base: 15 + scale: .3 + spread: .1 + max-spread: .3 deconstruct-item: success: coef: 1 diff --git a/src/main/resources/default/item/bow.yml b/src/main/resources/default/item/bow.yml index 72cf2851..18e10c53 100644 --- a/src/main/resources/default/item/bow.yml +++ b/src/main/resources/default/item/bow.yml @@ -1,3 +1,28 @@ +COMPOSITE_BOW: + base: + material: BOW + name: '&fComposite Bow' + critical-strike-chance: 30.0 + attack-damage: + base: 7 + scale: 0.3 + spread: .1 + max-spread: .3 + required-level: + base: 0 + scale: 1 + modifiers: + swiftness: + weight: 3 + parent: swiftness + heavy: + chance: 0.05 + weight: 3 + parent: heavy + doom: + weight: 5 + parent: impending-doom + HELL_BOW: material: BOW enchants: diff --git a/src/main/resources/default/item/sword.yml b/src/main/resources/default/item/sword.yml index fbc2da5a..8bd550fb 100644 --- a/src/main/resources/default/item/sword.yml +++ b/src/main/resources/default/item/sword.yml @@ -1,3 +1,32 @@ +# Example item +LONG_SWORD: + + # Base item data + base: + material: IRON_SWORD + name: '&fLong Sword' + attack-speed: 1.6 + attack-damage: + base: 6 + scale: 1.2 + spread: .1 + max-spread: .3 + required-level: + base: 0 + scale: 1 + element: + fire: + damage: 10 + + # Modifiers which have a chance to be rolled + modifiers: + sharp: + chance: 0.5 + parent: sharp + fiery: + chance: 0.5 + parent: fiery + CUTLASS: material: IRON_SWORD attack-damage: 6.0=8.0 diff --git a/src/main/resources/default/generator/modifiers/example-modifiers.yml b/src/main/resources/default/modifiers/example-modifiers.yml similarity index 100% rename from src/main/resources/default/generator/modifiers/example-modifiers.yml rename to src/main/resources/default/modifiers/example-modifiers.yml