pull/6/head
jakub 10 months ago
parent fe80aa80df
commit b6fd6812e9
  1. 5
      src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java
  2. 2
      src/main/java/xyz/soukup/ecoCraftCore/commands/ShopCommand.java
  3. 102
      src/main/java/xyz/soukup/ecoCraftCore/events/VirtualChestLogic.java
  4. 2
      src/main/java/xyz/soukup/ecoCraftCore/objects/VirtualChest.java
  5. 7
      src/main/java/xyz/soukup/ecoCraftCore/utilities/Converter.java

@ -8,12 +8,12 @@ import io.papermc.paper.plugin.lifecycle.event.LifecycleEventManager;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.eclipse.sisu.bean.LifecycleManager;
import org.jetbrains.annotations.NotNull;
import xyz.soukup.ecoCraftCore.commands.RulerCommand;
import xyz.soukup.ecoCraftCore.commands.ShopCommand;
import xyz.soukup.ecoCraftCore.commands.TransactionCommand;
import xyz.soukup.ecoCraftCore.events.RulerMarking;
import xyz.soukup.ecoCraftCore.events.VirtualChestLogic;
import xyz.soukup.ecoCraftCore.objects.Shop;
import xyz.soukup.ecoCraftCore.objects.Transaction;
import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents;
@ -35,7 +35,7 @@ public final class EcoCraftCore extends JavaPlugin {
try {
prepareDatabase();
registerCommands();
this.getServer().getPluginManager().registerEvents(new RulerMarking(), this);
registerEvents();
} catch (SQLException e) {
e.printStackTrace();
getLogger().severe("Failed to initialize database.");
@ -81,5 +81,6 @@ public final class EcoCraftCore extends JavaPlugin {
PluginManager pm = this.getServer().getPluginManager();
pm.registerEvents(new RulerMarking(), this);
pm.registerEvents(new VirtualChestLogic(), this);
}
}

@ -83,6 +83,8 @@ public class ShopCommand {
VirtualChest virtualChest = VirtualChest.getOrCreate(chest);
virtualChest.save();
PDC.set(chest, "virtual", virtualChest.getId());
int freeSpace = InventoryUtils.getSpaceLeft(chest.getInventory(), item);

@ -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);
}
}

@ -36,7 +36,7 @@ public class VirtualChest {
public VirtualChest(Chest chest){
Inventory inventory = chest.getSnapshotInventory();
Inventory inventory = chest.getInventory();
this.inventoryString = Converter.toString(inventory);
}

@ -5,6 +5,9 @@ import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.configuration.file.YamlConfiguration;
import java.util.List;
import java.util.logging.Logger;
public class Converter {
@ -53,7 +56,9 @@ public class Converter {
int size = config.getInt("size");
Inventory inv = Bukkit.createInventory(null, size);
ItemStack[] items = ((ItemStack[]) config.get("items"));
List<ItemStack> itemList = (List<ItemStack>) config.getList("items");
ItemStack[] items = itemList != null ? itemList.toArray(new ItemStack[0]) : new ItemStack[0];
if (items != null) {
inv.setContents(items);
}

Loading…
Cancel
Save