Graph system fully implemented. Pending testing of all types of
inventories.
This commit is contained in:
parent
87dbf99a31
commit
a8aa59ed25
Binary file not shown.
@ -7,6 +7,7 @@ import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
@ -284,8 +285,14 @@ public class InventoryUtils {
|
||||
}
|
||||
|
||||
public static int getInventoryNumberHash(Inventory destination) {
|
||||
String hash = "-"+(Math.signum(destination.getLocation().getBlockX()+destination.getLocation().getBlockZ())>0?1:0)+Integer.toString(Math.abs(destination.getLocation().getBlockX())%1000)+Integer.toString(Math.abs(destination.getLocation().getBlockY())%1000)+Integer.toString(Math.abs(destination.getLocation().getBlockZ())%1000);
|
||||
return Integer.parseInt(hash);
|
||||
Location loc = destination.getLocation();
|
||||
int id=-99;
|
||||
if (loc!=null) {
|
||||
String hash = "-"+(Math.signum(destination.getLocation().getBlockX()+destination.getLocation().getBlockZ())>0?1:0)+Integer.toString(Math.abs(destination.getLocation().getBlockX())%1000)+Integer.toString(Math.abs(destination.getLocation().getBlockY())%1000)+Integer.toString(Math.abs(destination.getLocation().getBlockZ())%1000);
|
||||
id = Integer.parseInt(hash);
|
||||
TwosideKeeper.itemCubeGraph.addVertex(id);
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
public static ItemStack[] RemoveAllNullItems(ItemStack[] contents) {
|
||||
|
@ -439,6 +439,32 @@ public class ItemCubeUtils {
|
||||
TwosideKeeper.log(" "+edge.toString(), 0);
|
||||
}
|
||||
}
|
||||
|
||||
public static void setupGraphForChest(Inventory inventory) {
|
||||
if (inventory!=null && inventory.getHolder() instanceof Player &&
|
||||
(PlayerStructure.GetPlayerStructure(((Player)inventory.getHolder())).isViewingItemCube ||
|
||||
PlayerStructure.GetPlayerStructure(((Player)inventory.getHolder())).opened_another_cube)&&
|
||||
inventory.getTitle()!=null && inventory.getTitle().contains("Item Cube #")) {
|
||||
return; //This is an item cube, don't setup a graph for it.
|
||||
}
|
||||
UndirectedGraph<Integer,DefaultEdge> graph = TwosideKeeper.itemCubeGraph;
|
||||
|
||||
graph.addVertex(InventoryUtils.getInventoryNumberHash(inventory)); //Root Vertex.
|
||||
|
||||
for (ItemStack it : inventory.getContents()) {
|
||||
if (ItemUtils.isValidItem(it) && isItemCube(it)) {
|
||||
int id = getItemCubeID(it);
|
||||
graph.addVertex(id);
|
||||
graph.addEdge(InventoryUtils.getInventoryNumberHash(inventory), id);
|
||||
IterateAndAddToGraph(id,graph);
|
||||
}
|
||||
}
|
||||
|
||||
for (DefaultEdge edge : graph.edgeSet()) {
|
||||
TwosideKeeper.log(" "+edge.toString(), 0);
|
||||
}
|
||||
}
|
||||
|
||||
public static void IterateAndAddToGraph(int id, UndirectedGraph<Integer, DefaultEdge> graph) {
|
||||
List<ItemStack> contents = getItemCubeContents(id);
|
||||
for (ItemStack it : contents) {
|
||||
@ -582,10 +608,4 @@ public class ItemCubeUtils {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
/*public static void setupGraphForChest(Inventory inv) {
|
||||
if (inv.getType()==InventoryType.CHEST ||
|
||||
inv.getType()==InventoryType.) {
|
||||
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
@ -4882,17 +4882,53 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
}
|
||||
|
||||
if (ItemCubeUtils.isItemCube(ev.getItemDrop().getItemStack())) {
|
||||
ItemCubeUtils.removeAndUpdateAllEdgesDroppedItem(ItemCubeUtils.getItemCubeID(ev.getItemDrop().getItemStack()),ev.getPlayer());
|
||||
|
||||
//ItemCubeUtils.removeAndUpdateAllEdgesDroppedItem(ItemCubeUtils.getItemCubeID(ev.getItemDrop().getItemStack()),ev.getPlayer());
|
||||
//ItemCubeUtils.DestroyAllTargetEdges(ItemCubeUtils.getItemCubeID(ev.getItemDrop().getItemStack()), TwosideKeeper.itemCubeGraph);
|
||||
int cubeid = ItemCubeUtils.getItemCubeID(ev.getItemDrop().getItemStack());
|
||||
if (ev.getPlayer().getOpenInventory()!=null &&
|
||||
ev.getPlayer().getOpenInventory().getTitle()!=null &&
|
||||
ev.getPlayer().getOpenInventory().getTitle().contains("Item Cube #") &&
|
||||
PlayerStructure.GetPlayerStructure(ev.getPlayer()).isViewingItemCube) {
|
||||
//We are viewing an item cube. Update it.
|
||||
int id = Integer.parseInt(ev.getPlayer().getOpenInventory().getTitle().split("#")[1]);
|
||||
ItemCubeUtils.removeAndUpdateAllEdges(id,ev.getPlayer());
|
||||
//ItemCubeUtils.removeAndUpdateAllEdges(id,ev.getPlayer());
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.removeEdge(id, cubeid);
|
||||
if (edge!=null) {
|
||||
TwosideKeeper.log("Removed edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
} else
|
||||
edge = TwosideKeeper.itemCubeGraph.removeEdge(PlayerStructure.getPlayerNegativeHash(ev.getPlayer()), cubeid);
|
||||
if (edge!=null) {
|
||||
TwosideKeeper.log("Removed edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
}
|
||||
} else {
|
||||
int id = InventoryUtils.getInventoryNumberHash(ev.getPlayer().getOpenInventory().getTopInventory());
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.removeEdge(id, cubeid);
|
||||
if (edge!=null) {
|
||||
TwosideKeeper.log("Removed edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
} else
|
||||
edge = TwosideKeeper.itemCubeGraph.removeEdge(PlayerStructure.getPlayerNegativeHash(ev.getPlayer()), cubeid);
|
||||
if (edge!=null) {
|
||||
TwosideKeeper.log("Removed edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
}
|
||||
}
|
||||
|
||||
/* else {
|
||||
ItemCubeUtils.removeAndUpdateAllEdges(InventoryUtils.getInventoryNumberHash(ev.getPlayer().getOpenInventory().getTopInventory()),ev.getPlayer());
|
||||
}*/
|
||||
}
|
||||
/*if (ItemCubeUtils.isItemCube(ev.getItemDrop().getItemStack())) {
|
||||
if (ev.getPlayer().getOpenInventory()!=null &&
|
||||
ev.getPlayer().getOpenInventory().getTitle()!=null &&
|
||||
ev.getPlayer().getOpenInventory().getTitle().contains("Item Cube #") &&
|
||||
PlayerStructure.GetPlayerStructure(ev.getPlayer()).isViewingItemCube) {
|
||||
int id = Integer.parseInt(ev.getPlayer().getOpenInventory().getTitle().split("#")[1]);
|
||||
int cubeid = ItemCubeUtils.getItemCubeID(ev.getItemDrop().getItemStack());
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.removeEdge(id, cubeid);
|
||||
TwosideKeeper.log("Removed edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
} else {
|
||||
|
||||
}
|
||||
}*/
|
||||
|
||||
return;
|
||||
}
|
||||
@ -4904,7 +4940,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
//GenericFunctions.updateSetItemsInInventory(ev.getInventory());
|
||||
GenericFunctions.updateSetItemsInInventory(ev.getView().getBottomInventory());
|
||||
GenericFunctions.updateSetItemsInInventory(ev.getView().getTopInventory());
|
||||
//ItemCubeUtils.setupGraphForChest(ev.getInventory());
|
||||
ItemCubeUtils.setupGraphForChest(ev.getInventory());
|
||||
}
|
||||
|
||||
@EventHandler(priority=EventPriority.LOW,ignoreCancelled = true)
|
||||
@ -5618,6 +5654,11 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
if (result.size()>0) {
|
||||
ev.setCursor((ItemStack)result.get(0));
|
||||
} else {
|
||||
if (ItemCubeUtils.isItemCube(ev.getCursor())) {
|
||||
int id = ItemCubeUtils.getItemCubeID(ev.getCursor());
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.addEdge(idnumb, id);
|
||||
TwosideKeeper.log("Added edge "+edge, 0);
|
||||
}
|
||||
ev.setCursor(new ItemStack(Material.AIR));
|
||||
log("Cursor should be air.",5);
|
||||
}
|
||||
@ -5654,6 +5695,11 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
if (result.size()>0) {
|
||||
ev.setCursor((ItemStack)result.get(0));
|
||||
} else {
|
||||
if (ItemCubeUtils.isItemCube(ev.getCursor())) {
|
||||
int id = ItemCubeUtils.getItemCubeID(ev.getCursor());
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.addEdge(idnumb, id);
|
||||
TwosideKeeper.log("Added edge "+edge, 0);
|
||||
}
|
||||
ev.setCursor(new ItemStack(Material.AIR));
|
||||
}
|
||||
List<ItemStack> itemslist = new ArrayList<ItemStack>();
|
||||
@ -5768,57 +5814,80 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
if (ev.getClickedInventory()!=null) {
|
||||
if (ev.getClickedInventory()!=null &&
|
||||
ev.getInventory().getType()!=InventoryType.CRAFTING) {
|
||||
Player p = (Player)ev.getWhoClicked();
|
||||
if (ev.getAction()==InventoryAction.HOTBAR_SWAP || ev.getAction()==InventoryAction.HOTBAR_MOVE_AND_READD) {
|
||||
if ((ev.getAction()==InventoryAction.HOTBAR_SWAP || ev.getAction()==InventoryAction.HOTBAR_MOVE_AND_READD)) {
|
||||
Inventory clickedinv = p.getOpenInventory().getTopInventory();
|
||||
ItemStack item1 = p.getInventory().getItem(ev.getHotbarButton()); //Bottom to Top
|
||||
ItemStack item2 = p.getOpenInventory().getItem(ev.getRawSlot()); //Top to Bottom
|
||||
if (clickedinv!=null && clickedinv.getTitle()!=null && clickedinv.getTitle().contains("Item Cube #") &&
|
||||
ev.getRawSlot()<p.getOpenInventory().getTopInventory().getSize()) {
|
||||
int id = Integer.parseInt(clickedinv.getTitle().split("#")[1]);
|
||||
if (ItemCubeUtils.isItemCube(item1)) {
|
||||
int cubeid = ItemCubeUtils.getItemCubeID(item1);
|
||||
if (id!=cubeid) {
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.addEdge(id, cubeid);
|
||||
if (edge!=null) {
|
||||
TwosideKeeper.log("Added edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
edge = TwosideKeeper.itemCubeGraph.removeEdge(PlayerStructure.getPlayerNegativeHash(p), cubeid);
|
||||
TwosideKeeper.log("Removed edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
if (!ItemCubeUtils.isConnectedToRootNode(TwosideKeeper.itemCubeGraph, id)) {
|
||||
edge = TwosideKeeper.itemCubeGraph.addEdge(PlayerStructure.getPlayerNegativeHash(p), cubeid);
|
||||
if (clickedinv!=null && ev.getRawSlot()<clickedinv.getSize()) {
|
||||
ItemStack item1 = p.getInventory().getItem(ev.getHotbarButton()); //Bottom to Top
|
||||
ItemStack item2 = p.getOpenInventory().getItem(ev.getRawSlot()); //Top to Bottom
|
||||
if (clickedinv.getTitle()!=null && clickedinv.getTitle().contains("Item Cube #") &&
|
||||
ev.getRawSlot()<p.getOpenInventory().getTopInventory().getSize()) {
|
||||
int id = Integer.parseInt(clickedinv.getTitle().split("#")[1]);
|
||||
if (ItemCubeUtils.isItemCube(item1)) {
|
||||
int cubeid = ItemCubeUtils.getItemCubeID(item1);
|
||||
if (id!=cubeid) {
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.addEdge(id, cubeid);
|
||||
if (edge!=null) {
|
||||
TwosideKeeper.log("Added edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
edge = TwosideKeeper.itemCubeGraph.removeEdge(id, cubeid);
|
||||
TwosideKeeper.log("Removed edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
ev.setCancelled(true);
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
ev.setCancelled(true);
|
||||
edge = TwosideKeeper.itemCubeGraph.removeEdge(PlayerStructure.getPlayerNegativeHash(p), cubeid);
|
||||
TwosideKeeper.log("Removed edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
if (!ItemCubeUtils.isConnectedToRootNode(TwosideKeeper.itemCubeGraph, id)) {
|
||||
edge = TwosideKeeper.itemCubeGraph.addEdge(PlayerStructure.getPlayerNegativeHash(p), cubeid);
|
||||
TwosideKeeper.log("Added edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
edge = TwosideKeeper.itemCubeGraph.removeEdge(id, cubeid);
|
||||
TwosideKeeper.log("Removed edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
ev.setCancelled(true);
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
ev.setCancelled(true);
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
ev.setCancelled(true);
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
return;
|
||||
} else {
|
||||
ev.setCancelled(true);
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (ItemCubeUtils.isItemCube(item2)) {
|
||||
int cubeid = ItemCubeUtils.getItemCubeID(item2);
|
||||
try {
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.addEdge(PlayerStructure.getPlayerNegativeHash(p), cubeid);
|
||||
TwosideKeeper.log("Added edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
edge = TwosideKeeper.itemCubeGraph.removeEdge(id, cubeid);
|
||||
TwosideKeeper.log("Removed edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
} catch (IllegalArgumentException ex) {
|
||||
ev.setCancelled(true);
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ItemCubeUtils.isItemCube(item2)) {
|
||||
int cubeid = ItemCubeUtils.getItemCubeID(item2);
|
||||
try {
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.addEdge(PlayerStructure.getPlayerNegativeHash(p), cubeid);
|
||||
TwosideKeeper.log("Added edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
edge = TwosideKeeper.itemCubeGraph.removeEdge(id, cubeid);
|
||||
TwosideKeeper.log("Removed edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
} catch (IllegalArgumentException ex) {
|
||||
ev.setCancelled(true);
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (ItemCubeUtils.isItemCube(item1)) {
|
||||
int cubeid = ItemCubeUtils.getItemCubeID(item1);
|
||||
int invid = InventoryUtils.getInventoryNumberHash(clickedinv);
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.removeEdge(PlayerStructure.getPlayerNegativeHash(p), cubeid);
|
||||
TwosideKeeper.log("Removed edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
edge = TwosideKeeper.itemCubeGraph.addEdge(invid, cubeid);
|
||||
TwosideKeeper.log("Added edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
TwosideKeeper.log("Vertices in "+clickedinv.getType()+" (ID:"+invid+"):", TwosideKeeper.GRAPH_DEBUG);
|
||||
for (DefaultEdge e : TwosideKeeper.itemCubeGraph.edgesOf(invid)) {
|
||||
TwosideKeeper.log(" "+e, 0);
|
||||
}
|
||||
}
|
||||
if (ItemCubeUtils.isItemCube(item2)) {
|
||||
int cubeid = ItemCubeUtils.getItemCubeID(item2);
|
||||
int invid = InventoryUtils.getInventoryNumberHash(clickedinv);
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.removeEdge(invid, cubeid);
|
||||
TwosideKeeper.log("Removed edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
edge = TwosideKeeper.itemCubeGraph.addEdge(PlayerStructure.getPlayerNegativeHash(p), cubeid);
|
||||
TwosideKeeper.log("Added edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -5826,40 +5895,49 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
if (ev.getClickedInventory().getType()==InventoryType.PLAYER) {
|
||||
//Check the top slot to see if it's an item cube inventory.
|
||||
Inventory clickedinv = p.getOpenInventory().getTopInventory();
|
||||
if (pd.isViewingItemCube && clickedinv.getTitle()!=null &&
|
||||
clickedinv.getTitle().contains("Item Cube #")) {
|
||||
if (!InventoryUtils.hasFullInventory(clickedinv)) {
|
||||
int id = Integer.parseInt(clickedinv.getTitle().split("#")[1]);
|
||||
int clickedid = ItemCubeUtils.getItemCubeID(ev.getCurrentItem());
|
||||
TwosideKeeper.log("ID is "+id+":"+clickedid, 0);
|
||||
if (id!=clickedid) {
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.addEdge(id, clickedid);
|
||||
if (edge!=null) {
|
||||
TwosideKeeper.log("Added edge "+TwosideKeeper.itemCubeGraph.getEdgeSource(edge)+","+TwosideKeeper.itemCubeGraph.getEdgeTarget(edge), TwosideKeeper.GRAPH_DEBUG);
|
||||
edge = TwosideKeeper.itemCubeGraph.removeEdge(PlayerStructure.getPlayerNegativeHash(p), clickedid);
|
||||
TwosideKeeper.log("Removed edge "+TwosideKeeper.itemCubeGraph.getEdgeSource(edge)+","+TwosideKeeper.itemCubeGraph.getEdgeTarget(edge), TwosideKeeper.GRAPH_DEBUG);
|
||||
if (!ItemCubeUtils.isConnectedToRootNode(TwosideKeeper.itemCubeGraph, id)) {
|
||||
edge = TwosideKeeper.itemCubeGraph.addEdge(PlayerStructure.getPlayerNegativeHash(p), clickedid);
|
||||
TwosideKeeper.log("Added edge "+TwosideKeeper.itemCubeGraph.getEdgeSource(edge)+","+TwosideKeeper.itemCubeGraph.getEdgeTarget(edge), TwosideKeeper.GRAPH_DEBUG);
|
||||
edge = TwosideKeeper.itemCubeGraph.removeEdge(id, clickedid);
|
||||
int clickedid = ItemCubeUtils.getItemCubeID(ev.getCurrentItem());
|
||||
if (!InventoryUtils.hasFullInventory(clickedinv)) {
|
||||
if (pd.isViewingItemCube && clickedinv.getTitle()!=null &&
|
||||
clickedinv.getTitle().contains("Item Cube #")) {
|
||||
int id = Integer.parseInt(clickedinv.getTitle().split("#")[1]);
|
||||
TwosideKeeper.log("ID is "+id+":"+clickedid, 0);
|
||||
if (id!=clickedid) {
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.addEdge(id, clickedid);
|
||||
if (edge!=null) {
|
||||
TwosideKeeper.log("Added edge "+TwosideKeeper.itemCubeGraph.getEdgeSource(edge)+","+TwosideKeeper.itemCubeGraph.getEdgeTarget(edge), TwosideKeeper.GRAPH_DEBUG);
|
||||
edge = TwosideKeeper.itemCubeGraph.removeEdge(PlayerStructure.getPlayerNegativeHash(p), clickedid);
|
||||
TwosideKeeper.log("Removed edge "+TwosideKeeper.itemCubeGraph.getEdgeSource(edge)+","+TwosideKeeper.itemCubeGraph.getEdgeTarget(edge), TwosideKeeper.GRAPH_DEBUG);
|
||||
ev.setCancelled(true);
|
||||
if (!ItemCubeUtils.isConnectedToRootNode(TwosideKeeper.itemCubeGraph, id)) {
|
||||
edge = TwosideKeeper.itemCubeGraph.addEdge(PlayerStructure.getPlayerNegativeHash(p), clickedid);
|
||||
TwosideKeeper.log("Added edge "+TwosideKeeper.itemCubeGraph.getEdgeSource(edge)+","+TwosideKeeper.itemCubeGraph.getEdgeTarget(edge), TwosideKeeper.GRAPH_DEBUG);
|
||||
edge = TwosideKeeper.itemCubeGraph.removeEdge(id, clickedid);
|
||||
TwosideKeeper.log("Removed edge "+TwosideKeeper.itemCubeGraph.getEdgeSource(edge)+","+TwosideKeeper.itemCubeGraph.getEdgeTarget(edge), TwosideKeeper.GRAPH_DEBUG);
|
||||
ev.setCancelled(true);
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
ev.setCancelled(true);
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
ev.setCancelled(true);
|
||||
}
|
||||
return;
|
||||
} else {
|
||||
ev.setCancelled(true);
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
return;
|
||||
} else {
|
||||
ev.setCancelled(true);
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else { //This is not an item cube.
|
||||
int invid = InventoryUtils.getInventoryNumberHash(clickedinv);
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.removeEdge(PlayerStructure.getPlayerNegativeHash(p), clickedid);
|
||||
TwosideKeeper.log("Removed edge "+TwosideKeeper.itemCubeGraph.getEdgeSource(edge)+","+TwosideKeeper.itemCubeGraph.getEdgeTarget(edge), TwosideKeeper.GRAPH_DEBUG);
|
||||
edge = TwosideKeeper.itemCubeGraph.addEdge(invid, clickedid);
|
||||
TwosideKeeper.log("Added edge "+TwosideKeeper.itemCubeGraph.getEdgeSource(edge)+","+TwosideKeeper.itemCubeGraph.getEdgeTarget(edge), TwosideKeeper.GRAPH_DEBUG);
|
||||
}
|
||||
return;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
} else
|
||||
{
|
||||
if (!InventoryUtils.hasFullInventory(p)) {
|
||||
@ -5873,12 +5951,20 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
int id = Integer.parseInt(clickedinv.getTitle().split("#")[1]);
|
||||
edge = TwosideKeeper.itemCubeGraph.removeEdge(id, clickedid);
|
||||
TwosideKeeper.log("Removed edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
} else {
|
||||
//This is not an item cube.
|
||||
int invid = InventoryUtils.getInventoryNumberHash(clickedinv);
|
||||
edge = TwosideKeeper.itemCubeGraph.removeEdge(invid, clickedid);
|
||||
TwosideKeeper.log("Removed edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
}
|
||||
} catch (IllegalArgumentException ex) {
|
||||
ev.setCancelled(true);
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
return;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -5915,6 +6001,16 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
int clickedid = ItemCubeUtils.getItemCubeID(ev.getCursor());
|
||||
try {
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.addEdge(InventoryUtils.getInventoryNumberHash(clickedinv), clickedid);
|
||||
TwosideKeeper.log("Added edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
} catch (IllegalArgumentException ex) {
|
||||
ev.setCancelled(true);
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -5934,6 +6030,10 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
int clickedid = ItemCubeUtils.getItemCubeID(ev.getCurrentItem());
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.removeEdge(PlayerStructure.getPlayerNegativeHash(p), clickedid);
|
||||
TwosideKeeper.log("Destroyed edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
} else {
|
||||
int clickedid = ItemCubeUtils.getItemCubeID(ev.getCurrentItem());
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.removeEdge(InventoryUtils.getInventoryNumberHash(clickedinv), clickedid);
|
||||
TwosideKeeper.log("Destroyed edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -5941,49 +6041,61 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
|
||||
@EventHandler(priority=EventPriority.LOW,ignoreCancelled = true)
|
||||
public void onInventoryDrag(InventoryDragEvent ev) {
|
||||
for (Integer i : ev.getNewItems().keySet()) {
|
||||
ItemStack item = ev.getNewItems().get(i);
|
||||
if (ItemCubeUtils.isItemCube(item)) {
|
||||
Player p = (Player)ev.getWhoClicked();
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
Inventory clickedinv = ev.getInventory();
|
||||
Integer clickedslot = ev.getRawSlots().iterator().next();
|
||||
TwosideKeeper.log("Size is "+clickedinv.getSize(), 0);
|
||||
if (pd.isViewingItemCube && clickedinv.getTitle()!=null &&
|
||||
clickedinv.getTitle().contains("Item Cube #") &&
|
||||
clickedslot<clickedinv.getSize()) {
|
||||
int id = Integer.parseInt(clickedinv.getTitle().split("#")[1]);
|
||||
int clickedid = ItemCubeUtils.getItemCubeID(item);
|
||||
if (!ItemCubeUtils.isConnectedToRootNode(TwosideKeeper.itemCubeGraph, id)) {
|
||||
ev.setCancelled(true);
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
try {
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.addEdge(id, clickedid);
|
||||
TwosideKeeper.log("Added edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
} catch (IllegalArgumentException ex) {
|
||||
ev.setCancelled(true);
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
return;
|
||||
} else
|
||||
{
|
||||
TwosideKeeper.log("Clicked "+clickedslot, 0);
|
||||
if (clickedslot>=clickedinv.getSize()) {
|
||||
if (ev.getInventory()!=null && ev.getInventory().getType()!=InventoryType.CRAFTING) {
|
||||
for (Integer i : ev.getNewItems().keySet()) {
|
||||
ItemStack item = ev.getNewItems().get(i);
|
||||
if (ItemCubeUtils.isItemCube(item)) {
|
||||
Player p = (Player)ev.getWhoClicked();
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
Inventory clickedinv = ev.getInventory();
|
||||
Integer clickedslot = ev.getRawSlots().iterator().next();
|
||||
TwosideKeeper.log("Size is "+clickedinv.getSize(), 0);
|
||||
if (pd.isViewingItemCube && clickedinv.getTitle()!=null &&
|
||||
clickedinv.getTitle().contains("Item Cube #") &&
|
||||
clickedslot<clickedinv.getSize()) {
|
||||
int id = Integer.parseInt(clickedinv.getTitle().split("#")[1]);
|
||||
int clickedid = ItemCubeUtils.getItemCubeID(item);
|
||||
if (!ItemCubeUtils.isConnectedToRootNode(TwosideKeeper.itemCubeGraph, id)) {
|
||||
ev.setCancelled(true);
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
try {
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.addEdge(PlayerStructure.getPlayerNegativeHash(p), clickedid);
|
||||
TwosideKeeper.log("Added edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.addEdge(id, clickedid);
|
||||
TwosideKeeper.log("Added edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
} catch (IllegalArgumentException ex) {
|
||||
ev.setCancelled(true);
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
return;
|
||||
} else
|
||||
{
|
||||
TwosideKeeper.log("Clicked "+clickedslot, 0);
|
||||
if (clickedslot>=clickedinv.getSize()) {
|
||||
int clickedid = ItemCubeUtils.getItemCubeID(item);
|
||||
try {
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.addEdge(PlayerStructure.getPlayerNegativeHash(p), clickedid);
|
||||
TwosideKeeper.log("Added edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
} catch (IllegalArgumentException ex) {
|
||||
ev.setCancelled(true);
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
int clickedid = ItemCubeUtils.getItemCubeID(item);
|
||||
try {
|
||||
DefaultEdge edge = TwosideKeeper.itemCubeGraph.addEdge(InventoryUtils.getInventoryNumberHash(clickedinv), clickedid);
|
||||
TwosideKeeper.log("Added edge "+edge, TwosideKeeper.GRAPH_DEBUG);
|
||||
} catch (IllegalArgumentException ex) {
|
||||
ev.setCancelled(true);
|
||||
ev.setCursor(ev.getCursor());
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user