9
0
mirror of https://github.com/Xiao-MoMi/Custom-Crops.git synced 2025-12-22 00:19:24 +00:00
This commit is contained in:
Xiao-MoMi
2022-10-17 10:53:47 +08:00
parent 04cfa5770f
commit cd5bf4e2f7
12 changed files with 64 additions and 26 deletions

View File

@@ -4,7 +4,7 @@ plugins {
}
group = 'net.momirealms'
version = '2.0-r8-hotfix'
version = '2.0-r9'
repositories {
mavenCentral()

View File

@@ -23,15 +23,13 @@ import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
public class CrowAttackEvent extends Event implements Cancellable {
public class CrowAttackEvent extends Event {
private final Location location;
private boolean cancelled;
private static final HandlerList handlers = new HandlerList();
public CrowAttackEvent(Location location) {
this.location = location;
this.cancelled = false;
}
@Override
@@ -39,16 +37,6 @@ public class CrowAttackEvent extends Event implements Cancellable {
return handlers;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancel) {
cancelled = cancel;
}
public Location getLocation() {
return location;
}

View File

@@ -116,6 +116,8 @@ public class MainConfig {
public static boolean preventPlantVanilla;
public static Material[] preventPlantVanillaArray;
public static boolean enableConvert;
public static boolean enableSkillBonus;
public static double bonusPerLevel;
public static HashMap<Material, String> vanilla2Crops;
public static void load() {
@@ -235,6 +237,9 @@ public class MainConfig {
waterBarEmpty = config.getString("watering-can-lore.water-bar.empty", "뀁뀄");
waterBarRight = config.getString("watering-can-lore.water-bar.right", "뀁뀅</font>");
enableSkillBonus = config.getBoolean("mechanics.skill-bonus.enable", false);
bonusPerLevel = config.getDouble("mechanics.skill-bonus.bonus-per-level", 0.001);
rightHarvestVanilla = config.getBoolean("mechanics.vanilla-crops.right-click-harvest", false);
preventPlantVanilla = config.getBoolean("mechanics.vanilla-crops.prevent-plant.enable", false);

View File

@@ -23,4 +23,6 @@ public interface SkillXP {
void addXp(Player player, double amount);
int getLevel(Player player);
}

View File

@@ -32,4 +32,9 @@ public class AureliumsHook implements SkillXP {
public void addXp(Player player, double amount) {
leveler.addXp(player, skill, amount);
}
@Override
public int getLevel(Player player) {
return AureliumAPI.getSkillLevel(player, skill);
}
}

View File

@@ -28,4 +28,9 @@ public class EcoSkillsHook implements SkillXP {
public void addXp(Player player, double amount) {
EcoSkillsAPI.getInstance().giveSkillExperience(player, Skills.FARMING, amount);
}
@Override
public int getLevel(Player player) {
return EcoSkillsAPI.getInstance().getSkillLevel(player, Skills.FARMING);
}
}

View File

@@ -31,16 +31,27 @@ public class JobsRebornHook implements SkillXP {
@Override
public void addXp(Player player, double amount) {
JobsPlayer jobsPlayer = Jobs.getPlayerManager().getJobsPlayer(player);
if (jobsPlayer != null) {
List<JobProgression> jobs = jobsPlayer.getJobProgression();
Job job = Jobs.getJob("Farmer");
for (JobProgression progression : jobs)
if (progression.getJob().equals(job)){
progression.addExperience(amount);
}
}
}
@Override
public int getLevel(Player player) {
JobsPlayer jobsPlayer = Jobs.getPlayerManager().getJobsPlayer(player);
if (jobsPlayer != null) {
List<JobProgression> jobs = jobsPlayer.getJobProgression();
Job job = Jobs.getJob("Farmer");
for (JobProgression progression : jobs)
if (progression.getJob().equals(job)){
return progression.getLevel();
}
}
return 0;
}
}

View File

@@ -29,4 +29,9 @@ public class MMOCoreHook implements SkillXP {
Profession profession = MMOCore.plugin.professionManager.get("farming");
profession.giveExperience(MMOCore.plugin.dataProvider.getDataManager().get(player), amount, null ,EXPSource.OTHER);
}
@Override
public int getLevel(Player player) {
return 0;
}
}

View File

@@ -18,6 +18,7 @@
package net.momirealms.customcrops.integrations.skill;
import com.gmail.nossr50.api.ExperienceAPI;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import net.momirealms.customcrops.integrations.SkillXP;
import org.bukkit.entity.Player;
@@ -27,4 +28,9 @@ public class mcMMOHook implements SkillXP {
public void addXp(Player player, double amount) {
ExperienceAPI.addRawXP(player, "Herbalism", (float) amount, "UNKNOWN");
}
@Override
public int getLevel(Player player) {
return ExperienceAPI.getLevel(player, PrimarySkillType.HERBALISM);
}
}

View File

@@ -57,6 +57,7 @@ import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.Nullable;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Future;
import java.util.concurrent.ThreadLocalRandom;
public class CropManager extends Function {
@@ -364,10 +365,14 @@ public class CropManager extends Function {
qualityRatio = qualityCrop.getQualityRatio();
}
}
if (MainConfig.enableSkillBonus) {
double bonus_chance = MainConfig.skillXP.getLevel(player) * MainConfig.bonusPerLevel;
amount *= (bonus_chance + 1);
}
dropQualityLoots(qualityLoot, amount, location.getBlock().getLocation(), qualityRatio);
}
OtherLoot[] otherLoots = crop.getOtherLoots();
if (otherLoots != null) dropOtherLoots(otherLoots, location.getBlock().getLocation());
if (otherLoots != null) dropOtherLoots(otherLoots, location.getBlock().getLocation(), player);
}
public void performActions(ActionInterface[] actions, Player player) {
@@ -376,10 +381,14 @@ public class CropManager extends Function {
}
}
public void dropOtherLoots(OtherLoot[] otherLoots, Location location) {
public void dropOtherLoots(OtherLoot[] otherLoots, Location location, Player player) {
for (OtherLoot otherLoot : otherLoots) {
if (Math.random() < otherLoot.getChance()) {
int random = ThreadLocalRandom.current().nextInt(otherLoot.getMin(), otherLoot.getMax() + 1);
if (MainConfig.enableSkillBonus) {
double bonus_chance = MainConfig.skillXP.getLevel(player) * MainConfig.bonusPerLevel;
random *= (bonus_chance + 1);
}
ItemStack drop = getLoot(otherLoot.getItemID());
if (drop == null) continue;
drop.setAmount(random);
@@ -435,13 +444,9 @@ public class CropManager extends Function {
public boolean crowJudge(Location location) {
if (Math.random() < MainConfig.crowChance && !hasScarecrow(location)) {
CrowAttackEvent crowAttackEvent = new CrowAttackEvent(location);
Bukkit.getPluginManager().callEvent(crowAttackEvent);
if (crowAttackEvent.isCancelled()) {
return false;
}
Bukkit.getScheduler().runTask(CustomCrops.plugin, () -> {
CrowAttackEvent crowAttackEvent = new CrowAttackEvent(location);
Bukkit.getPluginManager().callEvent(crowAttackEvent);
for (Player player : location.getNearbyPlayers(48)) {
CrowTask crowTask = new CrowTask(player, location.clone().add(0.4,0,0.4), getArmorStandUtil());
crowTask.runTaskTimerAsynchronously(CustomCrops.plugin, 1, 1);

View File

@@ -203,6 +203,7 @@ public class CustomWorld {
public void unloadSeason() {
if (!SeasonConfig.enable) return;
if (MainConfig.realisticSeasonHook) return;
JsonObject jsonObject = new JsonObject();
JsonPrimitive jsonPrimitive = new JsonPrimitive(SeasonUtils.getSeason(world).name());
jsonObject.add("season", jsonPrimitive);

View File

@@ -1,5 +1,5 @@
#Don't change
config-version: '14'
config-version: '15'
# lang: english / spanish / chinese
lang: english
@@ -150,6 +150,11 @@ mechanics:
POTATO: potato
BEETROOT_SEEDS: beetroot
# This option requires a skill-plugin hook
# Which would increase the amount of crops player get
skill-bonus:
enable: false
bonus-per-level: 0.001
sounds:
water-pot: