Debug for all the experience source.

Added VanillaExperience & Resource ExperienceSource and added inCombat for Playing Experience Source.
This commit is contained in:
Guillaume 2022-05-09 18:59:17 +02:00
parent 3579a5f520
commit 68b309ec61
33 changed files with 136 additions and 88 deletions

11
pom.xml
View File

@ -39,10 +39,21 @@
</resources> </resources>
<plugins> <plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<outputDirectory>C:\Users\guill\Minecraft Server\Server\plugins</outputDirectory>
</configuration>
</plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version> <version>3.8.1</version>
<configuration> <configuration>
<source>9</source> <source>9</source>
<target>9</target> <target>9</target>

View File

@ -2,12 +2,14 @@ package net.Indyuce.mmocore.api.load;
import net.Indyuce.mmocore.experience.dispenser.ExperienceDispenser; import net.Indyuce.mmocore.experience.dispenser.ExperienceDispenser;
import net.Indyuce.mmocore.experience.source.*; import net.Indyuce.mmocore.experience.source.*;
import net.Indyuce.mmocore.loot.chest.condition.*;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import net.Indyuce.mmocore.api.block.BlockType; import net.Indyuce.mmocore.api.block.BlockType;
import net.Indyuce.mmocore.api.block.SkullBlockType; import net.Indyuce.mmocore.api.block.SkullBlockType;
import net.Indyuce.mmocore.api.block.VanillaBlockType; import net.Indyuce.mmocore.api.block.VanillaBlockType;
import net.Indyuce.mmocore.loot.droptable.dropitem.DropItem; import net.Indyuce.mmocore.loot.droptable.dropitem.DropItem;
import net.Indyuce.mmocore.loot.droptable.dropitem.DropTableDropItem; import net.Indyuce.mmocore.loot.droptable.dropitem.DropTableDropItem;
import net.Indyuce.mmocore.loot.droptable.dropitem.GoldDropItem; import net.Indyuce.mmocore.loot.droptable.dropitem.GoldDropItem;
import net.Indyuce.mmocore.loot.droptable.dropitem.NoteDropItem; import net.Indyuce.mmocore.loot.droptable.dropitem.NoteDropItem;
@ -119,9 +121,6 @@ public class DefaultMMOLoader extends MMOLoader {
if (config.getKey().equals("resource")) if (config.getKey().equals("resource"))
return new ResourceExperienceSource(dispenser, config); return new ResourceExperienceSource(dispenser, config);
if (config.getKey().equals("vanillaexperience"))
return new VanillaExperienceExperienceSource(dispenser, config);
if (config.getKey().equals("climb")) if (config.getKey().equals("climb"))
return new ClimbExperienceSource(dispenser, config); return new ClimbExperienceSource(dispenser, config);

View File

@ -2,7 +2,7 @@ package net.Indyuce.mmocore.api.load;
import io.lumine.mythic.lib.api.MMOLineConfig; import io.lumine.mythic.lib.api.MMOLineConfig;
import net.Indyuce.mmocore.api.block.BlockType; import net.Indyuce.mmocore.api.block.BlockType;
import net.Indyuce.mmocore.loot.condition.Condition; import net.Indyuce.mmocore.loot.chest.condition.Condition;
import net.Indyuce.mmocore.loot.droptable.dropitem.DropItem; import net.Indyuce.mmocore.loot.droptable.dropitem.DropItem;
import net.Indyuce.mmocore.experience.dispenser.ExperienceDispenser; import net.Indyuce.mmocore.experience.dispenser.ExperienceDispenser;
import net.Indyuce.mmocore.experience.source.type.ExperienceSource; import net.Indyuce.mmocore.experience.source.type.ExperienceSource;

View File

@ -321,7 +321,7 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc
giveExperience(total, source); giveExperience(total, source);
} }
public void setExperience(int value) { public void setExperience(double value) {
experience = Math.max(0, value); experience = Math.max(0, value);
refreshVanillaExp(); refreshVanillaExp();
} }
@ -517,7 +517,7 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc
* @param value Experience to give the player * @param value Experience to give the player
* @param source How the player earned experience * @param source How the player earned experience
*/ */
public void giveExperience(int value, EXPSource source) { public void giveExperience(double value, EXPSource source) {
giveExperience(value, source, null, true); giveExperience(value, source, null, true);
} }

