diff --git a/pom.xml b/pom.xml index e0540704..0805f2c8 100644 --- a/pom.xml +++ b/pom.xml @@ -39,10 +39,21 @@ + + org.apache.maven.plugins + maven-jar-plugin + 2.3.1 + + C:\Users\guill\Minecraft Server\Server\plugins + + + + org.apache.maven.plugins maven-compiler-plugin 3.8.1 + 9 9 diff --git a/src/main/java/net/Indyuce/mmocore/api/load/DefaultMMOLoader.java b/src/main/java/net/Indyuce/mmocore/api/load/DefaultMMOLoader.java index a2c8389a..9ec22aca 100644 --- a/src/main/java/net/Indyuce/mmocore/api/load/DefaultMMOLoader.java +++ b/src/main/java/net/Indyuce/mmocore/api/load/DefaultMMOLoader.java @@ -2,12 +2,14 @@ package net.Indyuce.mmocore.api.load; import net.Indyuce.mmocore.experience.dispenser.ExperienceDispenser; import net.Indyuce.mmocore.experience.source.*; +import net.Indyuce.mmocore.loot.chest.condition.*; import org.bukkit.configuration.ConfigurationSection; import net.Indyuce.mmocore.api.block.BlockType; import net.Indyuce.mmocore.api.block.SkullBlockType; import net.Indyuce.mmocore.api.block.VanillaBlockType; import net.Indyuce.mmocore.loot.droptable.dropitem.DropItem; + import net.Indyuce.mmocore.loot.droptable.dropitem.DropTableDropItem; import net.Indyuce.mmocore.loot.droptable.dropitem.GoldDropItem; import net.Indyuce.mmocore.loot.droptable.dropitem.NoteDropItem; @@ -119,9 +121,6 @@ public class DefaultMMOLoader extends MMOLoader { if (config.getKey().equals("resource")) return new ResourceExperienceSource(dispenser, config); - if (config.getKey().equals("vanillaexperience")) - return new VanillaExperienceExperienceSource(dispenser, config); - if (config.getKey().equals("climb")) return new ClimbExperienceSource(dispenser, config); diff --git a/src/main/java/net/Indyuce/mmocore/api/load/MMOLoader.java b/src/main/java/net/Indyuce/mmocore/api/load/MMOLoader.java index 10ca9c12..c1bed441 100644 --- a/src/main/java/net/Indyuce/mmocore/api/load/MMOLoader.java +++ b/src/main/java/net/Indyuce/mmocore/api/load/MMOLoader.java @@ -2,7 +2,7 @@ package net.Indyuce.mmocore.api.load; import io.lumine.mythic.lib.api.MMOLineConfig; 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.experience.dispenser.ExperienceDispenser; import net.Indyuce.mmocore.experience.source.type.ExperienceSource; diff --git a/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java b/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java index 13a84cf9..a5ed447a 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java @@ -321,7 +321,7 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc giveExperience(total, source); } - public void setExperience(int value) { + public void setExperience(double value) { experience = Math.max(0, value); refreshVanillaExp(); } @@ -517,7 +517,7 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc * @param value Experience to give the player * @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); } diff --git a/src/main/java/net/Indyuce/mmocore/api/player/profess/SavedClassInformation.java b/src/main/java/net/Indyuce/mmocore/api/player/profess/SavedClassInformation.java index 21bed8f3..f5d2698e 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/profess/SavedClassInformation.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/profess/SavedClassInformation.java @@ -17,13 +17,14 @@ import net.Indyuce.mmocore.skill.RegisteredSkill; import net.Indyuce.mmocore.manager.data.PlayerDataManager.DefaultPlayerData; 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 attributes; private final Map skills; public SavedClassInformation(ConfigurationSection config) { level = config.getInt("level"); - experience = config.getInt("experience"); + experience = config.getDouble("experience"); skillPoints = config.getInt("skill-points"); attributePoints = config.getInt("attribute-points"); attributeReallocationPoints = config.getInt("attribute-realloc-points"); @@ -38,7 +39,7 @@ public class SavedClassInformation { public SavedClassInformation(JsonObject json) { level = json.get("level").getAsInt(); - experience = json.get("experience").getAsInt(); + experience = json.get("experience").getAsDouble(); skillPoints = json.get("skill-points").getAsInt(); attributePoints = json.get("attribute-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()); } - 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<>()); } - 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 attributes, Map skills) { this.level = level; this.experience = experience; @@ -82,7 +83,7 @@ public class SavedClassInformation { return level; } - public int getExperience() { + public double getExperience() { return experience; } diff --git a/src/main/java/net/Indyuce/mmocore/comp/region/RegionCondition.java b/src/main/java/net/Indyuce/mmocore/comp/region/RegionCondition.java index 4f2876c2..c8b8a9d0 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/region/RegionCondition.java +++ b/src/main/java/net/Indyuce/mmocore/comp/region/RegionCondition.java @@ -3,8 +3,8 @@ package net.Indyuce.mmocore.comp.region; import java.util.Arrays; import java.util.List; -import net.Indyuce.mmocore.loot.condition.Condition; -import net.Indyuce.mmocore.loot.condition.ConditionInstance; +import net.Indyuce.mmocore.loot.chest.condition.Condition; +import net.Indyuce.mmocore.loot.chest.condition.ConditionInstance; import io.lumine.mythic.lib.api.MMOLineConfig; public class RegionCondition extends Condition { diff --git a/src/main/java/net/Indyuce/mmocore/comp/region/WorldGuardMMOLoader.java b/src/main/java/net/Indyuce/mmocore/comp/region/WorldGuardMMOLoader.java index d1903d70..735ebda6 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/region/WorldGuardMMOLoader.java +++ b/src/main/java/net/Indyuce/mmocore/comp/region/WorldGuardMMOLoader.java @@ -1,6 +1,6 @@ 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 io.lumine.mythic.lib.api.MMOLineConfig; diff --git a/src/main/java/net/Indyuce/mmocore/experience/PlayerProfessions.java b/src/main/java/net/Indyuce/mmocore/experience/PlayerProfessions.java index 887e45b0..d8a1ab21 100644 --- a/src/main/java/net/Indyuce/mmocore/experience/PlayerProfessions.java +++ b/src/main/java/net/Indyuce/mmocore/experience/PlayerProfessions.java @@ -196,7 +196,7 @@ public class PlayerProfessions { this.exp.put(profession.getId(), exp - needed); this.level.put(profession.getId(), level + 1); check = true; - playerData.giveExperience((int) profession.getExperience().calculate(level), null); + playerData.giveExperience(profession.getExperience().calculate(level), null); } if (check) { diff --git a/src/main/java/net/Indyuce/mmocore/experience/dispenser/ClassExperienceDispenser.java b/src/main/java/net/Indyuce/mmocore/experience/dispenser/ClassExperienceDispenser.java index 8be7dfe0..917f7b14 100644 --- a/src/main/java/net/Indyuce/mmocore/experience/dispenser/ClassExperienceDispenser.java +++ b/src/main/java/net/Indyuce/mmocore/experience/dispenser/ClassExperienceDispenser.java @@ -17,7 +17,7 @@ public class ClassExperienceDispenser implements ExperienceDispenser { @Override public void giveExperience(PlayerData playerData, double experience, @Nullable Location hologramLocation, EXPSource source) { hologramLocation = !MMOCore.plugin.getConfig().getBoolean("display-main-class-exp-holograms") ? null - : hologramLocation == null ? getPlayerLocation(playerData) : hologramLocation; + : hologramLocation; playerData.giveExperience(experience, source, hologramLocation, true); } diff --git a/src/main/java/net/Indyuce/mmocore/experience/droptable/ExperienceItem.java b/src/main/java/net/Indyuce/mmocore/experience/droptable/ExperienceItem.java index e676156b..4ba8028c 100644 --- a/src/main/java/net/Indyuce/mmocore/experience/droptable/ExperienceItem.java +++ b/src/main/java/net/Indyuce/mmocore/experience/droptable/ExperienceItem.java @@ -13,7 +13,10 @@ import java.util.Random; public class ExperienceItem { private final String id; + + //A period of 0 means the item will only trigger one time. private final int period; + private final int firstTrigger; private final double claimChance, failReduction; private final List triggers; @@ -23,6 +26,7 @@ public class ExperienceItem { * One item for an experience table * * @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 failReduction Between 0 and 1, by how much the fail chance is reduced * 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 * @param triggers Actions cast when the exp item is claimed */ - public ExperienceItem(String id, int period, double claimChance, double failReduction, List triggers) { + public ExperienceItem(String id, int period, int firstTrigger,double claimChance, double failReduction, List triggers) { this.id = id; this.period = period; this.claimChance = claimChance; this.failReduction = failReduction; this.triggers = triggers; + this.firstTrigger=firstTrigger; } public ExperienceItem(ConfigurationSection config) { Validate.notNull(config, "Config cannot be null"); Validate.isTrue(config.contains("triggers")); 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; failReduction = config.getDouble("fail-reduction", 80) / 100; triggers = new ArrayList<>(); @@ -64,7 +71,7 @@ public class ExperienceItem { * account the randomness factor from the 'chance' parameter */ public boolean roll(int professionLevel, int timesCollected) { - int claimsRequired = professionLevel - (timesCollected + 1) * period; + int claimsRequired = professionLevel+1 - (firstTrigger-+timesCollected * period); if (claimsRequired < 1) return false; diff --git a/src/main/java/net/Indyuce/mmocore/experience/source/BrewPotionExperienceSource.java b/src/main/java/net/Indyuce/mmocore/experience/source/BrewPotionExperienceSource.java index a5c085b7..a0f6b5bf 100644 --- a/src/main/java/net/Indyuce/mmocore/experience/source/BrewPotionExperienceSource.java +++ b/src/main/java/net/Indyuce/mmocore/experience/source/BrewPotionExperienceSource.java @@ -168,7 +168,7 @@ public class BrewPotionExperienceSource extends ExperienceSource { */ // 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); } } } diff --git a/src/main/java/net/Indyuce/mmocore/experience/source/EatExperienceSource.java b/src/main/java/net/Indyuce/mmocore/experience/source/EatExperienceSource.java new file mode 100644 index 00000000..b6db5451 --- /dev/null +++ b/src/main/java/net/Indyuce/mmocore/experience/source/EatExperienceSource.java @@ -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 { + 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 newManager() { + return new ExperienceSourceManager() { + + @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()); + } + +} diff --git a/src/main/java/net/Indyuce/mmocore/experience/source/EnchantItemExperienceSource.java b/src/main/java/net/Indyuce/mmocore/experience/source/EnchantItemExperienceSource.java index aae363b1..3a9c334d 100644 --- a/src/main/java/net/Indyuce/mmocore/experience/source/EnchantItemExperienceSource.java +++ b/src/main/java/net/Indyuce/mmocore/experience/source/EnchantItemExperienceSource.java @@ -60,7 +60,7 @@ public class EnchantItemExperienceSource extends ExperienceSource { double exp = 0; for (Entry entry : applicableEnchants.entrySet()) 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); } } }; diff --git a/src/main/java/net/Indyuce/mmocore/experience/source/ProjectileExperienceSource.java b/src/main/java/net/Indyuce/mmocore/experience/source/ProjectileExperienceSource.java index 6a2960c6..49647b70 100644 --- a/src/main/java/net/Indyuce/mmocore/experience/source/ProjectileExperienceSource.java +++ b/src/main/java/net/Indyuce/mmocore/experience/source/ProjectileExperienceSource.java @@ -15,6 +15,7 @@ import org.bukkit.Location; import org.bukkit.entity.*; import org.bukkit.event.EventHandler; import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.ProjectileHitEvent; import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.scheduler.BukkitRunnable; @@ -47,14 +48,23 @@ public class ProjectileExperienceSource extends SpecificExperienceSource projectiles = new HashMap<>(); @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")) { Player player = (Player) projectile.getShooter(); 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()) { if (source.matchesParameter(playerData, projectile)) source.giveExperience(playerData, e.getFinalDamage() * distance, null); @@ -62,6 +72,7 @@ public class ProjectileExperienceSource extends SpecificExperienceSource { */ double exp = MMOCore.plugin.smithingManager.getBaseExperience(item.getType()) * 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); } } } diff --git a/src/main/java/net/Indyuce/mmocore/experience/source/VanillaExperienceExperienceSource.java b/src/main/java/net/Indyuce/mmocore/experience/source/VanillaExperienceExperienceSource.java deleted file mode 100644 index f4eb3d22..00000000 --- a/src/main/java/net/Indyuce/mmocore/experience/source/VanillaExperienceExperienceSource.java +++ /dev/null @@ -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 newManager() { - return new ExperienceSourceManager() { - @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; - } -} diff --git a/src/main/java/net/Indyuce/mmocore/listener/BlockListener.java b/src/main/java/net/Indyuce/mmocore/listener/BlockListener.java index 1346b23f..2ff6c505 100644 --- a/src/main/java/net/Indyuce/mmocore/listener/BlockListener.java +++ b/src/main/java/net/Indyuce/mmocore/listener/BlockListener.java @@ -11,7 +11,7 @@ import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.util.MMOCoreUtils; import net.Indyuce.mmocore.experience.source.MineBlockExperienceSource; 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.block.Block; import org.bukkit.block.BlockFace; diff --git a/src/main/java/net/Indyuce/mmocore/listener/option/RedirectVanillaExp.java b/src/main/java/net/Indyuce/mmocore/listener/option/RedirectVanillaExp.java index 7f697c80..49a19c45 100644 --- a/src/main/java/net/Indyuce/mmocore/listener/option/RedirectVanillaExp.java +++ b/src/main/java/net/Indyuce/mmocore/listener/option/RedirectVanillaExp.java @@ -16,7 +16,7 @@ public class RedirectVanillaExp implements Listener { @EventHandler public void a(PlayerExpChangeEvent event) { - int a = (int) (event.getAmount() * ratio); + double a = (event.getAmount() * ratio); if (a > 0) PlayerData.get(event.getPlayer()).giveExperience(a, EXPSource.VANILLA); } diff --git a/src/main/java/net/Indyuce/mmocore/loot/condition/BiomeCondition.java b/src/main/java/net/Indyuce/mmocore/loot/chest/condition/BiomeCondition.java similarity index 92% rename from src/main/java/net/Indyuce/mmocore/loot/condition/BiomeCondition.java rename to src/main/java/net/Indyuce/mmocore/loot/chest/condition/BiomeCondition.java index ae2f9922..1c55c5fc 100644 --- a/src/main/java/net/Indyuce/mmocore/loot/condition/BiomeCondition.java +++ b/src/main/java/net/Indyuce/mmocore/loot/chest/condition/BiomeCondition.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmocore.loot.condition; +package net.Indyuce.mmocore.loot.chest.condition; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/net/Indyuce/mmocore/loot/condition/Condition.java b/src/main/java/net/Indyuce/mmocore/loot/chest/condition/Condition.java similarity index 85% rename from src/main/java/net/Indyuce/mmocore/loot/condition/Condition.java rename to src/main/java/net/Indyuce/mmocore/loot/chest/condition/Condition.java index c925c1ba..b924cea2 100644 --- a/src/main/java/net/Indyuce/mmocore/loot/condition/Condition.java +++ b/src/main/java/net/Indyuce/mmocore/loot/chest/condition/Condition.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmocore.loot.condition; +package net.Indyuce.mmocore.loot.chest.condition; import io.lumine.mythic.lib.api.MMOLineConfig; diff --git a/src/main/java/net/Indyuce/mmocore/loot/condition/ConditionInstance.java b/src/main/java/net/Indyuce/mmocore/loot/chest/condition/ConditionInstance.java similarity index 94% rename from src/main/java/net/Indyuce/mmocore/loot/condition/ConditionInstance.java rename to src/main/java/net/Indyuce/mmocore/loot/chest/condition/ConditionInstance.java index d74a0454..1666ee8e 100644 --- a/src/main/java/net/Indyuce/mmocore/loot/condition/ConditionInstance.java +++ b/src/main/java/net/Indyuce/mmocore/loot/chest/condition/ConditionInstance.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmocore.loot.condition; +package net.Indyuce.mmocore.loot.chest.condition; import java.util.List; import java.util.stream.Stream; diff --git a/src/main/java/net/Indyuce/mmocore/loot/condition/DistanceCondition.java b/src/main/java/net/Indyuce/mmocore/loot/chest/condition/DistanceCondition.java similarity index 95% rename from src/main/java/net/Indyuce/mmocore/loot/condition/DistanceCondition.java rename to src/main/java/net/Indyuce/mmocore/loot/chest/condition/DistanceCondition.java index de9cef5e..21e46f8f 100644 --- a/src/main/java/net/Indyuce/mmocore/loot/condition/DistanceCondition.java +++ b/src/main/java/net/Indyuce/mmocore/loot/chest/condition/DistanceCondition.java @@ -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 org.apache.commons.lang.Validate; diff --git a/src/main/java/net/Indyuce/mmocore/loot/condition/LevelCondition.java b/src/main/java/net/Indyuce/mmocore/loot/chest/condition/LevelCondition.java similarity index 94% rename from src/main/java/net/Indyuce/mmocore/loot/condition/LevelCondition.java rename to src/main/java/net/Indyuce/mmocore/loot/chest/condition/LevelCondition.java index 087a379f..c448c96c 100644 --- a/src/main/java/net/Indyuce/mmocore/loot/condition/LevelCondition.java +++ b/src/main/java/net/Indyuce/mmocore/loot/chest/condition/LevelCondition.java @@ -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 io.lumine.mythic.lib.api.MMOLineConfig; diff --git a/src/main/java/net/Indyuce/mmocore/loot/condition/PermissionCondition.java b/src/main/java/net/Indyuce/mmocore/loot/chest/condition/PermissionCondition.java similarity index 91% rename from src/main/java/net/Indyuce/mmocore/loot/condition/PermissionCondition.java rename to src/main/java/net/Indyuce/mmocore/loot/chest/condition/PermissionCondition.java index 6a97e8ab..47d9c0b8 100644 --- a/src/main/java/net/Indyuce/mmocore/loot/condition/PermissionCondition.java +++ b/src/main/java/net/Indyuce/mmocore/loot/chest/condition/PermissionCondition.java @@ -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 org.bukkit.entity.Player; diff --git a/src/main/java/net/Indyuce/mmocore/loot/condition/WorldCondition.java b/src/main/java/net/Indyuce/mmocore/loot/chest/condition/WorldCondition.java similarity index 90% rename from src/main/java/net/Indyuce/mmocore/loot/condition/WorldCondition.java rename to src/main/java/net/Indyuce/mmocore/loot/chest/condition/WorldCondition.java index 955d0289..97c58cc4 100644 --- a/src/main/java/net/Indyuce/mmocore/loot/condition/WorldCondition.java +++ b/src/main/java/net/Indyuce/mmocore/loot/chest/condition/WorldCondition.java @@ -1,4 +1,4 @@ -package net.Indyuce.mmocore.loot.condition; +package net.Indyuce.mmocore.loot.chest.condition; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/net/Indyuce/mmocore/loot/droptable/DropTable.java b/src/main/java/net/Indyuce/mmocore/loot/droptable/DropTable.java index aa7a602d..c8588074 100644 --- a/src/main/java/net/Indyuce/mmocore/loot/droptable/DropTable.java +++ b/src/main/java/net/Indyuce/mmocore/loot/droptable/DropTable.java @@ -5,8 +5,8 @@ import java.util.List; import java.util.Set; import java.util.logging.Level; -import net.Indyuce.mmocore.loot.condition.Condition; -import net.Indyuce.mmocore.loot.condition.ConditionInstance; +import net.Indyuce.mmocore.loot.chest.condition.Condition; +import net.Indyuce.mmocore.loot.chest.condition.ConditionInstance; import net.Indyuce.mmocore.loot.droptable.dropitem.DropItem; import org.apache.commons.lang.Validate; import org.bukkit.configuration.ConfigurationSection; diff --git a/src/main/java/net/Indyuce/mmocore/loot/droptable/dropitem/DropTableDropItem.java b/src/main/java/net/Indyuce/mmocore/loot/droptable/dropitem/DropTableDropItem.java index 4f21174c..e6c160f2 100644 --- a/src/main/java/net/Indyuce/mmocore/loot/droptable/dropitem/DropTableDropItem.java +++ b/src/main/java/net/Indyuce/mmocore/loot/droptable/dropitem/DropTableDropItem.java @@ -3,7 +3,7 @@ package net.Indyuce.mmocore.loot.droptable.dropitem; import io.lumine.mythic.lib.api.MMOLineConfig; import net.Indyuce.mmocore.MMOCore; 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.api.player.PlayerData; import org.apache.commons.lang.Validate; diff --git a/src/main/java/net/Indyuce/mmocore/manager/MMOLoadManager.java b/src/main/java/net/Indyuce/mmocore/manager/MMOLoadManager.java index 4b9e4444..666ba042 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/MMOLoadManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/MMOLoadManager.java @@ -11,7 +11,7 @@ import org.bukkit.configuration.ConfigurationSection; import com.google.gson.JsonParseException; 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.experience.source.type.ExperienceSource; import net.Indyuce.mmocore.api.load.DefaultMMOLoader; diff --git a/src/main/java/net/Indyuce/mmocore/manager/profession/CustomBlockManager.java b/src/main/java/net/Indyuce/mmocore/manager/profession/CustomBlockManager.java index 57ddf5f7..5b69846d 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/profession/CustomBlockManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/profession/CustomBlockManager.java @@ -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.SkullBlockType; import net.Indyuce.mmocore.api.block.VanillaBlockType; -import net.Indyuce.mmocore.loot.condition.Condition; -import net.Indyuce.mmocore.loot.condition.ConditionInstance; +import net.Indyuce.mmocore.loot.chest.condition.Condition; +import net.Indyuce.mmocore.loot.chest.condition.ConditionInstance; import net.Indyuce.mmocore.api.util.MMOCoreUtils; import io.lumine.mythic.lib.api.MMOLineConfig; import org.bukkit.Bukkit; diff --git a/src/main/java/net/Indyuce/mmocore/manager/profession/FishingManager.java b/src/main/java/net/Indyuce/mmocore/manager/profession/FishingManager.java index 133de2ee..93a5a73f 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/profession/FishingManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/profession/FishingManager.java @@ -4,8 +4,8 @@ import io.lumine.mythic.lib.api.MMOLineConfig; import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.stats.StatType; -import net.Indyuce.mmocore.loot.condition.Condition; -import net.Indyuce.mmocore.loot.condition.ConditionInstance; +import net.Indyuce.mmocore.loot.chest.condition.Condition; +import net.Indyuce.mmocore.loot.chest.condition.ConditionInstance; import net.Indyuce.mmocore.loot.droptable.dropitem.fishing.FishingDropItem; import org.apache.commons.lang.Validate; import org.bukkit.configuration.ConfigurationSection; diff --git a/src/main/java/net/Indyuce/mmocore/manager/social/BoosterManager.java b/src/main/java/net/Indyuce/mmocore/manager/social/BoosterManager.java index df9ae3a2..113b99ba 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/social/BoosterManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/social/BoosterManager.java @@ -58,8 +58,8 @@ public class BoosterManager { return d; } - public int calculateExp(Profession profession, double exp) { - return (int) (exp * getMultiplier(profession)); + public double calculateExp(Profession profession, double exp) { + return (exp * getMultiplier(profession)); } /** diff --git a/src/main/java/net/Indyuce/mmocore/waypoint/Waypoint.java b/src/main/java/net/Indyuce/mmocore/waypoint/Waypoint.java index 288a8796..6395ea81 100644 --- a/src/main/java/net/Indyuce/mmocore/waypoint/Waypoint.java +++ b/src/main/java/net/Indyuce/mmocore/waypoint/Waypoint.java @@ -2,8 +2,8 @@ package net.Indyuce.mmocore.waypoint; import io.lumine.mythic.lib.api.MMOLineConfig; import net.Indyuce.mmocore.MMOCore; -import net.Indyuce.mmocore.loot.condition.Condition; -import net.Indyuce.mmocore.loot.condition.ConditionInstance; +import net.Indyuce.mmocore.loot.chest.condition.Condition; +import net.Indyuce.mmocore.loot.chest.condition.ConditionInstance; import net.Indyuce.mmocore.player.Unlockable; import org.apache.commons.lang.Validate; import org.bukkit.Bukkit; diff --git a/src/main/resources/default/drop-tables/example-drop-tables.yml b/src/main/resources/default/drop-tables/example-drop-tables.yml index 25894aaf..4faf4e78 100644 --- a/src/main/resources/default/drop-tables/example-drop-tables.yml +++ b/src/main/resources/default/drop-tables/example-drop-tables.yml @@ -8,7 +8,7 @@ diamond-drop-table: items: - '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' other-drop-table: