Better compatibility with other fishing plugins

Fixes #4428
This commit is contained in:
nossr50 2021-03-05 15:13:14 -08:00
parent 31076e6ba9
commit 92efd59760
3 changed files with 55 additions and 2 deletions

View File

@ -3,10 +3,13 @@ Version 2.1.177
Fixed a bug where mcMMO would fail to update a players name when it detected a name change
mcMMO will treat vanished players as if they are offline when using the inspect command on them now (see notes)
mcMMO now listens to PlayerFishEvent at HIGH event priority instead of HIGHEST
Changed how vanilla treasures are overridden (AIR instead of SALMON)
(API) Added McMMOReplaceVanillaTreasureEvent -- see notes
NOTES:
A few changes were made to the inspect command, it used to reject you when used on vanished players, now it will be processed as if they are offline.
Additionally if you do inspect a vanished player, it will not use their display name (consistent with offline players) as that would give them away for being online
McMMOReplaceVanillaTreasureEvent is an event which is fired when mcMMO replaces a vanilla treasure with a Salmon if the server config file is set to override vanilla treasures, this causes some issues for other fishing plugins so this event helps those plugins be more compatible
Version 2.1.176
Another fix for Double Smelt bringing item stack size to illegal values

View File

@ -0,0 +1,41 @@
package com.gmail.nossr50.events;
import org.bukkit.entity.Item;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
public class McMMOReplaceVanillaTreasureEvent extends Event {
private @NotNull ItemStack replacementItemStack;
private final @NotNull Item originalItem;
public McMMOReplaceVanillaTreasureEvent(@NotNull Item originalItem, @NotNull ItemStack replacementItemStack) {
this.originalItem = originalItem;
this.replacementItemStack = replacementItemStack;
}
/** Rest of file is required boilerplate for custom events **/
private static final @NotNull HandlerList handlers = new HandlerList();
@Override
public @NotNull HandlerList getHandlers() {
return handlers;
}
public static @NotNull HandlerList getHandlerList() {
return handlers;
}
public @NotNull ItemStack getReplacementItemStack() {
return replacementItemStack;
}
public void setReplacementItemStack(@NotNull ItemStack replacementItemStack) {
this.replacementItemStack = replacementItemStack;
}
public @NotNull Item getOriginalItem() {
return originalItem;
}
}

View File

@ -8,6 +8,7 @@ import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.datatypes.skills.SubSkillType;
import com.gmail.nossr50.datatypes.skills.subskills.taming.CallOfTheWildType;
import com.gmail.nossr50.events.McMMOReplaceVanillaTreasureEvent;
import com.gmail.nossr50.events.fake.FakePlayerAnimationEvent;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.mcMMO;
@ -291,12 +292,20 @@ public class PlayerListener implements Listener {
if(event.getCaught() != null) {
Item fishingCatch = (Item) event.getCaught();
if (Config.getInstance(). getFishingOverrideTreasures() &&
if (Config.getInstance().getFishingOverrideTreasures() &&
fishingCatch.getItemStack().getType() != Material.SALMON &&
fishingCatch.getItemStack().getType() != Material.COD &&
fishingCatch.getItemStack().getType() != Material.TROPICAL_FISH &&
fishingCatch.getItemStack().getType() != Material.PUFFERFISH) {
fishingCatch.setItemStack(new ItemStack(Material.SALMON, 1));
ItemStack replacementCatch = new ItemStack(Material.AIR);
McMMOReplaceVanillaTreasureEvent replaceVanillaTreasureEvent = new McMMOReplaceVanillaTreasureEvent(fishingCatch, replacementCatch);
Bukkit.getPluginManager().callEvent(replaceVanillaTreasureEvent);
//Replace
replacementCatch = replaceVanillaTreasureEvent.getReplacementItemStack();
fishingCatch.setItemStack(replacementCatch);
}
if (Permissions.vanillaXpBoost(player, PrimarySkillType.FISHING)) {