Merge remote-tracking branch 'origin/master'

This commit is contained in:
Indyuce 2021-10-28 23:01:06 +02:00
commit 1ce89703a7
7 changed files with 79 additions and 28 deletions

View File

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>net.Indyuce</groupId>
<artifactId>MMOCore</artifactId>
<version>1.8.0</version>
<version>1.8.1</version>
<name>MMOCore</name>
<description>Offer your players a brand new RPG experience!!</description>

View File

@ -90,6 +90,11 @@ public class MMOCore extends LuminePlugin {
public final MMOLoadManager loadManager = new MMOLoadManager();
public boolean healthRegenFlat;
public boolean manaRegenFlat;
public boolean staminaRegenFlat;
public boolean stelliumRegenFlat;
public boolean shouldDebugSQL = false;
public MMOCore() {
@ -141,6 +146,13 @@ public class MMOCore extends LuminePlugin {
if (getConfig().isConfigurationSection("default-playerdata"))
dataProvider.getDataManager().loadDefaultData(getConfig().getConfigurationSection("default-playerdata"));
if (getConfig().isConfigurationSection("stat-regen-flat")) {
healthRegenFlat = getConfig().getBoolean("stat-regen-flat.health", true);
manaRegenFlat = getConfig().getBoolean("stat-regen-flat.mana", true);
staminaRegenFlat = getConfig().getBoolean("stat-regen-flat.stamina", true);
stelliumRegenFlat = getConfig().getBoolean("stat-regen-flat.stellium", true);
}
if (Bukkit.getPluginManager().getPlugin("Vault") != null) economy = new VaultEconomy();
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
@ -177,8 +189,33 @@ public class MMOCore extends LuminePlugin {
for (PlayerData player : PlayerData.getAll())
if (player.isOnline() && !player.getPlayer().isDead())
for (PlayerResource resource : PlayerResource.values()) {
double d = player.getProfess().getHandler(resource).getRegen(player);
if (d != 0) resource.regen(player, d);
double regenAmount = player.getProfess().getHandler(resource).getRegen(player);
switch (resource) {
case HEALTH:
if (healthRegenFlat && regenAmount != 0)
resource.regen(player, regenAmount);
else if (!healthRegenFlat && regenAmount * player.getStats().getStat(StatType.HEALTH_REGENERATION) != 0)
resource.regen(player, player.getStats().getStat(StatType.MAX_HEALTH) * regenAmount);
break;
case MANA:
if (manaRegenFlat && regenAmount != 0)
resource.regen(player, regenAmount);
else if (!manaRegenFlat && regenAmount * player.getStats().getStat(StatType.MANA_REGENERATION) != 0)
resource.regen(player, player.getStats().getStat(StatType.MAX_MANA) * regenAmount);
break;
case STAMINA:
if (staminaRegenFlat && regenAmount != 0)
resource.regen(player, regenAmount);
else if (!staminaRegenFlat && regenAmount * player.getStats().getStat(StatType.STAMINA_REGENERATION) != 0)
resource.regen(player, player.getStats().getStat(StatType.MAX_STAMINA) * regenAmount);
break;
case STELLIUM:
if (stelliumRegenFlat && regenAmount != 0)
resource.regen(player, regenAmount);
else if (!stelliumRegenFlat && regenAmount * player.getStats().getStat(StatType.STELLIUM_REGENERATION) != 0)
resource.regen(player, player.getStats().getStat(StatType.MAX_STELLIUM) * regenAmount);
break;
}
}
}
}.runTaskTimer(MMOCore.plugin, 100, 20);

View File

@ -14,7 +14,7 @@ public class CustomBlockMineEvent extends PlayerDataEvent implements Cancellable
private final Block block;
private final BlockInfo info;
private final List<ItemStack> drops;
private List<ItemStack> drops;
private boolean cancelled;
@ -39,6 +39,10 @@ public class CustomBlockMineEvent extends PlayerDataEvent implements Cancellable
return info;
}
public void setDrops(List<ItemStack> list) {
this.drops = list;
}
@Override
public boolean isCancelled() {
return cancelled;

View File

@ -102,6 +102,8 @@ public class BlockListener implements Listener {
return;
}
drops = called.getDrops();
/*
* Remove vanilla drops if needed and
* decreases the durability of the item

View File

@ -1,19 +1,14 @@
package net.Indyuce.mmocore.listener.option;
import io.lumine.mythic.lib.MythicLib;
import io.lumine.mythic.lib.comp.target.InteractionType;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.manager.InventoryManager;
import org.bukkit.entity.EntityType;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.inventory.Inventory;
public class PlayerProfileCheck implements Listener {
@EventHandler
public void a(PlayerInteractEntityEvent event) {
/**
if (event.getRightClicked().getType() != EntityType.PLAYER || !MythicLib.plugin.getEntities().canTarget(event.getPlayer(), event.getRightClicked(), InteractionType.SUPPORT_ACTION))
return;
@ -24,7 +19,10 @@ public class PlayerProfileCheck implements Listener {
* Opening inventories like that to other players does NOT
* necessarily works for any other custom inventory.
* */
/**
Inventory inv = InventoryManager.PLAYER_STATS.newInventory(PlayerData.get(event.getRightClicked().getUniqueId())).getInventory();
event.getPlayer().openInventory(inv);
**/
}
}

View File

@ -1,6 +1,14 @@
package net.Indyuce.mmocore.skill.list;
import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.version.VersionSound;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.util.math.formula.LinearValue;
import net.Indyuce.mmocore.api.util.math.particle.ParabolicProjectile;
import net.Indyuce.mmocore.skill.CasterMetadata;
import net.Indyuce.mmocore.skill.Skill;
import net.Indyuce.mmocore.skill.metadata.SkillMetadata;
import net.Indyuce.mmocore.skill.metadata.TargetSkillMetadata;
import org.bukkit.Material;
import org.bukkit.Particle;
import org.bukkit.Sound;
@ -9,23 +17,13 @@ import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.util.Vector;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.skill.Skill;
import net.Indyuce.mmocore.skill.metadata.SkillMetadata;
import net.Indyuce.mmocore.skill.metadata.TargetSkillMetadata;
import net.Indyuce.mmocore.api.util.math.formula.LinearValue;
import net.Indyuce.mmocore.api.util.math.particle.ParabolicProjectile;
import io.lumine.mythic.lib.MythicLib;
import io.lumine.mythic.lib.api.AttackResult;
import io.lumine.mythic.lib.damage.DamageType;;
import io.lumine.mythic.lib.version.VersionSound;
public class Fire_Storm extends Skill {
public Fire_Storm() {
super();
setMaterial(Material.BLAZE_POWDER);
setLore("Casts a flurry of 6 fire projectiles onto", "nearby enemies, proritizing the initial", "target. Each projectile deals &c{damage} &7damage", "and ignite the target for &c{ignite} &7seconds.", "", "&e{cooldown}s Cooldown", "&9Costs {mana} {mana_name}");
setLore("Casts a flurry of 6 fire projectiles onto", "nearby enemies, proritizing the initial",
"target. Each projectile deals &c{damage} &7damage", "and ignite the target for &c{ignite} &7seconds.", "",
"&e{cooldown}s Cooldown", "&9Costs {mana} {mana_name}");
addModifier("mana", new LinearValue(15, 2));
addModifier("damage", new LinearValue(5, 3));
@ -36,8 +34,7 @@ public class Fire_Storm extends Skill {
@Override
public SkillMetadata whenCast(CasterMetadata caster, SkillInfo skill) {
TargetSkillMetadata cast = new TargetSkillMetadata(caster, skill, 20);
if (!cast.isSuccessful() )
return cast;
if (!cast.isSuccessful()) return cast;
LivingEntity target = cast.getTarget();
@ -50,7 +47,8 @@ public class Fire_Storm extends Skill {
@Override
public void run() {
if (j++ > 5 || caster.getPlayer().isDead() || !caster.getPlayer().isOnline() || target.isDead() || !caster.getPlayer().getWorld().equals(target.getWorld())) {
if (j++ > 5 || caster.getPlayer().isDead() || !caster.getPlayer().isOnline() || target.isDead() || !caster.getPlayer().getWorld()
.equals(target.getWorld())) {
cancel();
return;
}
@ -58,7 +56,8 @@ public class Fire_Storm extends Skill {
// TODO dynamic target location
caster.getPlayer().getWorld().playSound(caster.getPlayer().getLocation(), Sound.BLOCK_FIRE_AMBIENT, 1, 1);
new ParabolicProjectile(caster.getPlayer().getLocation().add(0, 1, 0), target.getLocation().add(0, target.getHeight() / 2, 0), randomVector(caster.getPlayer()), () -> {
new ParabolicProjectile(caster.getPlayer().getLocation().add(0, 1, 0), target.getLocation().add(0, target.getHeight() / 2, 0),
randomVector(caster.getPlayer()), () -> {
target.getWorld().playSound(target.getLocation(), VersionSound.ENTITY_FIREWORK_ROCKET_TWINKLE.toSound(), 1, 2);
target.getWorld().spawnParticle(Particle.SMOKE_NORMAL, target.getLocation().add(0, target.getHeight() / 2, 0), 8, 0, 0, 0, .15);
caster.attack(target, damage, DamageType.SKILL, DamageType.PROJECTILE, DamageType.MAGIC);

View File

@ -8,7 +8,7 @@
# a Spigot Plugin by Team Requiem
# DO NOT TOUCH
config-version: 7
config-version: 8
# Auto-Save feature automatically saves playerdata
# (class, level, etc.) and guild data
@ -42,6 +42,17 @@ default-playerdata:
attribute-points: 0
attribute-realloc-points: 0
# Should these Stats regenrate with a FLAT value or PERCENTAGE value?
# By default, they are set to TRUE, which means they will regenerate
# based off the FLAT Regeneration value for the respective stat
# Setting a stat to FALSE means that it will regenerate
# with the formula (Stat Regen * Max Stat) for example (Mana Regeneration * Max Mana)
stat-regen-flat:
health: true
mana: true
stamina: true
stellium: true
# The list of all conditions which must be met for the
# BLOCK REGEN and BLOCK RESTRICTIONS to apply. Set to
# 'custom-mine-conditions: []' to disable custom mining entirely.