pull/6/head
parent
fe80aa80df
commit
b6fd6812e9
5 changed files with 114 additions and 6 deletions
@ -1,4 +1,104 @@ |
|||||||
package xyz.soukup.ecoCraftCore.events; |
package xyz.soukup.ecoCraftCore.events; |
||||||
|
|
||||||
public class VirtualChestLogic { |
import com.destroystokyo.paper.utils.PaperPluginLogger; |
||||||
|
import com.j256.ormlite.stmt.query.In; |
||||||
|
import org.bukkit.block.Chest; |
||||||
|
import org.bukkit.block.DoubleChest; |
||||||
|
import org.bukkit.block.TileState; |
||||||
|
import org.bukkit.entity.Player; |
||||||
|
import org.bukkit.event.EventHandler; |
||||||
|
import org.bukkit.event.Listener; |
||||||
|
import org.bukkit.event.inventory.InventoryCloseEvent; |
||||||
|
import org.bukkit.event.inventory.InventoryOpenEvent; |
||||||
|
import org.bukkit.inventory.Inventory; |
||||||
|
import org.bukkit.inventory.InventoryHolder; |
||||||
|
import xyz.soukup.ecoCraftCore.objects.VirtualChest; |
||||||
|
import xyz.soukup.ecoCraftCore.utilities.PDC; |
||||||
|
|
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Objects; |
||||||
|
|
||||||
|
public class VirtualChestLogic implements Listener { |
||||||
|
|
||||||
|
public static HashMap<Integer, Integer> openedChests = new HashMap<>(); |
||||||
|
|
||||||
|
@EventHandler |
||||||
|
public void chestOpen(InventoryOpenEvent event){ |
||||||
|
InventoryHolder inventoryHolder = event.getInventory().getHolder(); |
||||||
|
Player player = (Player) event.getPlayer(); |
||||||
|
|
||||||
|
|
||||||
|
Integer id; |
||||||
|
|
||||||
|
if (inventoryHolder instanceof Chest chest){ |
||||||
|
id = PDC.getInteger(chest, "virtual"); |
||||||
|
} else if (inventoryHolder instanceof DoubleChest doubleChest) { |
||||||
|
id = PDC.getInteger((TileState) doubleChest.getRightSide(), "virtual"); |
||||||
|
}else { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
if (id == null){ |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
if (openedChests.containsKey(id)){ |
||||||
|
Integer count = openedChests.get(id); |
||||||
|
count++; |
||||||
|
openedChests.put(id, count); |
||||||
|
player.sendPlainMessage(Integer.toString(count)); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
player.sendPlainMessage(Integer.toString(id)); |
||||||
|
|
||||||
|
|
||||||
|
VirtualChest virtualChest = VirtualChest.findById(id); |
||||||
|
|
||||||
|
if (virtualChest == null){ |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
openedChests.put(id, 1); |
||||||
|
event.getInventory().setContents(virtualChest.getInventory().getContents()); |
||||||
|
} |
||||||
|
|
||||||
|
@EventHandler |
||||||
|
public void chestClose(InventoryCloseEvent event){ |
||||||
|
InventoryHolder inventoryHolder = event.getInventory().getHolder(); |
||||||
|
Player player = (Player) event.getPlayer(); |
||||||
|
|
||||||
|
|
||||||
|
Integer id; |
||||||
|
|
||||||
|
if (inventoryHolder instanceof Chest chest){ |
||||||
|
id = PDC.getInteger(chest, "virtual"); |
||||||
|
} else if (inventoryHolder instanceof DoubleChest doubleChest) { |
||||||
|
id = PDC.getInteger((TileState) doubleChest.getRightSide(), "virtual"); |
||||||
|
}else { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
if (id == null){ |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
Integer count = openedChests.get(id); |
||||||
|
|
||||||
|
if (count == null){ |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
if (count > 1){ |
||||||
|
openedChests.put(id, count-1); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
openedChests.remove(id); |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
} |
} |
||||||
Loading…
Reference in new issue