Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.83 KB | None | 0 0
  1. package ru.meloncode.cristalix.prison;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Collection;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7.  
  8. import org.bukkit.Bukkit;
  9. import org.bukkit.ChatColor;
  10. import org.bukkit.Material;
  11. import org.bukkit.configuration.ConfigurationSection;
  12. import org.bukkit.entity.Player;
  13. import org.bukkit.inventory.Inventory;
  14. import org.bukkit.inventory.InventoryHolder;
  15. import org.bukkit.inventory.ItemStack;
  16. import org.bukkit.scheduler.BukkitRunnable;
  17. import org.bukkit.scoreboard.Objective;
  18. import org.bukkit.scoreboard.Scoreboard;
  19.  
  20. import net.md_5.bungee.api.ChatMessageType;
  21. import net.md_5.bungee.api.chat.ComponentBuilder;
  22. import ru.luvas.bk.SimpleItemStack;
  23. import ru.meloncode.cristalix.prison.boosters.Booster;
  24. import ru.meloncode.cristalix.prison.boosters.BoosterType;
  25. import ru.meloncode.cristalix.prison.mobs.EntityTypes;
  26. import ru.meloncode.cristalix.prison.utils.StringUtils;
  27.  
  28. public class PrisonPlayer
  29. {
  30. private static Map<String, PrisonPlayer> players;
  31. private String name;
  32. int level;
  33. Map<Material, Integer> block_log;
  34. Map<EntityTypes, Integer> mob_log;
  35. Map<String, Integer> passives;
  36. Map<Achievement, Integer> achievements;
  37. ArrayList<String> accesses;
  38. Objective obj;
  39. int kills;
  40. boolean noPee;
  41. double exp;
  42. double shards;
  43. int deaths;
  44. boolean free;
  45. private Inventory enderChest;
  46. long lastkit;
  47. Faction faction;
  48. Scoreboard board;
  49. int totalblocks;
  50. double booster;
  51. private String lastDamager;
  52. private long lastDamagerHitTime;
  53. private double donateResourcesMultiplier;
  54. private double donateExpMultiplier;
  55. private double donateCrystalsMultiplier;
  56. private double donateshaftMultiplier;
  57. private double donateBlocksMultiplier;
  58.  
  59. private double resourcesMultiplier;
  60. private double expMultiplier;
  61. private double shaftMultiplier;
  62. private double shardMultiplier;
  63. private double blocksMultiplier;
  64.  
  65. static {
  66. PrisonPlayer.players = new HashMap<String, PrisonPlayer>();
  67. }
  68.  
  69. public void setLastDamager(final String lastDamager, final int i) {
  70. this.lastDamager = lastDamager;
  71. this.lastDamagerHitTime = System.currentTimeMillis() / 1000L;
  72. }
  73.  
  74. public String getLastDamager() {
  75. return (System.currentTimeMillis() / 1000L - this.lastDamagerHitTime <= 15L) ? this.lastDamager : null;
  76. }
  77.  
  78. public int getNextLevelPrice() {
  79. return Main.config.getInt("levels." + (this.level + 1) + ".money");
  80. }
  81.  
  82. public int getNextLevelBlockPrice() {
  83. return Main.config.getInt("levels." + (this.level + 1) + ".exp");
  84. }
  85.  
  86. public int getTPDelay() {
  87. final Player p = Bukkit.getPlayer(this.name);
  88. for (int i = 0; i <= 10; ++i) {
  89. if (p.hasPermission("prison.tpdelay" + i)) {
  90. return i * 20;
  91. }
  92. }
  93. return 80;
  94. }
  95.  
  96. public void addExp(final double amount) {
  97. this.exp += amount;
  98. }
  99.  
  100. public void addShards(final double amount) {
  101. this.shards += amount;
  102. }
  103.  
  104. public PrisonPlayer(final String name) {
  105. this.lastDamagerHitTime = -1L;
  106. this.name = name;
  107. this.level = 1;
  108. this.kills = 0;
  109. this.deaths = 0;
  110. this.booster = 1.0;
  111. this.shards = 0;
  112. this.exp = 0;
  113. this.noPee = false;
  114. this.accesses = new ArrayList<String>();
  115. this.block_log = new HashMap<Material, Integer>();
  116. this.mob_log = new HashMap<EntityTypes, Integer>();
  117. this.passives = new HashMap<String, Integer>();
  118. this.achievements = new HashMap<Achievement, Integer>();
  119. this.faction = null;
  120. int extraSlots = 0;
  121. for (int i = 0; i <= 18; ++i) {
  122. if (Bukkit.getPlayer(name).hasPermission("chest." + i)) {
  123. extraSlots = i;
  124. }
  125. }
  126. this.enderChest = Bukkit.createInventory((InventoryHolder)null, 45, "\u042d\u043d\u0434\u0435\u0440\u0421\u0443\u043d\u0434\u0443\u043a");
  127. for (int i = 27 + extraSlots; i < this.enderChest.getSize(); ++i) {
  128. this.enderChest.setItem(i, (ItemStack)new SimpleItemStack(Material.STAINED_GLASS_PANE, "&c\u0417\u0430\u043a\u0440\u044b\u0442\u043e", "&7\u041a\u0443\u043f\u0438\u0442\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435", new Object[] { (short)7 }));
  129. }
  130. PrisonPlayer.players.put(name, this);
  131. initDonate();
  132. updateMultipliers();
  133. }
  134.  
  135. public int getAchievemntLevel(final Achievement achievement) {
  136. return this.achievements.getOrDefault(achievement, 0);
  137. }
  138.  
  139. public int setAchievemntLevel(final Achievement achievement, final int level) {
  140. return this.achievements.put(achievement, level);
  141. }
  142.  
  143. public PrisonPlayer(final String name, final ConfigurationSection info) {
  144. this.lastDamagerHitTime = -1L;
  145. this.name = name;
  146. this.level = info.getInt("level");
  147. this.kills = info.getInt("kills");
  148. this.deaths = info.getInt("deaths");
  149. this.totalblocks = info.getInt("total-blocks");
  150. this.shards = info.getInt("shards");
  151. this.exp = info.getInt("exp");
  152. this.noPee = info.getBoolean("noPee");
  153. this.booster = info.getDouble("booster");
  154. if (this.noPee) {
  155. Main.disable(name, true);
  156. }
  157. this.faction = Faction.getFaction(info.getString("faction"));
  158. if (info.contains("free")) {
  159. this.free = info.getBoolean("free");
  160. }
  161. this.accesses = new ArrayList<String>();
  162. if (info.contains("accesses")) {
  163. this.accesses = (ArrayList<String>)info.getStringList("accesses");
  164. }
  165. this.block_log = new HashMap<Material, Integer>();
  166. if (info.contains("block-log")) {
  167. final ConfigurationSection bl = info.getConfigurationSection("block-log");
  168. if (bl.getKeys(false).size() > 0) {
  169. for (final String cMaterial : bl.getKeys(false)) {
  170. this.block_log.put(Material.getMaterial(cMaterial), bl.getInt(cMaterial));
  171. }
  172. }
  173. }
  174. this.mob_log = new HashMap<EntityTypes, Integer>();
  175. if (info.contains("mob-log")) {
  176. final ConfigurationSection bl = info.getConfigurationSection("mob-log");
  177. if (bl.getKeys(false).size() > 0) {
  178. for (final String type : bl.getKeys(false)) {
  179. this.mob_log.put(EntityTypes.valueOf(type), bl.getInt(type));
  180. }
  181. }
  182. }
  183. this.achievements = new HashMap<Achievement, Integer>();
  184. if (info.contains("achievements")) {
  185. final ConfigurationSection bl = info.getConfigurationSection("achievements");
  186. if (bl.getKeys(false).size() > 0) {
  187. for (final String type : bl.getKeys(false)) {
  188. this.achievements.put(Achievement.getAchievement(Material.valueOf(type)), bl.getInt(type));
  189. }
  190. }
  191. }
  192. this.passives = new HashMap<String, Integer>();
  193. if (info.contains("passives")) {
  194. final ConfigurationSection bl = info.getConfigurationSection("passives");
  195. if (!bl.contains("Fortune")) {
  196. bl.set("Fortune", (Object)0);
  197. }
  198. if (!bl.contains("Curse")) {
  199. bl.set("Curse", (Object)0);
  200. }
  201. if (bl.getKeys(false).size() > 0) {
  202. for (final String type : bl.getKeys(false)) {
  203. this.passives.put(type, bl.getInt(type));
  204. }
  205. }
  206. }
  207. else {
  208. this.passives.put("Strength", 0);
  209. this.passives.put("Agility", 0);
  210. this.passives.put("Needs", 0);
  211. this.passives.put("Fortune", 0);
  212. this.passives.put("Curse", 0);
  213. }
  214. int extraSlots = 0;
  215. for (int i = 0; i <= 18; ++i) {
  216. if (Bukkit.getPlayer(name).hasPermission("chest." + i)) {
  217. extraSlots = i;
  218. }
  219. }
  220. (this.enderChest = Bukkit.createInventory((InventoryHolder)null, 45, "\u042d\u043d\u0434\u0435\u0440\u0421\u0443\u043d\u0434\u0443\u043a")).setContents(Utils.toStack(info.getString("enderchest")));
  221. for (int i = 27 + extraSlots; i < this.enderChest.getSize(); ++i) {
  222. this.enderChest.setItem(i, (ItemStack)new SimpleItemStack(Material.STAINED_GLASS_PANE, "&c\u0417\u0430\u043a\u0440\u044b\u0442\u043e", "&7\u041a\u0443\u043f\u0438\u0442\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435", new Object[] { (short)7 }));
  223. }
  224. PrisonPlayer.players.put(name, this);
  225. initDonate();
  226. updateMultipliers();
  227. }
  228.  
  229. public int getExtraSlots() {
  230. int extraSlots = 0;
  231. for (int i = 0; i <= 18; ++i) {
  232. if (Bukkit.getPlayer(this.name).hasPermission("chest." + i)) {
  233. extraSlots = i;
  234. }
  235. }
  236. return extraSlots;
  237. }
  238.  
  239. public void save() {
  240. ConfigurationSection cPlayer;
  241. if (Main.players_storage.contains(this.name)) {
  242. cPlayer = Main.players_storage.getConfigurationSection(this.name);
  243. }
  244. else {
  245. cPlayer = Main.players_storage.createSection(this.name);
  246. }
  247. cPlayer.set("booster", (Object)this.booster);
  248. cPlayer.set("level", (Object)this.level);
  249. cPlayer.set("kills", (Object)this.kills);
  250. cPlayer.set("deaths", (Object)this.deaths);
  251. cPlayer.set("total-blocks", (Object)this.totalblocks);
  252. cPlayer.set("free", (Object)this.free);
  253. cPlayer.set("shards", (Object)this.shards);
  254. cPlayer.set("exp", (Object)this.exp);
  255. cPlayer.set("noPee", (Object)this.noPee);
  256. ConfigurationSection bLog = null;
  257. if (this.accesses != null && this.accesses.size() > 0) {
  258. cPlayer.set("accesses", (Object)this.accesses);
  259. }
  260. if (this.block_log != null && this.block_log.size() > 0) {
  261. if (cPlayer.contains("block-log")) {
  262. bLog = cPlayer.getConfigurationSection("block-log");
  263. }
  264. else {
  265. bLog = cPlayer.createSection("block-log");
  266. }
  267. if (this.block_log.size() > 0) {
  268. for (final Map.Entry<Material, Integer> entry : this.block_log.entrySet()) {
  269. bLog.set(entry.getKey().toString(), (Object)entry.getValue());
  270. }
  271. }
  272. }
  273. if (this.mob_log != null && this.mob_log.size() > 0) {
  274. if (cPlayer.contains("mob-log")) {
  275. bLog = cPlayer.getConfigurationSection("mob-log");
  276. }
  277. else {
  278. bLog = cPlayer.createSection("mob-log");
  279. }
  280. if (this.mob_log.size() > 0) {
  281. for (final Map.Entry<EntityTypes, Integer> entry2 : this.mob_log.entrySet()) {
  282. bLog.set(entry2.getKey().toString(), (Object)entry2.getValue());
  283. }
  284. }
  285. }
  286. if (this.achievements != null && this.achievements.size() > 0) {
  287. if (cPlayer.contains("achievements")) {
  288. bLog = cPlayer.getConfigurationSection("achievements");
  289. }
  290. else {
  291. bLog = cPlayer.createSection("achievements");
  292. }
  293. if (this.achievements.size() > 0) {
  294. for (final Map.Entry<Achievement, Integer> entry3 : this.achievements.entrySet()) {
  295. bLog.set(entry3.getKey().getMaterial().toString(), (Object)entry3.getValue());
  296. }
  297. }
  298. }
  299. if (this.passives != null && this.passives.size() > 0) {
  300. if (cPlayer.contains("passives")) {
  301. bLog = cPlayer.getConfigurationSection("passives");
  302. }
  303. else {
  304. bLog = cPlayer.createSection("passives");
  305. }
  306. if (this.passives.size() > 0) {
  307. for (final Map.Entry<String, Integer> entry4 : this.passives.entrySet()) {
  308. bLog.set(entry4.getKey().toString(), (Object)entry4.getValue());
  309. }
  310. }
  311. }
  312. else {
  313. if (cPlayer.contains("passives")) {
  314. bLog = cPlayer.getConfigurationSection("passives");
  315. }
  316. else {
  317. bLog = cPlayer.createSection("passives");
  318. }
  319. bLog.set("Strength", (Object)0);
  320. bLog.set("Agility", (Object)0);
  321. bLog.set("Needs", (Object)0);
  322. bLog.set("Fortune", (Object)0);
  323. bLog.set("Curse", (Object)0);
  324. }
  325. cPlayer.set("enderchest", (Object)Utils.toString(this.enderChest.getContents()));
  326. }
  327.  
  328. public static void loadPrisonPlayer(final Player player) {
  329. final String name = player.getName();
  330. if (Main.players_storage.contains(player.getName())) {
  331. final PrisonPlayer prisonPlayer = new PrisonPlayer(name, Main.players_storage.getConfigurationSection(name));
  332. }
  333. else {
  334. final PrisonPlayer pp = new PrisonPlayer(name);
  335. new BukkitRunnable() {
  336. public void run() {
  337. PrisonPlayer.giveStartKit(player);
  338. }
  339. }.runTaskLater(Main.getInstance(), 20L);
  340. pp.save();
  341. }
  342. }
  343.  
  344. public void initDonate() {
  345. if (getPlayer().hasPermission("jedi.prince")) {
  346. donateResourcesMultiplier += 0.1;
  347. donateExpMultiplier += 0.05;
  348. donateCrystalsMultiplier += 0.05;
  349. donateshaftMultiplier += 0.05;
  350. }
  351. if (getPlayer().hasPermission("jedi.lord")) {
  352. donateResourcesMultiplier += 0.1;
  353. donateExpMultiplier += 0.1;
  354. donateCrystalsMultiplier += 0.15;
  355. donateshaftMultiplier += 0.05;
  356. }
  357. if (getPlayer().hasPermission("jedi.graf")) {
  358. donateResourcesMultiplier += 0.1;
  359. donateExpMultiplier += 0.2;
  360. donateCrystalsMultiplier += 0.25;
  361. donateshaftMultiplier += 0.05;
  362. }
  363. if (getPlayer().hasPermission("jedi.viking")) {
  364. donateResourcesMultiplier += 0.1;
  365. donateExpMultiplier += 0.3;
  366. donateCrystalsMultiplier += 0.45;
  367. donateshaftMultiplier += 0.05;
  368. }
  369. if (getPlayer().hasPermission("jedi.king")) {
  370. donateResourcesMultiplier += 0.1;
  371. donateExpMultiplier += 0.45;
  372. donateCrystalsMultiplier += 0.6;
  373. donateshaftMultiplier += 0.05;
  374. }
  375. }
  376. public void updateMultipliers() {
  377. if (getPlayer() == null)
  378. return;
  379. resourcesMultiplier = StringUtils.fixDouble(3, Main.GLOBAL_RESOURCES_MULTIPLIER + donateResourcesMultiplier + Booster.getGlobalMultiplier(BoosterType.MONEY) + Booster.getLocalMultiplier(BoosterType.MONEY, this));
  380. expMultiplier = StringUtils.fixDouble(3, Main.GLOBAL_EXP_MULTIPLIER + donateExpMultiplier + Booster.getGlobalMultiplier(BoosterType.EXP) + Booster.getLocalMultiplier(BoosterType.EXP, this));
  381. shaftMultiplier = StringUtils.fixDouble(100, Main.GLOBAL_SHAFT_MULTIPLIER + donateshaftMultiplier + Booster.getGlobalMultiplier(BoosterType.SHAFT) + Booster.getLocalMultiplier(BoosterType.SHAFT, this));
  382. blocksMultiplier = (double) (1 + donateCrystalsMultiplier + StringUtils.fixDouble(2, Booster.getGlobalMultiplier(BoosterType.BLOCKS)) + StringUtils.fixDouble(2, Booster.getLocalMultiplier(BoosterType.BLOCKS, this)));
  383. shardMultiplier = StringUtils.fixDouble(3, Main.GLOBAL_SHARDS_MULTIPLIER + donateCrystalsMultiplier + Booster.getGlobalMultiplier(BoosterType.SHARD) + Booster.getLocalMultiplier(BoosterType.SHARD, this));
  384. }
  385. public static void giveStartKit(final Player player) {
  386. final Inventory inv = (Inventory)player.getInventory();
  387. if (Main.startItems.size() > 0 && PrisonItem.items.size() > 0) {
  388. for (final String cItem : Main.startItems) {
  389. inv.addItem(new ItemStack[] { PrisonItem.getPrisonItem(cItem).getUsableItem() });
  390. }
  391. }
  392. getPrisonPlayer(player).lastkit = System.currentTimeMillis() / 1000L / 60L;
  393. }
  394.  
  395. public static PrisonPlayer getPrisonPlayer(final Player player) {
  396. return PrisonPlayer.players.get(player.getName());
  397. }
  398.  
  399. public static PrisonPlayer getPrisonPlayer(String name)
  400. {
  401. return players.get(name);
  402. }
  403.  
  404. public int getLevel() {
  405. return this.level;
  406. }
  407.  
  408. public void levelUp() {
  409. ++this.level;
  410. this.save();
  411. }
  412.  
  413. public void setLevel(final int level) {
  414. this.level = level;
  415. this.save();
  416. }
  417.  
  418. public void unload() {
  419. this.save();
  420. Main.saveConfig(Main.players_storage, "players.yml");
  421. PrisonPlayer.players.remove(this.name);
  422. }
  423.  
  424. public void grantCellarAcess(final String name) {
  425. this.accesses.add(name);
  426. }
  427.  
  428. public boolean hasCellarAcess(final String name) {
  429. return this.accesses.contains(name);
  430. }
  431.  
  432. public double getBalance() {
  433. return Main.economy.getBalance(this.name);
  434. }
  435.  
  436. public boolean takeMoney(final int money) {
  437. if (this.hasMoney(money) && Main.economy.withdrawPlayer(this.name, (double)money).transactionSuccess()) {
  438. Bukkit.getPlayer(this.name).sendMessage(ChatColor.RED + "\u0421 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0447\u0435\u0442\u0430 \u0431\u044b\u043b\u043e \u0441\u043f\u0438\u0441\u0430\u043d\u043e " + ChatColor.DARK_RED + money + "$");
  439. return true;
  440. }
  441. return false;
  442. }
  443.  
  444. public void giveMoney(final double money) {
  445. if (Bukkit.getPlayer(this.name) != null) {
  446. try {
  447. Bukkit.getPlayer(this.name).sendMessage(ChatColor.GREEN + "\u041d\u0430 \u0432\u0430\u0448 \u0441\u0447\u0435\u0442 \u0431\u044b\u043b\u043e \u0437\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e " + ChatColor.GREEN + money + "$");
  448. Main.economy.depositPlayer(this.name, money);
  449. }
  450. catch (NullPointerException ex) {}
  451. }
  452. }
  453.  
  454. public void sellItems(final double money) {
  455. if (getPlayer() != null) {
  456. Player p = getPlayer();
  457. p.spigot().sendMessage(ChatMessageType.ACTION_BAR, new ComponentBuilder(ChatColor.WHITE + "Вы получили от продажи " + ChatColor.YELLOW + money * PrisonPlayer.getPrisonPlayer(p).getResourcesMultiplier() + "$").color(net.md_5.bungee.api.ChatColor.GOLD).create());
  458. Main.economy.depositPlayer(p.getName(), money * PrisonPlayer.getPrisonPlayer(p).getResourcesMultiplier());
  459. }
  460. }
  461. public boolean hasMoney(final int money) {
  462. return Main.economy.has(this.name, (double)money);
  463. }
  464.  
  465. public static Collection<PrisonPlayer> getAll() {
  466. return PrisonPlayer.players.values();
  467. }
  468.  
  469. public void addBlockDig(final Material material, double d) {
  470. this.addBlockDig(material, 1);
  471. }
  472.  
  473. public void addBlockDig(final Material material, final int amount) {
  474. if (this.block_log.containsKey(material)) {
  475. this.block_log.put(material, this.block_log.get(material) + amount);
  476. }
  477. else {
  478. this.block_log.put(material, amount);
  479. }
  480. }
  481.  
  482. public int getBlockDigsCount(final Material material) {
  483. if (this.block_log.containsKey(material)) {
  484. return this.block_log.get(material);
  485. }
  486. return 0;
  487. }
  488.  
  489. public void addMobKill(final EntityTypes type) {
  490. if (this.mob_log.containsKey(type)) {
  491. this.mob_log.put(type, this.mob_log.get(type) + 1);
  492. }
  493. else {
  494. this.mob_log.put(type, 1);
  495. }
  496. }
  497.  
  498. public int getMobKillCount(final EntityTypes type) {
  499. if (this.mob_log.containsKey(type)) {
  500. return this.mob_log.get(type);
  501. }
  502. return 0;
  503. }
  504.  
  505. public int getKills() {
  506. return this.kills;
  507. }
  508.  
  509. public Map<String, Integer> getPassives() {
  510. return this.passives;
  511. }
  512.  
  513. public int getDeaths() {
  514. return this.deaths;
  515. }
  516.  
  517. public int getAdditionalDamage() {
  518. return Main.config.getInt("levels." + this.level + ".damage");
  519. }
  520.  
  521. public Scoreboard getScoreboard() {
  522. if (this.board == null) {
  523. this.board = Bukkit.getScoreboardManager().getNewScoreboard();
  524. }
  525. return this.board;
  526. }
  527.  
  528. public Faction getFaction() {
  529. return this.faction;
  530. }
  531.  
  532. public String getName() {
  533. return this.name;
  534. }
  535.  
  536. public void setFaction(final Faction faction) {
  537. this.faction = faction;
  538. Main.players_storage.getConfigurationSection(this.name).set("faction", (Object)((faction != null) ? faction.getId() : null));
  539. }
  540.  
  541. public boolean hasFaction() {
  542. return this.faction != null;
  543. }
  544.  
  545. public Player getPlayer()
  546. {
  547. return Bukkit.getPlayer(getName());
  548. }
  549.  
  550. public double getResourcesMultiplier() {
  551. return resourcesMultiplier;
  552. }
  553.  
  554. public boolean isFree() {
  555. return this.free;
  556. }
  557.  
  558. public double getShaftMultiplier() {
  559. return shaftMultiplier;
  560. }
  561. public double getCrystalsMultiplier() {
  562. return shardMultiplier;
  563. }
  564.  
  565. public double getExpMultiplier() {
  566. return expMultiplier;
  567. }
  568.  
  569. public double getBlocksMultiplier() {
  570. return blocksMultiplier;
  571. }
  572. public String getLevelPercent() {
  573. int percent = (int) (exp / getNextLevelBlockPrice() * 100.0);
  574. String percentInfo = percent + "%";
  575. return percent < 33 ? "§c" + percentInfo : (percent < 66 ? "§e" + percentInfo : "§a" + percentInfo);
  576. }
  577.  
  578. public String getBlockPercent() {
  579. int percent = (int) (totalblocks / getNextLevelBlockPrice() * 100.0);
  580. String percentInfo = percent + "%";
  581. return percent < 33 ? "§c" + percentInfo : (percent < 66 ? "§e" + percentInfo : "§a" + percentInfo);
  582. }
  583. public Inventory getEnderChest() {
  584. return this.enderChest;
  585. }
  586. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement