ChestGui and Item utility improvements.
This commit is contained in:
parent
51eee0e247
commit
2941e9b9b8
@ -17,20 +17,52 @@ public class ChestGui
|
|||||||
// REGISTRY
|
// REGISTRY
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
private static final Map<Inventory, ChestGui> inventoryToGui = new MassiveMap<>();
|
protected static final Map<Inventory, ChestGui> inventoryToGui = new MassiveMap<>();
|
||||||
public static Map<Inventory, ChestGui> getInventoryToGui() { return inventoryToGui; }
|
public static Map<Inventory, ChestGui> getInventoryToGui() { return inventoryToGui; }
|
||||||
public static ChestGui remove(Inventory inventory) { return inventoryToGui.remove(inventory); }
|
|
||||||
public static ChestGui set(Inventory inventory, ChestGui gui) { return inventoryToGui.put(inventory, gui); }
|
|
||||||
public static ChestGui get(Inventory inventory) { return inventoryToGui.get(inventory); }
|
public static ChestGui get(Inventory inventory) { return inventoryToGui.get(inventory); }
|
||||||
public static ChestGui getCreative(Inventory inventory)
|
public static ChestGui getCreative(Inventory inventory)
|
||||||
{
|
{
|
||||||
|
if (inventory == null) throw new NullPointerException("inventory");
|
||||||
|
|
||||||
ChestGui gui = get(inventory);
|
ChestGui gui = get(inventory);
|
||||||
if (gui != null) return gui;
|
if (gui != null) return gui;
|
||||||
|
|
||||||
gui = new ChestGui();
|
gui = new ChestGui();
|
||||||
set(inventory, gui);
|
gui.setInventory(inventory);
|
||||||
|
gui.add();
|
||||||
|
|
||||||
return gui;
|
return gui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void add(Inventory inventory, ChestGui gui) { inventoryToGui.put(inventory, gui); }
|
||||||
|
private static void remove(Inventory inventory) { inventoryToGui.remove(inventory); }
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// ADD & REMOVE
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// Done through instance for override possibilities.
|
||||||
|
|
||||||
|
public void add()
|
||||||
|
{
|
||||||
|
add(this.getInventory(), this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void remove()
|
||||||
|
{
|
||||||
|
remove(this.getInventory());
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// INVENTORY
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// It is useful to provide a link back from the GUI to the inventory.
|
||||||
|
// This way we have can look up between Inventory and ChestGui both ways.
|
||||||
|
|
||||||
|
private Inventory inventory = null;
|
||||||
|
public Inventory getInventory() { return this.inventory; }
|
||||||
|
public void setInventory(Inventory inventory) { this.inventory = inventory; }
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// ACTIONS
|
// ACTIONS
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
@ -88,18 +120,18 @@ public class ChestGui
|
|||||||
// The sound you should hear when clicking an action slot.
|
// The sound you should hear when clicking an action slot.
|
||||||
private SoundEffect soundClick = MassiveCoreMConf.get().clickSound;
|
private SoundEffect soundClick = MassiveCoreMConf.get().clickSound;
|
||||||
public SoundEffect getSoundClick() { return this.soundClick; }
|
public SoundEffect getSoundClick() { return this.soundClick; }
|
||||||
public ChestGui setSoundClick(SoundEffect soundClick) { this.soundClick = soundClick; return this; }
|
public void setSoundClick(SoundEffect soundClick) { this.soundClick = soundClick; }
|
||||||
|
|
||||||
// The sound you should hear when opening the GUI.
|
// The sound you should hear when opening the GUI.
|
||||||
private SoundEffect soundOpen = SoundEffect.valueOf("CHEST_OPEN", 0.75f, 1.0f);
|
private SoundEffect soundOpen = SoundEffect.valueOf("CHEST_OPEN", 0.75f, 1.0f);
|
||||||
public SoundEffect getSoundOpen() { return this.soundOpen; }
|
public SoundEffect getSoundOpen() { return this.soundOpen; }
|
||||||
public ChestGui setSoundOpen(SoundEffect soundOpen) { this.soundOpen = soundOpen; return this; }
|
public void setSoundOpen(SoundEffect soundOpen) { this.soundOpen = soundOpen; }
|
||||||
|
|
||||||
// The sound you should hear when closing the GUI.
|
// The sound you should hear when closing the GUI.
|
||||||
// This sound will be skipped if another inventory was opened by the GUI action.
|
// This sound will be skipped if another inventory was opened by the GUI action.
|
||||||
private SoundEffect soundClose = SoundEffect.valueOf("CHEST_CLOSE", 0.75f, 1.0f);
|
private SoundEffect soundClose = SoundEffect.valueOf("CHEST_CLOSE", 0.75f, 1.0f);
|
||||||
public SoundEffect getSoundClose() { return this.soundClose; }
|
public SoundEffect getSoundClose() { return this.soundClose; }
|
||||||
public ChestGui setSoundClose(SoundEffect soundClose) { this.soundClose= soundClose; return this; }
|
public void setSoundClose(SoundEffect soundClose) { this.soundClose= soundClose; }
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// AUTOCLOSING
|
// AUTOCLOSING
|
||||||
@ -108,7 +140,16 @@ public class ChestGui
|
|||||||
|
|
||||||
private boolean autoclosing = true;
|
private boolean autoclosing = true;
|
||||||
public boolean isAutoclosing() { return this.autoclosing; }
|
public boolean isAutoclosing() { return this.autoclosing; }
|
||||||
public ChestGui setAutoclosing(boolean autoclosing) { this.autoclosing = autoclosing; return this; }
|
public void setAutoclosing(boolean autoclosing) { this.autoclosing = autoclosing; }
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// AUTOREMOVING
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// Should the GUI be automatically removed upon the inventory closing?
|
||||||
|
|
||||||
|
private boolean autoremoving = true;
|
||||||
|
public boolean isAutoremoving() { return this.autoremoving; }
|
||||||
|
public void setAutoremoving(boolean autoremoving) { this.autoremoving = autoremoving; }
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// CONSTRUCT
|
// CONSTRUCT
|
||||||
|
@ -139,16 +139,19 @@ public class EngineMassiveCoreChestGui extends Engine
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// We save the inventory in the map for a little while.
|
if (gui.isAutoremoving())
|
||||||
// A plugin may want to do something upon the chest gui closing.
|
|
||||||
Bukkit.getScheduler().runTaskLater(this.getPlugin(), new Runnable()
|
|
||||||
{
|
{
|
||||||
@Override
|
// We save the inventory in the map for a little while.
|
||||||
public void run()
|
// A plugin may want to do something upon the chest gui closing.
|
||||||
|
Bukkit.getScheduler().runTaskLater(this.getPlugin(), new Runnable()
|
||||||
{
|
{
|
||||||
ChestGui.remove(inventory);
|
@Override
|
||||||
}
|
public void run()
|
||||||
}, 20);
|
{
|
||||||
|
gui.remove();
|
||||||
|
}
|
||||||
|
}, 20);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -434,8 +434,6 @@ public class DataItemStack implements Comparable<DataItemStack>
|
|||||||
{
|
{
|
||||||
if ( ! (object instanceof DataItemStack)) return false;
|
if ( ! (object instanceof DataItemStack)) return false;
|
||||||
DataItemStack that = (DataItemStack)object;
|
DataItemStack that = (DataItemStack)object;
|
||||||
|
|
||||||
// TODO: Use compare instead to avoid bugs?
|
|
||||||
return MUtil.equals(
|
return MUtil.equals(
|
||||||
this.getId(), that.getId(),
|
this.getId(), that.getId(),
|
||||||
this.getCount(), that.getCount(),
|
this.getCount(), that.getCount(),
|
||||||
@ -463,6 +461,50 @@ public class DataItemStack implements Comparable<DataItemStack>
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean equalsItem(ItemStack item)
|
||||||
|
{
|
||||||
|
if (item == null) return false;
|
||||||
|
DataItemStack that = DataItemStack.fromBukkit(item);
|
||||||
|
return this.equals(that);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSimilar(DataItemStack that)
|
||||||
|
{
|
||||||
|
// Just copy equals and comment out count check.
|
||||||
|
return MUtil.equals(
|
||||||
|
this.getId(), that.getId(),
|
||||||
|
// this.getCount(), that.getCount(),
|
||||||
|
this.getDamage(), that.getDamage(),
|
||||||
|
this.getName(), that.getName(),
|
||||||
|
this.getLore(), that.getLore(),
|
||||||
|
this.getEnchants(), that.getEnchants(),
|
||||||
|
this.getRepaircost(), that.getRepaircost(),
|
||||||
|
this.getTitle(), that.getTitle(),
|
||||||
|
this.getAuthor(), that.getAuthor(),
|
||||||
|
this.getPages(), that.getPages(),
|
||||||
|
this.getColor(), that.getColor(),
|
||||||
|
this.isScaling(), that.isScaling(),
|
||||||
|
this.getPotionEffects(), that.getPotionEffects(),
|
||||||
|
this.getSkull(), that.getSkull(),
|
||||||
|
this.getFireworkEffect(), that.getFireworkEffect(),
|
||||||
|
this.getFireworkEffects(), that.getFireworkEffects(),
|
||||||
|
this.getFireworkFlight(), that.getFireworkFlight(),
|
||||||
|
this.getStoredEnchants(), that.getStoredEnchants(),
|
||||||
|
this.isUnbreakable(), that.isUnbreakable(),
|
||||||
|
this.getFlags(), that.getFlags(),
|
||||||
|
this.getBannerBase(), that.getBannerBase(),
|
||||||
|
this.getBannerPatterns(), that.getBannerPatterns(),
|
||||||
|
this.getPotion(), that.getPotion()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSimilarItem(ItemStack item)
|
||||||
|
{
|
||||||
|
if (item == null) return false;
|
||||||
|
DataItemStack that = DataItemStack.fromBukkit(item);
|
||||||
|
return this.isSimilar(that);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode()
|
public int hashCode()
|
||||||
{
|
{
|
||||||
|
@ -583,21 +583,28 @@ public class InventoryUtil
|
|||||||
TAKE,
|
TAKE,
|
||||||
NONE,
|
NONE,
|
||||||
BOTH,
|
BOTH,
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
public boolean isAltering()
|
public boolean isAltering()
|
||||||
{
|
{
|
||||||
return this != NONE;
|
return this != NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isGiving()
|
public boolean isGiving()
|
||||||
{
|
{
|
||||||
return this == GIVE || this == BOTH;
|
return this == GIVE || this == BOTH;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isTaking()
|
public boolean isTaking()
|
||||||
{
|
{
|
||||||
return this == TAKE || this == BOTH;
|
return this == TAKE || this == BOTH;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isNone()
|
||||||
|
{
|
||||||
|
return this == NONE;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user