Skip to content

Commit c0b2fe4

Browse files
committed
implement the transmute take gui
1 parent 99c0c64 commit c0b2fe4

File tree

3 files changed

+140
-0
lines changed

3 files changed

+140
-0
lines changed

src/pw/chew/transmuteit/TransmuteGUI.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public void initializeItems(UUID uuid, String args[], Player player) {
4141
inv.setItem(10, createGuiItem(Material.getMaterial("PLAYER_HEAD"), "You", ChatColor.YELLOW + "EMC: " + ChatColor.GREEN + NumberFormat.getInstance().format(emc), ChatColor.YELLOW + "Discoveries: " + ChatColor.GREEN + discoveries + " / " + totalDiscoveries));
4242
inv.setItem(12, createGuiItem(Material.getMaterial("PAPER"), "Help!", "Click to view help!"));
4343
inv.setItem(14, createGuiItem(Material.getMaterial("ENCHANTING_TABLE"), "Discoveries", "" + "Click to view your discoveries."));
44+
inv.setItem(16, createGuiItem(Material.getMaterial("BUCKET"), "Transmute Take", "" + "Turn items INTO EMC from your inventory!"));
4445
}
4546

4647
// Nice little method to create a gui item with a custom name, and description
@@ -98,6 +99,12 @@ public void onInventoryClick(InventoryClickEvent e) {
9899
gui.openInventory(player);
99100
}
100101

102+
if(e.getRawSlot() == 16) {
103+
TransmuteTakeGUI gui = new TransmuteTakeGUI();
104+
gui.initializeItems(player.getUniqueId(), player);
105+
gui.openInventory(player);
106+
}
107+
101108

102109
}
103110

src/pw/chew/transmuteit/TransmuteIt.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ public void onEnable() {
8282
// Register Events
8383
getServer().getPluginManager().registerEvents(new DiscoveriesGUI(), this);
8484
getServer().getPluginManager().registerEvents(new TransmuteGUI(), this);
85+
getServer().getPluginManager().registerEvents(new TransmuteTakeGUI(), this);
8586

8687
// Magic Time
8788
getLogger().info("Booted!");
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
package pw.chew.transmuteit;
2+
3+
import org.bukkit.Bukkit;
4+
import org.bukkit.ChatColor;
5+
import org.bukkit.Material;
6+
import org.bukkit.entity.HumanEntity;
7+
import org.bukkit.entity.Player;
8+
import org.bukkit.event.EventHandler;
9+
import org.bukkit.event.Listener;
10+
import org.bukkit.event.inventory.ClickType;
11+
import org.bukkit.event.inventory.InventoryClickEvent;
12+
import org.bukkit.inventory.Inventory;
13+
import org.bukkit.inventory.InventoryHolder;
14+
import org.bukkit.inventory.ItemStack;
15+
import org.bukkit.inventory.PlayerInventory;
16+
import org.bukkit.inventory.meta.Damageable;
17+
import org.bukkit.inventory.meta.ItemMeta;
18+
19+
import java.text.NumberFormat;
20+
import java.util.ArrayList;
21+
import java.util.Arrays;
22+
import java.util.List;
23+
import java.util.UUID;
24+
25+
public class TransmuteTakeGUI implements InventoryHolder, Listener {
26+
private Inventory inv;
27+
28+
public TransmuteTakeGUI() {
29+
inv = Bukkit.createInventory(this, 9, "Click Items to Transmute");
30+
}
31+
32+
@Override
33+
public Inventory getInventory() {
34+
return inv;
35+
}
36+
37+
// You can call this whenever you want to put the items in
38+
public void initializeItems(UUID uuid, Player player) {
39+
for(int i=0; i < 9; i++) {
40+
inv.setItem(i, createGuiItem(Material.getMaterial("GRAY_STAINED_GLASS_PANE"), ""));
41+
}
42+
}
43+
44+
// Nice little method to create a gui item with a custom name, and description
45+
private ItemStack createGuiItem(Material material, String name, String...lore) {
46+
ItemStack item = new ItemStack(material, 1);
47+
ItemMeta meta = item.getItemMeta();
48+
meta.setDisplayName(ChatColor.RESET + name);
49+
50+
ArrayList<String> metaLore = new ArrayList<String>(Arrays.asList(lore));
51+
52+
meta.setLore(metaLore);
53+
item.setItemMeta(meta);
54+
return item;
55+
}
56+
57+
// You can open the inventory with this
58+
public void openInventory(Player p) {
59+
p.openInventory(inv);
60+
}
61+
62+
// Check for clicks on items
63+
@EventHandler
64+
public void onInventoryClick(InventoryClickEvent e) {
65+
if (e.getInventory().getHolder().getClass() != this.getClass()) {
66+
return;
67+
}
68+
if (e.getClick().equals(ClickType.NUMBER_KEY)){
69+
e.setCancelled(true);
70+
}
71+
e.setCancelled(true);
72+
73+
Player player = (Player) e.getWhoClicked();
74+
ItemStack clickedItem = e.getCurrentItem();
75+
PlayerInventory inventory = player.getInventory();
76+
77+
// verify current item is not null
78+
if (clickedItem == null || clickedItem.getType() == Material.AIR) return;
79+
80+
int selectedItem = e.getRawSlot();
81+
if(selectedItem > 8) {
82+
if(selectedItem >= 36) {
83+
selectedItem -= 36;
84+
}
85+
ItemStack item = inventory.getItem(selectedItem);
86+
int amount = item.getAmount();
87+
88+
Material type = item.getType();
89+
String name = type.toString();
90+
// If it's nothing
91+
// If it's something
92+
try {
93+
DataManager bob = new DataManager();
94+
int emc = TransmuteIt.json.getInt(type.toString());
95+
int currentDurability = 0;
96+
ItemMeta meta = item.getItemMeta();
97+
Damageable damage;
98+
if(meta instanceof Damageable) {
99+
damage = ((Damageable) meta);
100+
currentDurability = damage.getDamage();
101+
}
102+
short maxDurability = type.getMaxDurability();
103+
if(currentDurability > maxDurability) {
104+
currentDurability = maxDurability;
105+
}
106+
if(maxDurability > 0) {
107+
emc = (int)((double)emc * (((double)maxDurability-(double)currentDurability)/(double)maxDurability));
108+
}
109+
item.setAmount(0);
110+
UUID uuid = player.getUniqueId();
111+
int current = new DataManager().getEMC(uuid, player);
112+
int newEMC = current + (amount * emc);
113+
bob.writeEMC(uuid, newEMC, player);
114+
player.sendMessage(ChatColor.COLOR_CHAR + "d--------[ " + ChatColor.COLOR_CHAR + "bTransmuting Stats" + ChatColor.COLOR_CHAR + "d ]--------");
115+
if(!bob.discovered(uuid, name)) {
116+
player.sendMessage(ChatColor.COLOR_CHAR + "aYou've discovered " + name + "!");
117+
if(bob.discoveries(uuid).size() == 0) {
118+
player.sendMessage(ChatColor.ITALIC + "" + ChatColor.COLOR_CHAR + "7Now you can run /transmute get " + name + " [amount] to get this item, given you have enough EMC!");
119+
}
120+
new DataManager().writeDiscovery(uuid, name);
121+
}
122+
player.sendMessage(ChatColor.GREEN + "+ " + NumberFormat.getInstance().format(amount * emc) + " EMC [Total: " + NumberFormat.getInstance().format(newEMC) + " EMC]");
123+
player.sendMessage(ChatColor.RED + "- " + amount + " " + new DiscoveriesGUI().capitalize(name));
124+
return;
125+
// If there's no JSON file or it's not IN the JSON file
126+
} catch(org.json.JSONException f) {
127+
player.sendMessage("This item has no set EMC value!");
128+
}
129+
}
130+
131+
}
132+
}

0 commit comments

Comments
 (0)