mirror of
https://gitlab.com/phoenix-dvpmt/mmoitems.git
synced 2025-02-02 11:21:20 +01:00
Merged normal items and gen templates
This commit is contained in:
parent
9f9e0524c9
commit
cadced36aa
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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<ItemStack> generateDeconstructedItem() {
|
||||
return hasDropTable() ? deconstruct.read(false) : new ArrayList<>();
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package net.Indyuce.mmoitems.api.droptable;
|
||||
package net.Indyuce.mmoitems.api.droptable.item;
|
||||
|
||||
import java.util.Random;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
62
src/main/java/net/Indyuce/mmoitems/api/item/LootBuilder.java
Normal file
62
src/main/java/net/Indyuce/mmoitems/api/item/LootBuilder.java
Normal file
@ -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<MMOItemTemplate> 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<MMOItemTemplate> filter) {
|
||||
all.removeIf(not(filter));
|
||||
return this;
|
||||
}
|
||||
|
||||
public MMOItem rollLoot() {
|
||||
Optional<MMOItemTemplate> found = all.stream().findAny();
|
||||
return found.isPresent() ? found.get().newBuilder(itemLevel, itemTier).build() : null;
|
||||
}
|
||||
|
||||
private <T> Predicate<T> not(Predicate<T> predicate) {
|
||||
return t -> !predicate.test(t);
|
||||
}
|
||||
}
|
@ -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(
|
@ -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;
|
||||
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
@ -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;
|
@ -1,4 +1,4 @@
|
||||
package net.Indyuce.mmoitems.api.item;
|
||||
package net.Indyuce.mmoitems.api.item.mmoitem;
|
||||
|
||||
import java.util.logging.Level;
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/***
|
@ -1,4 +1,4 @@
|
||||
package net.Indyuce.mmoitems.api.item;
|
||||
package net.Indyuce.mmoitems.api.item.mmoitem;
|
||||
|
||||
import net.mmogroup.mmolib.api.item.NBTItem;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package net.Indyuce.mmoitems.api.item;
|
||||
package net.Indyuce.mmoitems.api.item.mmoitem;
|
||||
|
||||
import java.util.logging.Level;
|
||||
|
@ -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<GenerationModifier> rollModifiers(GenerationTemplate template) {
|
||||
private Collection<TemplateModifier> rollModifiers(MMOItemTemplate template) {
|
||||
if (!template.hasOption(TemplateOption.ROLL_MODIFIER_CHECK_ORDER))
|
||||
return template.getModifiers();
|
||||
|
||||
List<GenerationModifier> modifiers = new ArrayList<>(template.getModifiers());
|
||||
List<TemplateModifier> modifiers = new ArrayList<>(template.getModifiers());
|
||||
Collections.shuffle(modifiers);
|
||||
return modifiers;
|
||||
}
|
@ -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<ItemStat, RandomStatData> base = new HashMap<>();
|
||||
|
||||
private final Set<GenerationModifier> modifiers = new LinkedHashSet<>();
|
||||
private final Set<TemplateModifier> modifiers = new LinkedHashSet<>();
|
||||
private final Set<TemplateOption> 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<GenerationModifier> getModifiers() {
|
||||
public Set<TemplateModifier> 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 {
|
@ -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;
|
@ -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);
|
@ -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<GenerationTemplate> {
|
||||
public class ClassFilter implements Predicate<MMOItemTemplate> {
|
||||
private final String name;
|
||||
|
||||
public ClassFilter(RPGPlayer player) {
|
||||
@ -19,7 +19,7 @@ public class ClassFilter implements Predicate<GenerationTemplate> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(GenerationTemplate template) {
|
||||
public boolean test(MMOItemTemplate template) {
|
||||
if (!template.getBaseItemData().containsKey(ItemStat.REQUIRED_CLASS))
|
||||
return true;
|
||||
|
@ -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<MMOItemTemplate> {
|
||||
private final Type type;
|
||||
|
||||
public TypeFilter(Type type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(MMOItemTemplate template) {
|
||||
return template.getType().equals(type);
|
||||
}
|
||||
}
|
@ -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<GenerationTemplate> 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<GenerationTemplate> filter) {
|
||||
all.removeIf(not(filter));
|
||||
return this;
|
||||
}
|
||||
|
||||
public MMOItem rollLoot() {
|
||||
Optional<GenerationTemplate> found = all.stream().findAny();
|
||||
return found.isPresent() ? found.get().newBuilder(itemLevel, itemTier).build() : null;
|
||||
}
|
||||
|
||||
private <T> Predicate<T> not(Predicate<T> predicate) {
|
||||
return t -> !predicate.test(t);
|
||||
}
|
||||
}
|
@ -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<GenerationTemplate> {
|
||||
private final Type type;
|
||||
|
||||
public TypeFilter(Type type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(GenerationTemplate template) {
|
||||
return template.getType().equals(type);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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()));
|
||||
}
|
||||
}
|
@ -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();
|
||||
|
@ -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;
|
||||
|
@ -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());
|
||||
}
|
||||
|
@ -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));
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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<String, GenerationTemplate> templates = new HashMap<>();
|
||||
|
||||
/*
|
||||
* bank of item modifiers which can be used anywhere in generation templates
|
||||
* to make item generation easier.
|
||||
*/
|
||||
private final Map<String, GenerationModifier> 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<ItemTier, RandomTierInfo> 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<GenerationTemplate> getTemplates() {
|
||||
return templates.values();
|
||||
}
|
||||
|
||||
public Collection<GenerationModifier> 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;
|
||||
}
|
||||
}
|
@ -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<Type, CachedItems> cache = new HashMap<>();
|
||||
public class ItemManager {
|
||||
|
||||
public ItemManager() {
|
||||
runTaskTimerAsynchronously(MMOItems.plugin, 60 * 20, 2 * 60 * 20);
|
||||
/*
|
||||
* registered mmoitem templates
|
||||
*/
|
||||
private final Map<Type, Map<String, MMOItemTemplate>> templates = new HashMap<>();
|
||||
|
||||
/*
|
||||
* bank of item modifiers which can be used anywhere in generation templates
|
||||
* to make item generation easier.
|
||||
*/
|
||||
private final Map<String, TemplateModifier> 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<String, MMOItemTemplate> 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<TemplateModifier> 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<String, LoadedItem> 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<LoadedItem> 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<MMOItemTemplate> collectTemplates() {
|
||||
Set<MMOItemTemplate> 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());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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<CustomRecipe> craftingRecipes = new HashSet<>();
|
||||
private final Set<LoadedRecipe> 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<String> list) {
|
||||
registerRecipe(new CustomRecipe(MMOItems.plugin.getItems().getMMOItem(type, id).newBuilder().buildNBT(), list, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerShapelessRecipe(Type type, String id, List<String> 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<LoadedRecipe> getLoadedRecipes() {
|
||||
return loadedRecipes;
|
||||
}
|
||||
|
||||
public Set<CustomRecipe> getCustomRecipes() {
|
||||
return craftingRecipes;
|
||||
}
|
||||
|
||||
public Set<NamespacedKey> getNamespacedKeys() {
|
||||
return loadedRecipes.stream().map(recipe -> recipe.getKey()).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
public void sortRecipes() {
|
||||
List<CustomRecipe> 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<Recipe> 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;
|
||||
}
|
||||
}
|
||||
}
|
@ -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 {
|
||||
|
@ -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;
|
||||
|
@ -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<CustomRecipe> craftingRecipes = new HashSet<>();
|
||||
private final Set<LoadedRecipe> 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<String> list);
|
||||
public abstract void registerShapelessRecipe(Type type, String id, List<String> 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<LoadedRecipe> getLoadedRecipes() {
|
||||
return loadedRecipes;
|
||||
}
|
||||
|
||||
public Set<CustomRecipe> getCustomRecipes() {
|
||||
return craftingRecipes;
|
||||
}
|
||||
|
||||
public Set<NamespacedKey> getNamespacedKeys() {
|
||||
return loadedRecipes.stream().map(recipe -> recipe.getKey()).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
public void sortRecipes() {
|
||||
List<CustomRecipe> 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<Recipe> 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;
|
||||
}
|
||||
}
|
||||
}
|
@ -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<String> list) {
|
||||
registerRecipe(new CustomRecipe(MMOItems.plugin.getItems().getMMOItem(type, id).newBuilder().buildNBT(), list, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerShapelessRecipe(Type type, String id, List<String> list) {
|
||||
registerRecipe(new CustomRecipe(MMOItems.plugin.getItems().getMMOItem(type, id).newBuilder().buildNBT(), list, true));
|
||||
}
|
||||
}
|
@ -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<String> abilityLore = new ArrayList<>();
|
||||
boolean splitter = !MMOItems.plugin.getLanguage().abilitySplitter.equals("");
|
||||
|
||||
|
@ -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));
|
||||
|
@ -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)));
|
||||
|
@ -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()));
|
||||
}
|
||||
|
||||
|
@ -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)));
|
||||
|
@ -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)));
|
||||
|
@ -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<String> lore = new ArrayList<>();
|
||||
|
||||
|
@ -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<String> compatibleTypes = new ArrayList<>();
|
||||
JsonArray array = new JsonArray();
|
||||
((StringListData) data).getList().forEach(line -> {
|
||||
|
@ -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
|
||||
|
@ -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) {
|
||||
}
|
||||
}
|
@ -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()));
|
||||
}
|
||||
|
||||
|
@ -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 -> {
|
||||
|
@ -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());
|
||||
}
|
||||
|
@ -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))));
|
||||
}
|
||||
|
||||
|
@ -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());
|
||||
}
|
||||
|
@ -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<String> lore = new ArrayList<>();
|
||||
JsonArray array = new JsonArray();
|
||||
|
||||
|
@ -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()) {
|
||||
|
@ -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);
|
||||
|
@ -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()));
|
||||
}
|
||||
}
|
||||
|
@ -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()));
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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()));
|
||||
}
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user