diff --git a/README.md b/README.md
index 063cd41..5705c9e 100644
--- a/README.md
+++ b/README.md
@@ -11,20 +11,23 @@ your custom virtual inventories with ease.
FakeInventory inventory = new FakeInventory(InventoryType.CHEST, "Custom inventory");
inventory.setDefaultItemHandler((item, event) -> {
- event.setCancelled(true);
+ event.setCancelled();
Player target = event.getTransaction().getSource();
- target.sendMessage("is default item handler");
+ target.sendMessage("This is default item handler");
});
inventory.setItem(5, Item.get(Item.DIAMOND), (item, event) -> {
- event.setCancelled(true);
+ event.setCancelled();
Player target = event.getTransaction().getSource();
- target.sendMessage("is custom item handler");
+ target.sendMessage("This is custom item handler");
target.removeWindow(inventory);
});
+inventory.setOpenHandler(player -> player.sendMessage("You opened inventory"));
+inventory.setCloseHandler(player -> player.sendMessage("You closed inventory"));
+
player.addWindow(inventory);
```
@@ -45,7 +48,7 @@ Adding dependency:
com.luminiadev.fakeinventories
fakeinventories
- 1.2.0
+ 1.2.1
```
@@ -60,5 +63,5 @@ maven {
Adding dependency:
```kts
-compileOnly("com.luminiadev.fakeinventories:fakeinventories:1.2.0")
+compileOnly("com.luminiadev.fakeinventories:fakeinventories:1.2.1")
```
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index d8b2963..27c4936 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -4,7 +4,7 @@ plugins {
}
group = "com.luminiadev.fakeinventories"
-version = "1.2.0"
+version = "1.2.1"
java {
toolchain {
diff --git a/src/main/java/me/iwareq/fakeinventories/FakeInventory.java b/src/main/java/me/iwareq/fakeinventories/FakeInventory.java
index e72062a..22870fc 100644
--- a/src/main/java/me/iwareq/fakeinventories/FakeInventory.java
+++ b/src/main/java/me/iwareq/fakeinventories/FakeInventory.java
@@ -13,19 +13,23 @@
import lombok.Setter;
import me.iwareq.fakeinventories.block.FakeBlock;
import me.iwareq.fakeinventories.util.ItemHandler;
+import me.iwareq.fakeinventories.util.SimplePlayerHandler;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
+import java.util.Optional;
+@Setter
public class FakeInventory extends BaseInventory {
@Getter
@Setter
private String title;
- @Setter
private ItemHandler defaultItemHandler;
+ private SimplePlayerHandler openHandler;
+ private SimplePlayerHandler closeHandler;
+
private final Map handlers = new HashMap<>();
private final FakeBlock fakeBlock;
@@ -49,21 +53,24 @@ public void onOpen(Player player) {
packet.windowId = player.getWindowId(this);
packet.type = this.getType().getNetworkType();
- List positions = this.fakeBlock.getPlacePositions(player);
- if (positions.isEmpty()) {
- return;
+ Optional first = this.fakeBlock.getLastPositions(player).stream().findFirst();
+ if (first.isPresent()) {
+ Vector3 position = first.get();
+ packet.x = position.getFloorX();
+ packet.y = position.getFloorY();
+ packet.z = position.getFloorZ();
+ player.dataPacket(packet);
+
+ super.onOpen(player);
+ this.sendContents(player);
+ } else {
+ this.fakeBlock.remove(player);
}
-
- Vector3 position = positions.get(0);
- packet.x = position.getFloorX();
- packet.y = position.getFloorY();
- packet.z = position.getFloorZ();
- player.dataPacket(packet);
-
- super.onOpen(player);
-
- this.sendContents(player);
}, 2);
+
+ if (this.openHandler != null) {
+ this.openHandler.handle(player);
+ }
}
@Override
@@ -75,6 +82,10 @@ public void onClose(Player player) {
super.onClose(player);
this.fakeBlock.remove(player);
+
+ if (this.closeHandler != null) {
+ this.closeHandler.handle(player);
+ }
}
public void setItem(int index, Item item, ItemHandler handler) {
@@ -83,6 +94,10 @@ public void setItem(int index, Item item, ItemHandler handler) {
}
}
+ public void setItemHandler(int index, ItemHandler handler) {
+ this.handlers.put(index, handler);
+ }
+
public void handle(int index, Item item, InventoryTransactionEvent event) {
ItemHandler handler = this.handlers.getOrDefault(index, this.defaultItemHandler);
if (handler == null) {
diff --git a/src/main/java/me/iwareq/fakeinventories/util/SimplePlayerHandler.java b/src/main/java/me/iwareq/fakeinventories/util/SimplePlayerHandler.java
new file mode 100644
index 0000000..4fd0c90
--- /dev/null
+++ b/src/main/java/me/iwareq/fakeinventories/util/SimplePlayerHandler.java
@@ -0,0 +1,8 @@
+package me.iwareq.fakeinventories.util;
+
+import cn.nukkit.Player;
+
+@FunctionalInterface
+public interface SimplePlayerHandler {
+ void handle(Player player);
+}