mirror of
https://gitlab.com/phoenix-dvpmt/mmocore.git
synced 2025-02-02 11:21:22 +01:00
Debug for all the experience source.
Added VanillaExperience & Resource ExperienceSource and added inCombat for Playing Experience Source.
This commit is contained in:
parent
3579a5f520
commit
68b309ec61
11
pom.xml
11
pom.xml
@ -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>
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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 {
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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) {
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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;
|
@ -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;
|
||||||
|
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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;
|
||||||
|
@ -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:
|
||||||
|
Loading…
Reference in New Issue
Block a user