Skip to content

Commit

Permalink
Add new event
Browse files Browse the repository at this point in the history
  • Loading branch information
fullwall committed Jan 20, 2021
1 parent 0722784 commit e415663
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 1 deletion.
Expand Up @@ -52,7 +52,6 @@ private WanderGoal(NPC npc, int xrange, int yrange, Supplier<PhTreeSolid<Boolean
private Location findRandomPosition() {
Location found = MinecraftBlockExaminer.findRandomValidLocation(npc.getEntity().getLocation(NPC_LOCATION),
xrange, yrange, new Function<Block, Boolean>() {

@Override
public Boolean apply(Block block) {
if ((block.getRelative(BlockFace.UP).isLiquid() || block.getRelative(0, 2, 0).isLiquid())
Expand Down
@@ -0,0 +1,40 @@
package net.citizensnpcs.api.event;

import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;

import net.citizensnpcs.api.npc.NPC;

public class NPCLookCloseChangeTargetEvent extends NPCEvent {
private Player next;
private final Player old;

public NPCLookCloseChangeTargetEvent(NPC npc, Player old, Player next) {
super(npc);
this.old = old;
this.next = next;
}

@Override
public HandlerList getHandlers() {
return handlers;
}

public Player getNewTarget() {
return next;
}

public Player getPreviousTarget() {
return old;
}

public void setNewTarget(Player target) {
this.next = target;
}

public static HandlerList getHandlerList() {
return handlers;
}

private static final HandlerList handlers = new HandlerList();
}
32 changes: 32 additions & 0 deletions src/main/java/net/citizensnpcs/api/gui/InventoryMenu.java
Expand Up @@ -2,18 +2,27 @@

import java.lang.invoke.MethodHandle;
import java.lang.reflect.Constructor;
import java.util.Collection;
import java.util.Map;
import java.util.WeakHashMap;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryView;

import com.google.common.collect.Lists;

public class InventoryMenu {
private final MenuContext currentContext;
private InventoryMenuPage page;
private final InventoryMenuPattern[] patterns;
private final InventoryMenuTransition[] transitions;
private final Collection<InventoryView> views = Lists.newArrayList();

public InventoryMenu(InventoryMenuInfo info) {
int[] dim = info.menuAnnotation.dimensions();
Expand Down Expand Up @@ -56,10 +65,33 @@ public InventoryMenu(InventoryMenuInfo info) {
}
}

@EventHandler(ignoreCancelled = true)
public void onInventoryClick(InventoryClickEvent event) {
if (!event.getInventory().equals(currentContext.getInventory()))
return;
InventoryMenuSlot slot = currentContext.getSlot(event.getSlot());
page.onClick(slot, event);
slot.onClick(event);
// TODO: check for transitions
}

@EventHandler(ignoreCancelled = true)
public void onInventoryClose(InventoryCloseEvent event) {
if (!event.getInventory().equals(currentContext.getInventory()))
return;
page.onClose(event.getPlayer());
// TODO: transition upwards if required
}

private int posToIndex(int[] dim, int[] pos) {
return pos[0] * dim[1] + pos[1];
}

public void present(Player player) {
InventoryView view = player.openInventory(currentContext.getInventory());
views.add(view);
}

private static class Bindable<T> {
MethodHandle bind;
T data;
Expand Down
7 changes: 7 additions & 0 deletions src/main/java/net/citizensnpcs/api/gui/InventoryMenuPage.java
@@ -1,5 +1,12 @@
package net.citizensnpcs.api.gui;

import org.bukkit.entity.HumanEntity;
import org.bukkit.event.inventory.InventoryClickEvent;

public abstract class InventoryMenuPage {
public abstract void create(MenuContext ctx);

public abstract void onClick(InventoryMenuSlot slot, InventoryClickEvent event);

public abstract void onClose(HumanEntity player);
}
5 changes: 5 additions & 0 deletions src/main/java/net/citizensnpcs/api/gui/InventoryMenuSlot.java
Expand Up @@ -6,6 +6,7 @@
import java.util.Set;

import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;

Expand Down Expand Up @@ -56,6 +57,10 @@ public void initialise(MenuSlot data) {
setClickFilter(Arrays.asList(data.filter()));
}

public void onClick(InventoryClickEvent event) {
// TODO
}

public void setClickFilter(Collection<ClickType> filter) {
this.clickFilter = EnumSet.copyOf(filter);
}
Expand Down

0 comments on commit e415663

Please sign in to comment.