mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-22 21:26:46 +01:00
Add McMMOPlayerSalvageCheckEvent
This commit is contained in:
parent
2e120abe3a
commit
0035762a71
@ -0,0 +1,58 @@
|
|||||||
|
package com.gmail.nossr50.events.skills.salvage;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Cancellable;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
|
import com.gmail.nossr50.events.skills.McMMOPlayerSkillEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called just before a player salvages an item with mcMMO.
|
||||||
|
*/
|
||||||
|
public class McMMOPlayerSalvageCheckEvent extends McMMOPlayerSkillEvent implements Cancellable {
|
||||||
|
private ItemStack salvageItem;
|
||||||
|
private ItemStack salvageResults;
|
||||||
|
private ItemStack enchantedBook;
|
||||||
|
private boolean cancelled;
|
||||||
|
|
||||||
|
public McMMOPlayerSalvageCheckEvent(Player player, ItemStack salvageItem, ItemStack salvageResults, ItemStack enchantedBook) {
|
||||||
|
super(player, SkillType.SALVAGE);
|
||||||
|
this.salvageItem = salvageItem;
|
||||||
|
this.salvageResults = salvageResults;
|
||||||
|
this.enchantedBook = enchantedBook;
|
||||||
|
this.cancelled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The item that should get salvaged.
|
||||||
|
*/
|
||||||
|
public ItemStack getSalvageItem() {
|
||||||
|
return salvageItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The results that should be dropped after salvaging.
|
||||||
|
*/
|
||||||
|
public ItemStack getSalvageResults() {
|
||||||
|
return salvageResults;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The enchanted book that should drop after salvaging or null if no book should be dropped.
|
||||||
|
*/
|
||||||
|
public ItemStack getEnchantedBook() {
|
||||||
|
return enchantedBook;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Following are required for Cancellable **/
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(boolean cancel) {
|
||||||
|
this.cancelled = cancel;
|
||||||
|
}
|
||||||
|
}
|
@ -20,6 +20,7 @@ import com.gmail.nossr50.locale.LocaleLoader;
|
|||||||
import com.gmail.nossr50.skills.SkillManager;
|
import com.gmail.nossr50.skills.SkillManager;
|
||||||
import com.gmail.nossr50.skills.salvage.Salvage.Tier;
|
import com.gmail.nossr50.skills.salvage.Salvage.Tier;
|
||||||
import com.gmail.nossr50.skills.salvage.salvageables.Salvageable;
|
import com.gmail.nossr50.skills.salvage.salvageables.Salvageable;
|
||||||
|
import com.gmail.nossr50.util.EventUtils;
|
||||||
import com.gmail.nossr50.util.Misc;
|
import com.gmail.nossr50.util.Misc;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
import com.gmail.nossr50.util.StringUtils;
|
import com.gmail.nossr50.util.StringUtils;
|
||||||
@ -99,17 +100,25 @@ public class SalvageManager extends SkillManager {
|
|||||||
|
|
||||||
Map<Enchantment, Integer> enchants = item.getEnchantments();
|
Map<Enchantment, Integer> enchants = item.getEnchantments();
|
||||||
|
|
||||||
|
ItemStack enchantBook = null;
|
||||||
if (!enchants.isEmpty()) {
|
if (!enchants.isEmpty()) {
|
||||||
ItemStack enchantBook = arcaneSalvageCheck(enchants);
|
enchantBook = arcaneSalvageCheck(enchants);
|
||||||
|
|
||||||
if (enchantBook != null) {
|
|
||||||
Misc.dropItem(location, enchantBook);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
byte salvageMaterialMetadata = (salvageable.getSalvageMaterialMetadata() != (byte) -1) ? salvageable.getSalvageMaterialMetadata() : 0;
|
byte salvageMaterialMetadata = (salvageable.getSalvageMaterialMetadata() != (byte) -1) ? salvageable.getSalvageMaterialMetadata() : 0;
|
||||||
|
|
||||||
Misc.dropItems(location, new MaterialData(salvageable.getSalvageMaterial(), salvageMaterialMetadata).toItemStack(salvageableAmount), 1);
|
ItemStack salvageResults = new MaterialData(salvageable.getSalvageMaterial(), salvageMaterialMetadata).toItemStack(salvageableAmount);
|
||||||
|
|
||||||
|
//Call event
|
||||||
|
if (EventUtils.callSalvageCheckEvent(player, item, salvageResults, enchantBook).isCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (enchantBook != null) {
|
||||||
|
Misc.dropItem(location, enchantBook);
|
||||||
|
}
|
||||||
|
|
||||||
|
Misc.dropItems(location, salvageResults, 1);
|
||||||
|
|
||||||
// BWONG BWONG BWONG - CLUNK!
|
// BWONG BWONG BWONG - CLUNK!
|
||||||
if (Config.getInstance().getSalvageAnvilUseSoundsEnabled()) {
|
if (Config.getInstance().getSalvageAnvilUseSoundsEnabled()) {
|
||||||
|
@ -40,6 +40,7 @@ import com.gmail.nossr50.events.skills.fishing.McMMOPlayerMagicHunterEvent;
|
|||||||
import com.gmail.nossr50.events.skills.repair.McMMOPlayerRepairCheckEvent;
|
import com.gmail.nossr50.events.skills.repair.McMMOPlayerRepairCheckEvent;
|
||||||
import com.gmail.nossr50.events.skills.secondaryabilities.SecondaryAbilityEvent;
|
import com.gmail.nossr50.events.skills.secondaryabilities.SecondaryAbilityEvent;
|
||||||
import com.gmail.nossr50.events.skills.unarmed.McMMOPlayerDisarmEvent;
|
import com.gmail.nossr50.events.skills.unarmed.McMMOPlayerDisarmEvent;
|
||||||
|
import com.gmail.nossr50.events.skills.salvage.McMMOPlayerSalvageCheckEvent;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
@ -279,4 +280,11 @@ public class EventUtils {
|
|||||||
|
|
||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static McMMOPlayerSalvageCheckEvent callSalvageCheckEvent(Player player, ItemStack salvageMaterial, ItemStack salvageResults, ItemStack enchantedBook) {
|
||||||
|
McMMOPlayerSalvageCheckEvent event = new McMMOPlayerSalvageCheckEvent(player, salvageMaterial, salvageResults, enchantedBook);
|
||||||
|
mcMMO.p.getServer().getPluginManager().callEvent(event);
|
||||||
|
|
||||||
|
return event;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user