forked from Upstream/mmocore
Change the loading of experienceSources to adapt to linked experience sources.
This commit is contained in:
parent
eac9cfa74e
commit
13eec448e4
@ -8,6 +8,7 @@ import net.Indyuce.mmocore.api.block.VanillaBlockType;
|
||||
import net.Indyuce.mmocore.experience.dispenser.ExperienceDispenser;
|
||||
import net.Indyuce.mmocore.experience.source.*;
|
||||
import net.Indyuce.mmocore.loot.chest.condition.*;
|
||||
import org.apache.commons.math3.analysis.function.Exp;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
|
||||
import net.Indyuce.mmocore.loot.droptable.dropitem.DropItem;
|
||||
@ -34,6 +35,9 @@ import net.Indyuce.mmocore.api.quest.trigger.Trigger;
|
||||
import io.lumine.mythic.lib.api.MMOLineConfig;
|
||||
import org.checkerframework.checker.units.qual.C;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
|
||||
public class DefaultMMOLoader extends MMOLoader {
|
||||
@ -121,8 +125,10 @@ public class DefaultMMOLoader extends MMOLoader {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public ExperienceSource<?> loadExperienceSource(MMOLineConfig config, ExperienceDispenser dispenser) {
|
||||
public List<ExperienceSource<?>> loadExperienceSource(MMOLineConfig config, ExperienceDispenser dispenser) {
|
||||
if(config.getKey().equals("from")) {
|
||||
String source=config.getString("source");
|
||||
ConfigFile configFile= new ConfigFile("exp-sources");
|
||||
@ -130,66 +136,67 @@ public class DefaultMMOLoader extends MMOLoader {
|
||||
MMOCore.plugin.getLogger().log(Level.WARNING,"Couldn't find "+source+" in experience-sources.yml");
|
||||
return null;
|
||||
}
|
||||
List<ExperienceSource<?>> list= new ArrayList<>();
|
||||
for(String expSource: configFile.getConfig().getStringList(source)) {
|
||||
loadExperienceSource(new MMOLineConfig(expSource),dispenser);
|
||||
list.addAll(loadExperienceSource(new MMOLineConfig(expSource),dispenser));
|
||||
}
|
||||
return list;
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (config.getKey().equals("resource"))
|
||||
return new ResourceExperienceSource(dispenser, config);
|
||||
return Arrays.asList(new ResourceExperienceSource(dispenser, config));
|
||||
|
||||
if (config.getKey().equals("climb"))
|
||||
return new ClimbExperienceSource(dispenser, config);
|
||||
return Arrays.asList(new ClimbExperienceSource(dispenser, config));
|
||||
|
||||
if (config.getKey().equals("eat")) {
|
||||
return new EatExperienceSource(dispenser, config);
|
||||
return Arrays.asList(new EatExperienceSource(dispenser, config));
|
||||
}
|
||||
|
||||
if (config.getKey().equals("damagedealt"))
|
||||
return new DamageDealtExperienceSource(dispenser, config);
|
||||
return Arrays.asList(new DamageDealtExperienceSource(dispenser, config));
|
||||
|
||||
if (config.getKey().equals("damagetaken"))
|
||||
return new DamageTakenExperienceSource(dispenser, config);
|
||||
return Arrays.asList(new DamageTakenExperienceSource(dispenser, config));
|
||||
|
||||
if (config.getKey().equals("move"))
|
||||
return new MoveExperienceSource(dispenser, config);
|
||||
return Arrays.asList(new MoveExperienceSource(dispenser, config));
|
||||
|
||||
if (config.getKey().equals("play"))
|
||||
return new PlayExperienceSource(dispenser, config);
|
||||
return Arrays.asList(new PlayExperienceSource(dispenser, config));
|
||||
|
||||
if (config.getKey().equals("projectile"))
|
||||
return new ProjectileExperienceSource(dispenser, config);
|
||||
return Arrays.asList(new ProjectileExperienceSource(dispenser, config));
|
||||
|
||||
if (config.getKey().equals("ride"))
|
||||
return new RideExperienceSource(dispenser, config);
|
||||
return Arrays.asList(new RideExperienceSource(dispenser, config));
|
||||
|
||||
if (config.getKey().equals("tame"))
|
||||
return new TameExperienceSource(dispenser, config);
|
||||
return Arrays.asList(new TameExperienceSource(dispenser, config));
|
||||
|
||||
if (config.getKey().equals("killmob"))
|
||||
return new KillMobExperienceSource(dispenser, config);
|
||||
return Arrays.asList(new KillMobExperienceSource(dispenser, config));
|
||||
|
||||
if (config.getKey().equals("mineblock"))
|
||||
return new MineBlockExperienceSource(dispenser, config);
|
||||
return Arrays.asList(new MineBlockExperienceSource(dispenser, config));
|
||||
|
||||
if (config.getKey().equals("placeblock"))
|
||||
return new PlaceBlockExperienceSource(dispenser, config);
|
||||
return Arrays.asList(new PlaceBlockExperienceSource(dispenser, config));
|
||||
|
||||
if (config.getKey().equals("brewpotion"))
|
||||
return new BrewPotionExperienceSource(dispenser, config);
|
||||
return Arrays.asList(new BrewPotionExperienceSource(dispenser, config));
|
||||
|
||||
if (config.getKey().equals("smeltitem"))
|
||||
return new SmeltItemExperienceSource(dispenser, config);
|
||||
return Arrays.asList(new SmeltItemExperienceSource(dispenser, config));
|
||||
|
||||
if (config.getKey().equals("enchantitem"))
|
||||
return new EnchantItemExperienceSource(dispenser, config);
|
||||
return Arrays.asList(new EnchantItemExperienceSource(dispenser, config));
|
||||
|
||||
if (config.getKey().equals("repairitem"))
|
||||
return new RepairItemExperienceSource(dispenser, config);
|
||||
return Arrays.asList(new RepairItemExperienceSource(dispenser, config));
|
||||
|
||||
if (config.getKey().equals("craftitem"))
|
||||
return new CraftItemExperienceSource(dispenser, config);
|
||||
return Arrays.asList(new CraftItemExperienceSource(dispenser, config));
|
||||
|
||||
return null;
|
||||
}
|
||||
|
@ -10,6 +10,8 @@ import net.Indyuce.mmocore.experience.source.type.ExperienceSource;
|
||||
import net.Indyuce.mmocore.api.quest.objective.Objective;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* MMOLoader was initially an interface but it is now a
|
||||
* class so devs do not have to add a new method
|
||||
@ -33,7 +35,7 @@ public class MMOLoader {
|
||||
return null;
|
||||
}
|
||||
|
||||
public ExperienceSource<?> loadExperienceSource(MMOLineConfig config, ExperienceDispenser dispenser) {
|
||||
public List<ExperienceSource<?>> loadExperienceSource(MMOLineConfig config, ExperienceDispenser dispenser) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -84,7 +84,7 @@ public class PlayerClass extends PostLoadObject implements ExperienceObject {
|
||||
profileField.set(meta, gp);
|
||||
icon.setItemMeta(meta);
|
||||
} catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException
|
||||
| SecurityException exception) {
|
||||
| SecurityException exception) {
|
||||
throw new IllegalArgumentException("Could not apply playerhead texture: " + exception.getMessage());
|
||||
}
|
||||
|
||||
@ -159,8 +159,9 @@ public class PlayerClass extends PostLoadObject implements ExperienceObject {
|
||||
if (config.contains("main-exp-sources.yml")) {
|
||||
for (String key : config.getStringList("main-exp-sources.yml"))
|
||||
try {
|
||||
ExperienceSource<?> source = MMOCore.plugin.loadManager.loadExperienceSource(new MMOLineConfig(key), this);
|
||||
MMOCore.plugin.experience.registerSource(source);
|
||||
List<ExperienceSource<?>> list = MMOCore.plugin.loadManager.loadExperienceSource(new MMOLineConfig(key), this);
|
||||
for (ExperienceSource source : list)
|
||||
MMOCore.plugin.experience.registerSource(source);
|
||||
} catch (IllegalArgumentException exception) {
|
||||
MMOCore.plugin.getLogger().log(Level.WARNING, "Could not load exp source '" + key + "' from class '"
|
||||
+ id + "': " + exception.getMessage());
|
||||
|
@ -0,0 +1,15 @@
|
||||
package net.Indyuce.mmocore.experience;
|
||||
|
||||
import net.Indyuce.mmocore.experience.source.type.ExperienceSource;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ExperienceSourceList {
|
||||
List<ExperienceSource> experienceSourceList= new ArrayList<>();
|
||||
|
||||
public void add(ExperienceSource source) {
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -6,6 +6,7 @@ import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.api.util.math.formula.LinearValue;
|
||||
import net.Indyuce.mmocore.experience.droptable.ExperienceTable;
|
||||
import net.Indyuce.mmocore.experience.source.type.ExperienceSource;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
@ -14,6 +15,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.logging.Level;
|
||||
@ -64,10 +66,13 @@ public class Profession extends PostLoadObject implements ExperienceObject {
|
||||
|
||||
maxLevel = config.getInt("max-level");
|
||||
|
||||
if (config.contains("exp-sources.yml"))
|
||||
for (String key : config.getStringList("exp-sources.yml"))
|
||||
if (config.contains("exp-sources"))
|
||||
for (String key : config.getStringList("exp-sources"))
|
||||
try {
|
||||
MMOCore.plugin.experience.registerSource(MMOCore.plugin.loadManager.loadExperienceSource(new MMOLineConfig(key), this));
|
||||
List<ExperienceSource<?>> experienceSourceList=MMOCore.plugin.loadManager.loadExperienceSource(new MMOLineConfig(key), this);
|
||||
for(ExperienceSource experienceSource: experienceSourceList) {
|
||||
MMOCore.plugin.experience.registerSource(experienceSource);
|
||||
}
|
||||
} catch (IllegalArgumentException exception) {
|
||||
MMOCore.plugin.getLogger().log(Level.WARNING,
|
||||
"Could not register exp source '" + key + "' from profession '" + id + "': " + exception.getMessage());
|
||||
|
@ -41,9 +41,13 @@ public class MMOLoadManager {
|
||||
return load(Objective.class, config, loader -> loader.loadObjective(config, section));
|
||||
}
|
||||
|
||||
/**
|
||||
Returns a List of Experience Source as one experience source can be linked to others.
|
||||
Loading one exp source can in fact oad multiples if they are linked
|
||||
*/
|
||||
@Deprecated
|
||||
public ExperienceSource<?> loadExperienceSource(MMOLineConfig config, ExperienceDispenser dispenser) {
|
||||
return load(ExperienceSource.class, config, loader -> loader.loadExperienceSource(config, dispenser));
|
||||
public List<ExperienceSource<?>> loadExperienceSource(MMOLineConfig config, ExperienceDispenser dispenser) {
|
||||
return load(List.class, config, loader -> loader.loadExperienceSource(config, dispenser));
|
||||
}
|
||||
|
||||
public Trigger loadTrigger(MMOLineConfig config) {
|
||||
|
Loading…
Reference in New Issue
Block a user