mirror of
https://gitlab.com/phoenix-dvpmt/mmoitems.git
synced 2025-03-25 15:39:31 +01:00
Added CraftMMOItemEvent for custom crafting
This commit is contained in:
parent
0796cdf795
commit
36725a9cb4
@ -0,0 +1,33 @@
|
||||
package net.Indyuce.mmoitems.api.event;
|
||||
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import net.Indyuce.mmoitems.api.player.PlayerData;
|
||||
|
||||
public class CraftMMOItemEvent extends PlayerDataEvent {
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
|
||||
private ItemStack stack;
|
||||
|
||||
public CraftMMOItemEvent(PlayerData playerData, ItemStack stack) {
|
||||
super(playerData);
|
||||
this.stack = stack;
|
||||
}
|
||||
|
||||
public ItemStack getResult() {
|
||||
return stack;
|
||||
}
|
||||
|
||||
public void setStack(ItemStack stack) {
|
||||
this.stack = stack;
|
||||
}
|
||||
|
||||
public HandlerList getHandlers() {
|
||||
return handlers;
|
||||
}
|
||||
|
||||
public static HandlerList getHandlerList() {
|
||||
return handlers;
|
||||
}
|
||||
}
|
@ -20,6 +20,8 @@ import org.bukkit.inventory.CraftingInventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import net.Indyuce.mmoitems.MMOItems;
|
||||
import net.Indyuce.mmoitems.api.event.CraftMMOItemEvent;
|
||||
import net.Indyuce.mmoitems.api.player.PlayerData;
|
||||
import net.Indyuce.mmoitems.api.recipe.workbench.CachedRecipe;
|
||||
import net.Indyuce.mmoitems.api.recipe.workbench.CustomRecipe;
|
||||
import net.Indyuce.mmoitems.api.recipe.workbench.ingredients.WorkbenchIngredient;
|
||||
@ -38,9 +40,11 @@ public class CraftingListener implements Listener {
|
||||
public void getResult(InventoryClickEvent e) {
|
||||
if (!(e.getView().getPlayer() instanceof Player) || !(e.getInventory() instanceof CraftingInventory))
|
||||
return;
|
||||
Player player = (Player) e.getView().getPlayer();
|
||||
|
||||
if (e.getSlotType() == SlotType.CRAFTING && e.getAction() == InventoryAction.PLACE_ONE)
|
||||
Bukkit.getScheduler().runTaskLater(MMOItems.plugin,
|
||||
() -> handleCustomCrafting((CraftingInventory) e.getInventory(), (Player) e.getView().getPlayer()),
|
||||
() -> handleCustomCrafting((CraftingInventory) e.getInventory(), player),
|
||||
1);
|
||||
else if (e.getSlotType() == SlotType.RESULT) {
|
||||
CraftingInventory inv = (CraftingInventory) e.getInventory();
|
||||
@ -57,6 +61,14 @@ public class CraftingListener implements Listener {
|
||||
e.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
CraftMMOItemEvent event = new CraftMMOItemEvent(PlayerData.get(player),
|
||||
cached.getResult());
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
if(event.isCancelled()) {
|
||||
e.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
ItemStack[] newMatrix = cached.generateMatrix(inv.getMatrix());
|
||||
inv.setMatrix(new ItemStack[] { null, null, null, null, null, null, null, null, null });
|
||||
Bukkit.getScheduler().runTaskLater(MMOItems.plugin, new Runnable() {
|
||||
@ -68,12 +80,12 @@ public class CraftingListener implements Listener {
|
||||
check = false;
|
||||
if (check) {
|
||||
inv.setMatrix(new ItemStack[] { null, null, null, null, null, null, null, null, null });
|
||||
((Player) e.getView().getPlayer()).updateInventory();
|
||||
} else
|
||||
inv.setMatrix(newMatrix);
|
||||
}
|
||||
}, 1);
|
||||
e.setCurrentItem(cached.getResult());
|
||||
e.setCurrentItem(event.getResult());
|
||||
Bukkit.getScheduler().runTaskLater(MMOItems.plugin, () -> player.updateInventory(), 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user