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; |
||||
|
||||
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