mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-21 12:46:46 +01:00
Expand API for McMMOPlayerMasterAnglerEvent
This commit is contained in:
parent
827b894257
commit
19bf96ab33
@ -1,14 +1,53 @@
|
||||
package com.gmail.nossr50.events.skills.fishing;
|
||||
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import com.gmail.nossr50.skills.fishing.FishingManager;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class McMMOPlayerMasterAnglerEvent extends McMMOPlayerFishingEvent {
|
||||
private int reducedMinWaitTime;
|
||||
private int reducedMaxWaitTime;
|
||||
private final FishingManager fishingManager;
|
||||
|
||||
public McMMOPlayerMasterAnglerEvent(@NotNull McMMOPlayer mcMMOPlayer) {
|
||||
public McMMOPlayerMasterAnglerEvent(@NotNull McMMOPlayer mcMMOPlayer,
|
||||
int reducedMinWaitTime,
|
||||
int reducedMaxWaitTime,
|
||||
FishingManager fishingManager) {
|
||||
super(mcMMOPlayer);
|
||||
this.fishingManager = fishingManager;
|
||||
this.reducedMinWaitTime = Math.max(reducedMinWaitTime, getReducedMinWaitTimeLowerBound());
|
||||
this.reducedMaxWaitTime = Math.max(reducedMaxWaitTime, getReducedMaxWaitTimeLowerBound());
|
||||
}
|
||||
|
||||
public int getReducedMinWaitTime() {
|
||||
return reducedMinWaitTime;
|
||||
}
|
||||
|
||||
public void setReducedMinWaitTime(int reducedMinWaitTime) {
|
||||
if (reducedMinWaitTime < 0 || reducedMinWaitTime > reducedMaxWaitTime) {
|
||||
throw new IllegalArgumentException("Reduced min wait time must be greater than or equal to 0" +
|
||||
" and less than reduced max wait time.");
|
||||
}
|
||||
this.reducedMinWaitTime = Math.max(reducedMinWaitTime, getReducedMinWaitTimeLowerBound());
|
||||
}
|
||||
|
||||
public int getReducedMaxWaitTime() {
|
||||
return reducedMaxWaitTime;
|
||||
}
|
||||
|
||||
public void setReducedMaxWaitTime(int reducedMaxWaitTime) {
|
||||
if (reducedMaxWaitTime < 0 || reducedMaxWaitTime < reducedMinWaitTime) {
|
||||
throw new IllegalArgumentException("Reduced max wait time must be greater than or equal to 0" +
|
||||
" and greater than reduced min wait time.");
|
||||
}
|
||||
this.reducedMaxWaitTime = Math.max(reducedMaxWaitTime, getReducedMaxWaitTimeLowerBound());
|
||||
}
|
||||
|
||||
public int getReducedMinWaitTimeLowerBound() {
|
||||
return fishingManager.getMasterAnglerMinWaitLowerBound();
|
||||
}
|
||||
|
||||
public int getReducedMaxWaitTimeLowerBound() {
|
||||
return fishingManager.getMasterAnglerMaxWaitLowerBound();
|
||||
}
|
||||
}
|
@ -56,9 +56,17 @@ public class FishingManager extends SkillManager {
|
||||
private Item fishingCatch;
|
||||
private Location hookLocation;
|
||||
private int fishCaughtCounter = 1;
|
||||
private final int masterAnglerMinWaitLowerBound;
|
||||
private final int masterAnglerMaxWaitLowerBound;
|
||||
|
||||
public FishingManager(McMMOPlayer mcMMOPlayer) {
|
||||
super(mcMMOPlayer, PrimarySkillType.FISHING);
|
||||
//Ticks for minWait and maxWait never go below this value
|
||||
int bonusCapMin = mcMMO.p.getAdvancedConfig().getFishingReductionMinWaitCap();
|
||||
int bonusCapMax = mcMMO.p.getAdvancedConfig().getFishingReductionMaxWaitCap();
|
||||
|
||||
this.masterAnglerMinWaitLowerBound = Math.max(bonusCapMin, 0);
|
||||
this.masterAnglerMaxWaitLowerBound = Math.max(bonusCapMax, masterAnglerMinWaitLowerBound + 40);
|
||||
}
|
||||
|
||||
public boolean canShake(Entity target) {
|
||||
@ -254,13 +262,6 @@ public class FishingManager extends SkillManager {
|
||||
* @param fishHook target fish hook
|
||||
*/
|
||||
public void processMasterAngler(@NotNull FishHook fishHook, int lureLevel) {
|
||||
McMMOPlayerMasterAnglerEvent event = new McMMOPlayerMasterAnglerEvent(mmoPlayer);
|
||||
mcMMO.p.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
if (event.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
MasterAnglerCompatibilityLayer masterAnglerCompatibilityLayer = (MasterAnglerCompatibilityLayer) mcMMO.getCompatibilityManager().getMasterAnglerCompatibilityLayer();
|
||||
|
||||
if (masterAnglerCompatibilityLayer != null) {
|
||||
@ -280,12 +281,8 @@ public class FishingManager extends SkillManager {
|
||||
int minWaitReduction = getMasterAnglerTickMinWaitReduction(masterAnglerRank, boatBonus);
|
||||
int maxWaitReduction = getMasterAnglerTickMaxWaitReduction(masterAnglerRank, boatBonus, convertedLureBonus);
|
||||
|
||||
//Ticks for minWait and maxWait never go below this value
|
||||
int bonusCapMin = mcMMO.p.getAdvancedConfig().getFishingReductionMinWaitCap();
|
||||
int bonusCapMax = mcMMO.p.getAdvancedConfig().getFishingReductionMaxWaitCap();
|
||||
|
||||
int reducedMinWaitTime = getReducedTicks(minWaitTicks, minWaitReduction, bonusCapMin);
|
||||
int reducedMaxWaitTime = getReducedTicks(maxWaitTicks, maxWaitReduction, bonusCapMax);
|
||||
int reducedMinWaitTime = getReducedTicks(minWaitTicks, minWaitReduction, masterAnglerMinWaitLowerBound);
|
||||
int reducedMaxWaitTime = getReducedTicks(maxWaitTicks, maxWaitReduction, masterAnglerMaxWaitLowerBound);
|
||||
|
||||
boolean badValuesFix = false;
|
||||
|
||||
@ -295,11 +292,23 @@ public class FishingManager extends SkillManager {
|
||||
badValuesFix = true;
|
||||
}
|
||||
|
||||
final McMMOPlayerMasterAnglerEvent event =
|
||||
new McMMOPlayerMasterAnglerEvent(mmoPlayer, reducedMinWaitTime, reducedMaxWaitTime, this);
|
||||
mcMMO.p.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
if (event.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
reducedMaxWaitTime = event.getReducedMaxWaitTime();
|
||||
reducedMinWaitTime = event.getReducedMinWaitTime();
|
||||
|
||||
if (mmoPlayer.isDebugMode()) {
|
||||
mmoPlayer.getPlayer().sendMessage(ChatColor.GOLD + "Master Angler Debug");
|
||||
|
||||
if (badValuesFix) {
|
||||
mmoPlayer.getPlayer().sendMessage(ChatColor.RED + "Bad values were applied and corrected, check your configs, max wait should never be lower than min wait.");
|
||||
mmoPlayer.getPlayer().sendMessage(ChatColor.RED + "Bad values were applied and corrected," +
|
||||
" check your configs, minWaitLowerBound wait should never be lower than min wait.");
|
||||
}
|
||||
|
||||
mmoPlayer.getPlayer().sendMessage("ALLOW STACK WITH LURE: " + masterAnglerCompatibilityLayer.getApplyLure(fishHook));
|
||||
@ -326,8 +335,8 @@ public class FishingManager extends SkillManager {
|
||||
mmoPlayer.getPlayer().sendMessage("");
|
||||
|
||||
mmoPlayer.getPlayer().sendMessage(ChatColor.DARK_AQUA + "Caps / Limits (edit in advanced.yml)");
|
||||
mmoPlayer.getPlayer().sendMessage("Lowest possible max wait ticks " + bonusCapMax);
|
||||
mmoPlayer.getPlayer().sendMessage("Lowest possible min wait ticks " + bonusCapMin);
|
||||
mmoPlayer.getPlayer().sendMessage("Lowest possible minWaitLowerBound wait ticks " + masterAnglerMinWaitLowerBound);
|
||||
mmoPlayer.getPlayer().sendMessage("Lowest possible min wait ticks " + masterAnglerMaxWaitLowerBound);
|
||||
}
|
||||
|
||||
masterAnglerCompatibilityLayer.setMaxWaitTime(fishHook, reducedMaxWaitTime);
|
||||
@ -724,4 +733,12 @@ public class FishingManager extends SkillManager {
|
||||
private int getVanillaXpMultiplier() {
|
||||
return getVanillaXPBoostModifier();
|
||||
}
|
||||
|
||||
public int getMasterAnglerMinWaitLowerBound() {
|
||||
return masterAnglerMinWaitLowerBound;
|
||||
}
|
||||
|
||||
public int getMasterAnglerMaxWaitLowerBound() {
|
||||
return masterAnglerMaxWaitLowerBound;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user