View File

@ -17,13 +17,14 @@ import net.Indyuce.mmocore.skill.RegisteredSkill;
import net.Indyuce.mmocore.manager.data.PlayerDataManager.DefaultPlayerData; import net.Indyuce.mmocore.manager.data.PlayerDataManager.DefaultPlayerData;
public class SavedClassInformation { public class SavedClassInformation {
private final int level, experience, skillPoints, attributePoints, attributeReallocationPoints; private final int level, skillPoints, attributePoints, attributeReallocationPoints;
private final double experience;
private final Map<String, Integer> attributes; private final Map<String, Integer> attributes;
private final Map<String, Integer> skills; private final Map<String, Integer> skills;
public SavedClassInformation(ConfigurationSection config) { public SavedClassInformation(ConfigurationSection config) {
level = config.getInt("level"); level = config.getInt("level");
experience = config.getInt("experience"); experience = config.getDouble("experience");
skillPoints = config.getInt("skill-points"); skillPoints = config.getInt("skill-points");
attributePoints = config.getInt("attribute-points"); attributePoints = config.getInt("attribute-points");
attributeReallocationPoints = config.getInt("attribute-realloc-points"); attributeReallocationPoints = config.getInt("attribute-realloc-points");
@ -38,7 +39,7 @@ public class SavedClassInformation {
public SavedClassInformation(JsonObject json) { public SavedClassInformation(JsonObject json) {
level = json.get("level").getAsInt(); level = json.get("level").getAsInt();
experience = json.get("experience").getAsInt(); experience = json.get("experience").getAsDouble();
skillPoints = json.get("skill-points").getAsInt(); skillPoints = json.get("skill-points").getAsInt();
attributePoints = json.get("attribute-points").getAsInt(); attributePoints = json.get("attribute-points").getAsInt();
attributeReallocationPoints = json.get("attribute-realloc-points").getAsInt(); attributeReallocationPoints = json.get("attribute-realloc-points").getAsInt();
@ -63,11 +64,11 @@ public class SavedClassInformation {
this(data.getLevel(), 0, data.getSkillPoints(), data.getAttributePoints(), data.getAttrReallocPoints()); this(data.getLevel(), 0, data.getSkillPoints(), data.getAttributePoints(), data.getAttrReallocPoints());
} }
public SavedClassInformation(int level, int experience, int skillPoints, int attributePoints, int attributeReallocationPoints) { public SavedClassInformation(int level, double experience, int skillPoints, int attributePoints, int attributeReallocationPoints) {
this(level, experience, skillPoints, attributePoints, attributeReallocationPoints, new HashMap<>(), new HashMap<>()); this(level, experience, skillPoints, attributePoints, attributeReallocationPoints, new HashMap<>(), new HashMap<>());
} }
private SavedClassInformation(int level, int experience, int skillPoints, int attributePoints, int attributeReallocationPoints, private SavedClassInformation(int level, double experience, int skillPoints, int attributePoints, int attributeReallocationPoints,
Map<String, Integer> attributes, Map<String, Integer> skills) { Map<String, Integer> attributes, Map<String, Integer> skills) {
this.level = level; this.level = level;
this.experience = experience; this.experience = experience;
@ -82,7 +83,7 @@ public class SavedClassInformation {
return level; return level;
} }
public int getExperience() { public double getExperience() {
return experience; return experience;
} }

View File

@ -3,8 +3,8 @@ package net.Indyuce.mmocore.comp.region;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import net.Indyuce.mmocore.loot.condition.Condition; import net.Indyuce.mmocore.loot.chest.condition.Condition;
import net.Indyuce.mmocore.loot.condition.ConditionInstance; import net.Indyuce.mmocore.loot.chest.condition.ConditionInstance;
import io.lumine.mythic.lib.api.MMOLineConfig; import io.lumine.mythic.lib.api.MMOLineConfig;
public class RegionCondition extends Condition { public class RegionCondition extends Condition {

View File

@ -1,6 +1,6 @@
package net.Indyuce.mmocore.comp.region; package net.Indyuce.mmocore.comp.region;
import net.Indyuce.mmocore.loot.condition.Condition; import net.Indyuce.mmocore.loot.chest.condition.Condition;
import net.Indyuce.mmocore.api.load.MMOLoader; import net.Indyuce.mmocore.api.load.MMOLoader;
import io.lumine.mythic.lib.api.MMOLineConfig; import io.lumine.mythic.lib.api.MMOLineConfig;

View File

@ -196,7 +196,7 @@ public class PlayerProfessions {
this.exp.put(profession.getId(), exp - needed); this.exp.put(profession.getId(), exp - needed);
this.level.put(profession.getId(), level + 1); this.level.put(profession.getId(), level + 1);
check = true; check = true;
playerData.giveExperience((int) profession.getExperience().calculate(level), null); playerData.giveExperience(profession.getExperience().calculate(level), null);
} }
if (check) { if (check) {

View File

@ -17,7 +17,7 @@ public class ClassExperienceDispenser implements ExperienceDispenser {
@Override @Override
public void giveExperience(PlayerData playerData, double experience, @Nullable Location hologramLocation, EXPSource source) { public void giveExperience(PlayerData playerData, double experience, @Nullable Location hologramLocation, EXPSource source) {
hologramLocation = !MMOCore.plugin.getConfig().getBoolean("display-main-class-exp-holograms") ? null hologramLocation = !MMOCore.plugin.getConfig().getBoolean("display-main-class-exp-holograms") ? null
: hologramLocation == null ? getPlayerLocation(playerData) : hologramLocation; : hologramLocation;
playerData.giveExperience(experience, source, hologramLocation, true); playerData.giveExperience(experience, source, hologramLocation, true);
} }

View File

@ -13,7 +13,10 @@ import java.util.Random;
public class ExperienceItem { public class ExperienceItem {
private final String id; private final String id;
//A period of 0 means the item will only trigger one time.
private final int period; private final int period;
private final int firstTrigger;
private final double claimChance, failReduction; private final double claimChance, failReduction;
private final List<Trigger> triggers; private final List<Trigger> triggers;
@ -23,6 +26,7 @@ public class ExperienceItem {
* One item for an experience table * One item for an experience table
* *
* @param period The experience item is claimed every X level ups * @param period The experience item is claimed every X level ups
* @param firstTrigger The experience item if claimed for the first time at X level ups.
* @param claimChance Chance for that item to be claimed every X level ups * @param claimChance Chance for that item to be claimed every X level ups
* @param failReduction Between 0 and 1, by how much the fail chance is reduced * @param failReduction Between 0 and 1, by how much the fail chance is reduced
* every time the item is not claimed when leveling up. * every time the item is not claimed when leveling up.
@ -32,19 +36,22 @@ public class ExperienceItem {
* where n is the amount of successive claiming fails * where n is the amount of successive claiming fails
* @param triggers Actions cast when the exp item is claimed * @param triggers Actions cast when the exp item is claimed
*/ */
public ExperienceItem(String id, int period, double claimChance, double failReduction, List<Trigger> triggers) { public ExperienceItem(String id, int period, int firstTrigger,double claimChance, double failReduction, List<Trigger> triggers) {
this.id = id; this.id = id;
this.period = period; this.period = period;
this.claimChance = claimChance; this.claimChance = claimChance;
this.failReduction = failReduction; this.failReduction = failReduction;
this.triggers = triggers; this.triggers = triggers;
this.firstTrigger=firstTrigger;
} }
public ExperienceItem(ConfigurationSection config) { public ExperienceItem(ConfigurationSection config) {
Validate.notNull(config, "Config cannot be null"); Validate.notNull(config, "Config cannot be null");
Validate.isTrue(config.contains("triggers")); Validate.isTrue(config.contains("triggers"));
id = config.getName(); id = config.getName();
period = config.getInt("period", 1);
period = config.getInt("period", 0);
firstTrigger=config.getInt("first-trigger",period);
claimChance = config.getDouble("chance", 100) / 100; claimChance = config.getDouble("chance", 100) / 100;
failReduction = config.getDouble("fail-reduction", 80) / 100; failReduction = config.getDouble("fail-reduction", 80) / 100;
triggers = new ArrayList<>(); triggers = new ArrayList<>();
@ -64,7 +71,7 @@ public class ExperienceItem {
* account the randomness factor from the 'chance' parameter * account the randomness factor from the 'chance' parameter
*/ */
public boolean roll(int professionLevel, int timesCollected) { public boolean roll(int professionLevel, int timesCollected) {
int claimsRequired = professionLevel - (timesCollected + 1) * period; int claimsRequired = professionLevel+1 - (firstTrigger-+timesCollected * period);
if (claimsRequired < 1) if (claimsRequired < 1)
return false; return false;

View File

@ -168,7 +168,7 @@ public class BrewPotionExperienceSource extends ExperienceSource<PotionMeta> {
*/ */
// exp += getTotal(mapEffectDurations()); // exp += getTotal(mapEffectDurations());
getDispenser().giveExperience(PlayerData.get(player), (int) exp * multiplier, null, EXPSource.SOURCE); getDispenser().giveExperience(PlayerData.get(player), exp * multiplier, player.getLocation(), EXPSource.SOURCE);
} }
} }
} }

View File

@ -0,0 +1,58 @@
package net.Indyuce.mmocore.experience.source;
import io.lumine.mythic.lib.api.MMOLineConfig;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.experience.dispenser.ExperienceDispenser;
import net.Indyuce.mmocore.experience.source.type.SpecificExperienceSource;
import net.Indyuce.mmocore.manager.profession.ExperienceSourceManager;
import org.apache.commons.lang3.Validate;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.FoodLevelChangeEvent;
import org.bukkit.inventory.ItemStack;
public class EatExperienceSource extends SpecificExperienceSource<ItemStack> {
private final Material type;
/**
* Gives xp when you eat a certain type of food. If not type is given it will give xp from all the food sources.
* The amount of xp given is the xp per food regenerated.
*/
public EatExperienceSource(ExperienceDispenser dispenser, MMOLineConfig config) {
super(dispenser, config);
if(!config.contains("type"))
type=null;
else {
Material material=Material.valueOf(config.getString("type").toUpperCase().replace("-","_"));
Validate.isTrue(material!=null,"You must precise a valid material!");
type=material;
}
}
@Override
public ExperienceSourceManager<EatExperienceSource> newManager() {
return new ExperienceSourceManager<EatExperienceSource>() {
@EventHandler
public void a(FoodLevelChangeEvent e) {
if (!(e.getEntity() instanceof Player) || e.getEntity().hasMetadata("NPC"))
return;
PlayerData playerData = PlayerData.get((OfflinePlayer) e.getEntity());
for (EatExperienceSource source : getSources()) {
if (source.matchesParameter(playerData, e.getItem()))
source.giveExperience(playerData, e.getFoodLevel(), null);
}
}
};
}
@Override
public boolean matchesParameter(PlayerData player, ItemStack obj) {
if(type==null)
return true;
return type.equals(obj.getType());
}
}

View File

@ -60,7 +60,7 @@ public class EnchantItemExperienceSource extends ExperienceSource<Void> {
double exp = 0; double exp = 0;
for (Entry<Enchantment, Integer> entry : applicableEnchants.entrySet()) for (Entry<Enchantment, Integer> entry : applicableEnchants.entrySet())
exp += MMOCore.plugin.enchantManager.getBaseExperience(entry.getKey()) * entry.getValue(); exp += MMOCore.plugin.enchantManager.getBaseExperience(entry.getKey()) * entry.getValue();
getDispenser().giveExperience(player, (int) exp, event.getEnchantBlock().getLocation(), EXPSource.SOURCE); getDispenser().giveExperience(player, exp, event.getEnchantBlock().getLocation(), EXPSource.SOURCE);
} }
} }
}; };

View File

@ -15,6 +15,7 @@ import org.bukkit.Location;
import org.bukkit.entity.*; import org.bukkit.entity.*;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.event.entity.ProjectileLaunchEvent;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
@ -47,14 +48,23 @@ public class ProjectileExperienceSource extends SpecificExperienceSource<Project
HashMap<Projectile, Location> projectiles = new HashMap<>(); HashMap<Projectile, Location> projectiles = new HashMap<>();
@EventHandler @EventHandler
public void onHit(EntityDamageByEntityEvent e) { public void onHit(ProjectileHitEvent e) {
if (e.getHitBlock() != null && projectiles.containsKey(e.getEntity()))
projectiles.remove(e.getEntity());
if (e.getDamager() instanceof Projectile) { }
Projectile projectile = (Projectile) e.getDamager();
@EventHandler
public void onDamage(EntityDamageByEntityEvent e) {
if (e.getEntity() instanceof Projectile) {
Projectile projectile = (Projectile) e.getEntity();
if(!projectiles.containsKey(projectile))
return;
if (projectile.getShooter() instanceof Player && !((Player) projectile.getShooter()).hasMetadata("NPC")) { if (projectile.getShooter() instanceof Player && !((Player) projectile.getShooter()).hasMetadata("NPC")) {
Player player = (Player) projectile.getShooter(); Player player = (Player) projectile.getShooter();
PlayerData playerData = PlayerData.get(player); PlayerData playerData = PlayerData.get(player);
double distance = projectiles.get(projectile).distance(e.getDamager().getLocation()); double distance = projectiles.get(projectile).distance(e.getEntity().getLocation());
for (ProjectileExperienceSource source : getSources()) { for (ProjectileExperienceSource source : getSources()) {
if (source.matchesParameter(playerData, projectile)) if (source.matchesParameter(playerData, projectile))
source.giveExperience(playerData, e.getFinalDamage() * distance, null); source.giveExperience(playerData, e.getFinalDamage() * distance, null);
@ -62,6 +72,7 @@ public class ProjectileExperienceSource extends SpecificExperienceSource<Project
} }
projectiles.remove(projectile);
} }
} }

View File

@ -75,7 +75,7 @@ public class RepairItemExperienceSource extends ExperienceSource<ItemStack> {
*/ */
double exp = MMOCore.plugin.smithingManager.getBaseExperience(item.getType()) double exp = MMOCore.plugin.smithingManager.getBaseExperience(item.getType())
* Math.max(0, ((Damageable) old.getItemMeta()).getDamage() - ((Damageable) item.getItemMeta()).getDamage()) / 100; * Math.max(0, ((Damageable) old.getItemMeta()).getDamage() - ((Damageable) item.getItemMeta()).getDamage()) / 100;
getDispenser().giveExperience(data, (int) exp, null, EXPSource.SOURCE); getDispenser().giveExperience(data, exp, data.getPlayer().getLocation(), EXPSource.SOURCE);
} }
} }
} }

View File

@ -1,39 +0,0 @@
package net.Indyuce.mmocore.experience.source;
import io.lumine.mythic.lib.api.MMOLineConfig;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.experience.dispenser.ExperienceDispenser;
import net.Indyuce.mmocore.experience.source.type.SpecificExperienceSource;
import net.Indyuce.mmocore.manager.profession.ExperienceSourceManager;
import org.apache.commons.lang.Validate;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerExpChangeEvent;
public class VanillaExperienceExperienceSource extends SpecificExperienceSource {
public VanillaExperienceExperienceSource(ExperienceDispenser dispenser, MMOLineConfig config) {
super(dispenser, config);
}
@Override
public ExperienceSourceManager<VanillaExperienceExperienceSource> newManager() {
return new ExperienceSourceManager<VanillaExperienceExperienceSource>() {
@EventHandler
public void onExp(PlayerExpChangeEvent e) {
if(e.getPlayer().hasMetadata("NPC"))
return;
PlayerData playerData=PlayerData.get(e.getPlayer());
for(VanillaExperienceExperienceSource source:getSources()) {
if(source.matchesParameter(playerData,null))
giveExperience(playerData,e.getAmount(),null);
}
}
};
}
@Override
public boolean matchesParameter(PlayerData player, Object obj) {
return true;
}
}

View File

@ -11,7 +11,7 @@ import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.api.util.MMOCoreUtils; import net.Indyuce.mmocore.api.util.MMOCoreUtils;
import net.Indyuce.mmocore.experience.source.MineBlockExperienceSource; import net.Indyuce.mmocore.experience.source.MineBlockExperienceSource;
import net.Indyuce.mmocore.loot.LootBuilder; import net.Indyuce.mmocore.loot.LootBuilder;
import net.Indyuce.mmocore.loot.condition.ConditionInstance; import net.Indyuce.mmocore.loot.chest.condition.ConditionInstance;
import org.bukkit.*; import org.bukkit.*;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockFace; import org.bukkit.block.BlockFace;

View File

@ -16,7 +16,7 @@ public class RedirectVanillaExp implements Listener {
@EventHandler @EventHandler
public void a(PlayerExpChangeEvent event) { public void a(PlayerExpChangeEvent event) {
int a = (int) (event.getAmount() * ratio); double a = (event.getAmount() * ratio);
if (a > 0) if (a > 0)
PlayerData.get(event.getPlayer()).giveExperience(a, EXPSource.VANILLA); PlayerData.get(event.getPlayer()).giveExperience(a, EXPSource.VANILLA);
} }

View File

@ -1,4 +1,4 @@
package net.Indyuce.mmocore.loot.condition; package net.Indyuce.mmocore.loot.chest.condition;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package net.Indyuce.mmocore.loot.condition; package net.Indyuce.mmocore.loot.chest.condition;
import io.lumine.mythic.lib.api.MMOLineConfig; import io.lumine.mythic.lib.api.MMOLineConfig;

View File

@ -1,4 +1,4 @@
package net.Indyuce.mmocore.loot.condition; package net.Indyuce.mmocore.loot.chest.condition;
import java.util.List; import java.util.List;
import java.util.stream.Stream; import java.util.stream.Stream;

View File

@ -1,4 +1,4 @@
package net.Indyuce.mmocore.loot.condition; package net.Indyuce.mmocore.loot.chest.condition;
import io.lumine.mythic.lib.api.MMOLineConfig; import io.lumine.mythic.lib.api.MMOLineConfig;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;

View File

@ -1,4 +1,4 @@
package net.Indyuce.mmocore.loot.condition; package net.Indyuce.mmocore.loot.chest.condition;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import io.lumine.mythic.lib.api.MMOLineConfig; import io.lumine.mythic.lib.api.MMOLineConfig;

View File

@ -1,4 +1,4 @@
package net.Indyuce.mmocore.loot.condition; package net.Indyuce.mmocore.loot.chest.condition;
import io.lumine.mythic.lib.api.MMOLineConfig; import io.lumine.mythic.lib.api.MMOLineConfig;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;

View File

@ -1,4 +1,4 @@
package net.Indyuce.mmocore.loot.condition; package net.Indyuce.mmocore.loot.chest.condition;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;

View File

@ -5,8 +5,8 @@ import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.logging.Level; import java.util.logging.Level;
import net.Indyuce.mmocore.loot.condition.Condition; import net.Indyuce.mmocore.loot.chest.condition.Condition;
import net.Indyuce.mmocore.loot.condition.ConditionInstance; import net.Indyuce.mmocore.loot.chest.condition.ConditionInstance;
import net.Indyuce.mmocore.loot.droptable.dropitem.DropItem; import net.Indyuce.mmocore.loot.droptable.dropitem.DropItem;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;

View File

@ -3,7 +3,7 @@ package net.Indyuce.mmocore.loot.droptable.dropitem;
import io.lumine.mythic.lib.api.MMOLineConfig; import io.lumine.mythic.lib.api.MMOLineConfig;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.loot.droptable.DropTable; import net.Indyuce.mmocore.loot.droptable.DropTable;
import net.Indyuce.mmocore.loot.condition.ConditionInstance; import net.Indyuce.mmocore.loot.chest.condition.ConditionInstance;
import net.Indyuce.mmocore.loot.LootBuilder; import net.Indyuce.mmocore.loot.LootBuilder;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;

View File

@ -11,7 +11,7 @@ import org.bukkit.configuration.ConfigurationSection;
import com.google.gson.JsonParseException; import com.google.gson.JsonParseException;
import net.Indyuce.mmocore.api.block.BlockType; import net.Indyuce.mmocore.api.block.BlockType;
import net.Indyuce.mmocore.loot.condition.Condition; import net.Indyuce.mmocore.loot.chest.condition.Condition;
import net.Indyuce.mmocore.loot.droptable.dropitem.DropItem; import net.Indyuce.mmocore.loot.droptable.dropitem.DropItem;
import net.Indyuce.mmocore.experience.source.type.ExperienceSource; import net.Indyuce.mmocore.experience.source.type.ExperienceSource;
import net.Indyuce.mmocore.api.load.DefaultMMOLoader; import net.Indyuce.mmocore.api.load.DefaultMMOLoader;

View File

@ -7,8 +7,8 @@ import net.Indyuce.mmocore.api.block.BlockInfo.RegeneratingBlock;
import net.Indyuce.mmocore.api.block.BlockType; import net.Indyuce.mmocore.api.block.BlockType;
import net.Indyuce.mmocore.api.block.SkullBlockType; import net.Indyuce.mmocore.api.block.SkullBlockType;
import net.Indyuce.mmocore.api.block.VanillaBlockType; import net.Indyuce.mmocore.api.block.VanillaBlockType;
import net.Indyuce.mmocore.loot.condition.Condition; import net.Indyuce.mmocore.loot.chest.condition.Condition;
import net.Indyuce.mmocore.loot.condition.ConditionInstance; import net.Indyuce.mmocore.loot.chest.condition.ConditionInstance;
import net.Indyuce.mmocore.api.util.MMOCoreUtils; import net.Indyuce.mmocore.api.util.MMOCoreUtils;
import io.lumine.mythic.lib.api.MMOLineConfig; import io.lumine.mythic.lib.api.MMOLineConfig;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;

View File

@ -4,8 +4,8 @@ import io.lumine.mythic.lib.api.MMOLineConfig;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.api.player.stats.StatType; import net.Indyuce.mmocore.api.player.stats.StatType;
import net.Indyuce.mmocore.loot.condition.Condition; import net.Indyuce.mmocore.loot.chest.condition.Condition;
import net.Indyuce.mmocore.loot.condition.ConditionInstance; import net.Indyuce.mmocore.loot.chest.condition.ConditionInstance;
import net.Indyuce.mmocore.loot.droptable.dropitem.fishing.FishingDropItem; import net.Indyuce.mmocore.loot.droptable.dropitem.fishing.FishingDropItem;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;

View File

@ -58,8 +58,8 @@ public class BoosterManager {
return d; return d;
} }
public int calculateExp(Profession profession, double exp) { public double calculateExp(Profession profession, double exp) {
return (int) (exp * getMultiplier(profession)); return (exp * getMultiplier(profession));
} }
/** /**

View File

@ -2,8 +2,8 @@ package net.Indyuce.mmocore.waypoint;
import io.lumine.mythic.lib.api.MMOLineConfig; import io.lumine.mythic.lib.api.MMOLineConfig;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.loot.condition.Condition; import net.Indyuce.mmocore.loot.chest.condition.Condition;
import net.Indyuce.mmocore.loot.condition.ConditionInstance; import net.Indyuce.mmocore.loot.chest.condition.ConditionInstance;
import net.Indyuce.mmocore.player.Unlockable; import net.Indyuce.mmocore.player.Unlockable;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;

View File

@ -8,7 +8,7 @@
diamond-drop-table: diamond-drop-table:
items: items:
- 'vanilla{type=DIAMOND} 1 1-3' - 'vanilla{type=DIAMOND} 1 1-3'
# - 'mmoitem{type=material;id=RARE_DIAMOND} .1 1-3' # - 'mmoitem{type=material;id=RARE_DIAMOND;period=} .1 1-3'
- 'droptable{id=other-drop-table} .1' - 'droptable{id=other-drop-table} .1'
other-drop-table: other-drop-table: