Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
123 additions
and
20 deletions.
There are no files selected for viewing
96 changes: 96 additions & 0 deletions
96
src/main/java/net/citizensnpcs/api/gui/CitizensInventoryClickEvent.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
package net.citizensnpcs.api.gui; | ||
|
||
import org.bukkit.Material; | ||
import org.bukkit.event.inventory.InventoryClickEvent; | ||
import org.bukkit.inventory.ItemStack; | ||
|
||
public class CitizensInventoryClickEvent extends InventoryClickEvent { | ||
private final InventoryClickEvent event; | ||
private final ItemStack result; | ||
|
||
public CitizensInventoryClickEvent(InventoryClickEvent event) { | ||
super(event.getView(), event.getSlotType(), event.getSlot(), event.getClick(), event.getAction(), | ||
event.getHotbarButton()); | ||
this.event = event; | ||
this.result = getResult(event); | ||
} | ||
|
||
@Override | ||
public ItemStack getCurrentItem() { | ||
return event.getCurrentItem() == null || event.getCurrentItem().getType() == Material.AIR ? null | ||
: event.getCurrentItem(); | ||
} | ||
|
||
public ItemStack getCurrentItemNonNull() { | ||
return event.getCurrentItem() == null ? new ItemStack(Material.AIR, 0) : event.getCurrentItem(); | ||
} | ||
|
||
@Override | ||
public ItemStack getCursor() { | ||
return event.getCursor() == null || event.getCursor().getType() == Material.AIR ? null : event.getCursor(); | ||
} | ||
|
||
public ItemStack getCursorNonNull() { | ||
return event.getCursor() == null ? new ItemStack(Material.AIR, 0) : event.getCursor(); | ||
} | ||
|
||
private ItemStack getResult(InventoryClickEvent event) { | ||
ItemStack stack = event.getCurrentItem() == null ? new ItemStack(event.getCursor().getType(), 0) | ||
: event.getCurrentItem().clone(); | ||
switch (event.getAction()) { | ||
case PICKUP_ONE: | ||
stack.setAmount(stack.getAmount() - 1); | ||
break; | ||
case PICKUP_HALF: | ||
stack.setAmount((int) Math.floor(stack.getAmount() / 2.0)); | ||
break; | ||
case PICKUP_ALL: | ||
stack = null; | ||
break; | ||
case PLACE_ALL: | ||
stack.setAmount( | ||
Math.min(stack.getAmount() + event.getCursor().getAmount(), stack.getType().getMaxStackSize())); | ||
break; | ||
case PLACE_SOME: | ||
stack.setAmount(Math.min(stack.getAmount(), stack.getType().getMaxStackSize())); | ||
break; | ||
case PLACE_ONE: | ||
stack.setAmount(stack.getAmount() + 1); | ||
break; | ||
default: | ||
event.setCancelled(true); | ||
event.setResult(Result.DENY); | ||
return null; | ||
} | ||
return stack; | ||
} | ||
|
||
public ItemStack getResultItem() { | ||
return result; | ||
} | ||
|
||
public ItemStack getResultItemNonNull() { | ||
return result == null ? new ItemStack(Material.AIR, 0) : result; | ||
} | ||
|
||
@Override | ||
public void setCancelled(boolean cancel) { | ||
event.setCancelled(cancel); | ||
} | ||
|
||
@Override | ||
public void setCurrentItem(ItemStack item) { | ||
event.setCurrentItem(item); | ||
} | ||
|
||
@Override | ||
@SuppressWarnings("deprecation") | ||
public void setCursor(ItemStack cursor) { | ||
event.setCursor(cursor); | ||
} | ||
|
||
@Override | ||
public void setResult(Result result) { | ||
event.setResult(result); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters