1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-19 19:25:48 +00:00

Categories with 0 Items enabled will no longer appear in the Guide.

This commit is contained in:
mrCookieSlime 2016-04-17 20:39:40 +02:00
parent c787a9a538
commit 22e005e33d

View File

@ -127,45 +127,77 @@ public class SlimefunGuide {
int tier = 0; int tier = 0;
for (final Category category: Category.list()) { for (final Category category: Category.list()) {
if (tier < category.getTier()) {
if (survival) { boolean locked = true;
for (final GuideHandler handler: Slimefun.getGuideHandlers(tier)) {
handler.addEntry(texts, tooltips); for (SlimefunItem item: category.getItems()) {
actions.add(new PlayerRunnable(2) { if (Slimefun.isEnabled(p, item, false)) {
locked = false;
break;
}
}
if (locked) {
// Dont display that Category...
}
else {
if (tier < category.getTier()) {
if (survival) {
for (final GuideHandler handler: Slimefun.getGuideHandlers(tier)) {
handler.addEntry(texts, tooltips);
actions.add(new PlayerRunnable(2) {
@Override
public void run(Player p) {
handler.run(p, survival);
}
});
}
}
tier = category.getTier();
if (tier > 1) {
for (int i = 0; i < 10; i++) {
if (texts.size() % 10 == 0) break;
texts.add(" ");
tooltips.add(null);
actions.add(null);
}
}
texts.add("§8\u21E8 §6Tier " + tier);
tooltips.add(null);
actions.add(null);
}
if (category instanceof LockedCategory && !((LockedCategory) category).hasUnlocked(p)) {
StringBuilder parents = new StringBuilder("§4§lLOCKED\n\n§7In order to unlock this Category,\n§7you need to unlock all Items from\n§7the following Categories first:\n");
for (Category parent: ((LockedCategory) category).getParents()) {
parents.append("\n§c" + StringUtils.formatItemName(parent.getItem(), false));
}
texts.add(shorten("§c" , StringUtils.formatItemName(category.getItem(), false)));
tooltips.add(parents.toString());
actions.add(null);
}
else if (category instanceof SeasonCategory) {
if (((SeasonCategory) category).isUnlocked()) {
texts.add(shorten("§a", StringUtils.formatItemName(category.getItem(), false)));
tooltips.add("§eClick to open the following Category:\n" + StringUtils.formatItemName(category.getItem(), false));
actions.add(new PlayerRunnable(1) {
@Override @Override
public void run(Player p) { public void run(final Player p) {
handler.run(p, survival); Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
openCategory(p, category, survival, 1, experimental);
}
}, 1L);
} }
}); });
} }
} }
tier = category.getTier(); else {
if (tier > 1) {
for (int i = 0; i < 10; i++) {
if (texts.size() % 10 == 0) break;
texts.add(" ");
tooltips.add(null);
actions.add(null);
}
}
texts.add("§8\u21E8 §6Tier " + tier);
tooltips.add(null);
actions.add(null);
}
if (category instanceof LockedCategory && !((LockedCategory) category).hasUnlocked(p)) {
StringBuilder parents = new StringBuilder("§4§lLOCKED\n\n§7In order to unlock this Category,\n§7you need to unlock all Items from\n§7the following Categories first:\n");
for (Category parent: ((LockedCategory) category).getParents()) {
parents.append("\n§c" + StringUtils.formatItemName(parent.getItem(), false));
}
texts.add(shorten("§c" , StringUtils.formatItemName(category.getItem(), false)));
tooltips.add(parents.toString());
actions.add(null);
}
else if (category instanceof SeasonCategory) {
if (((SeasonCategory) category).isUnlocked()) {
texts.add(shorten("§a", StringUtils.formatItemName(category.getItem(), false))); texts.add(shorten("§a", StringUtils.formatItemName(category.getItem(), false)));
tooltips.add("§eClick to open the following Category:\n" + StringUtils.formatItemName(category.getItem(), false)); tooltips.add("§eClick to open the following Category:\n" + StringUtils.formatItemName(category.getItem(), false));
actions.add(new PlayerRunnable(1) { actions.add(new PlayerRunnable(1) {
@ -183,23 +215,6 @@ public class SlimefunGuide {
}); });
} }
} }
else {
texts.add(shorten("§a", StringUtils.formatItemName(category.getItem(), false)));
tooltips.add("§eClick to open the following Category:\n" + StringUtils.formatItemName(category.getItem(), false));
actions.add(new PlayerRunnable(1) {
@Override
public void run(final Player p) {
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
openCategory(p, category, survival, 1, experimental);
}
}, 1L);
}
});
}
} }
if (survival) { if (survival) {
@ -314,7 +329,19 @@ public class SlimefunGuide {
else { else {
final Category category = categories.get(target); final Category category = categories.get(target);
if (!(category instanceof LockedCategory)) { boolean locked = true;
for (SlimefunItem item: category.getItems()) {
if (Slimefun.isEnabled(p, item, false)) {
locked = false;
break;
}
}
if (locked) {
// Dont display that Category...
}
else if (!(category instanceof LockedCategory)) {
if (!(category instanceof SeasonCategory)) { if (!(category instanceof SeasonCategory)) {
menu.addItem(index, category.getItem()); menu.addItem(index, category.getItem());
menu.addMenuClickHandler(index, new MenuClickHandler() { menu.addMenuClickHandler(index, new MenuClickHandler() {
@ -397,75 +424,77 @@ public class SlimefunGuide {
for (final SlimefunItem item: category.getItems()) { for (final SlimefunItem item: category.getItems()) {
if (Slimefun.hasPermission(p, item, false)) { if (Slimefun.hasPermission(p, item, false)) {
if (survival && !Slimefun.hasUnlocked(p, item, false) && item.getResearch() != null) { if (Slimefun.isEnabled(p, item, false)) {
texts.add(shorten("§7", StringUtils.formatItemName(item.getItem(), false))); if (survival && !Slimefun.hasUnlocked(p, item, false) && item.getResearch() != null) {
final int cost = SlimefunStartup.getResearchCfg().getInt(item.getResearch().getID() + ".cost"); texts.add(shorten("§7", StringUtils.formatItemName(item.getItem(), false)));
tooltips.add(StringUtils.formatItemName(item.getItem(), false) + "\n§c§lLOCKED\n\n§7Cost: " + (p.getLevel() >= cost ? "§b": "§4") + cost + " Levels\n\n§a> Click to unlock"); final int cost = SlimefunStartup.getResearchCfg().getInt(item.getResearch().getID() + ".cost");
actions.add(new PlayerRunnable(2) { tooltips.add(StringUtils.formatItemName(item.getItem(), false) + "\n§c§lLOCKED\n\n§7Cost: " + (p.getLevel() >= cost ? "§b": "§4") + cost + " Levels\n\n§a> Click to unlock");
actions.add(new PlayerRunnable(2) {
@Override
public void run(final Player p) { @Override
boolean canBuy = false; public void run(final Player p) {
if (p.getGameMode() == GameMode.CREATIVE) canBuy = true; boolean canBuy = false;
else if (p.getLevel() >= cost) { if (p.getGameMode() == GameMode.CREATIVE) canBuy = true;
p.setLevel(p.getLevel() - cost); else if (p.getLevel() >= cost) {
canBuy = true; p.setLevel(p.getLevel() - cost);
} canBuy = true;
if (canBuy) { }
Research research = item.getResearch(); if (canBuy) {
boolean researched = research == null ? true: research.hasUnlocked(p); Research research = item.getResearch();
boolean researched = research == null ? true: research.hasUnlocked(p);
if (researched) openCategory(p, category, true, selected_page, experimental);
else if (!Research.isResearching(p)){ if (researched) openCategory(p, category, true, selected_page, experimental);
if (p.getGameMode() == GameMode.CREATIVE) { else if (!Research.isResearching(p)){
research.unlock(p, true); if (p.getGameMode() == GameMode.CREATIVE) {
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() { research.unlock(p, true);
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() { @Override
openCategory(p, category, survival, selected_page, experimental); public void run() {
} openCategory(p, category, survival, selected_page, experimental);
}, 1L); }
} }, 1L);
else { }
research.unlock(p, false); else {
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() { research.unlock(p, false);
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() { @Override
openCategory(p, category, survival, selected_page, experimental); public void run() {
} openCategory(p, category, survival, selected_page, experimental);
}, 103L); }
}, 103L);
}
} }
} }
else Messages.local.sendTranslation(p, "messages.not-enough-xp", true);
} }
else Messages.local.sendTranslation(p, "messages.not-enough-xp", true); });
}
});
}
else {
texts.add(shorten("§a", StringUtils.formatItemName(item.getItem(), false)));
StringBuilder tooltip = new StringBuilder();
tooltip.append(StringUtils.formatItemName(item.getItem(), false));
if (item.getItem().hasItemMeta() && item.getItem().getItemMeta().hasLore()) {
for (String line: item.getItem().getItemMeta().getLore()) {
tooltip.append("\n" + line);
}
} }
else {
tooltip.append("\n\n§e§oClick for more Info"); texts.add(shorten("§a", StringUtils.formatItemName(item.getItem(), false)));
tooltips.add(tooltip.toString());
actions.add(new PlayerRunnable(2) {
@Override StringBuilder tooltip = new StringBuilder();
public void run(Player p) {
displayItem(p, item.getItem(), true, experimental, 0); tooltip.append(StringUtils.formatItemName(item.getItem(), false));
if (item.getItem().hasItemMeta() && item.getItem().getItemMeta().hasLore()) {
for (String line: item.getItem().getItemMeta().getLore()) {
tooltip.append("\n" + line);
}
} }
});
tooltip.append("\n\n§e§oClick for more Info");
tooltips.add(tooltip.toString());
actions.add(new PlayerRunnable(2) {
@Override
public void run(Player p) {
displayItem(p, item.getItem(), true, experimental, 0);
}
});
}
} }
} }
else { else {
@ -591,44 +620,46 @@ public class SlimefunGuide {
final SlimefunItem sfitem = category.getItems().get(target); final SlimefunItem sfitem = category.getItems().get(target);
if (survival && !Slimefun.hasUnlocked(p, sfitem.getItem(), false) && sfitem.getResearch() != null) { if (survival && !Slimefun.hasUnlocked(p, sfitem.getItem(), false) && sfitem.getResearch() != null) {
if (Slimefun.hasPermission(p, sfitem, false)) { if (Slimefun.hasPermission(p, sfitem, false)) {
final int cost = SlimefunStartup.getResearchCfg().getInt(sfitem.getResearch().getID() + ".cost"); if (Slimefun.isEnabled(p, sfitem, false)) {
menu.addItem(index, new CustomItem(Material.STAINED_GLASS_PANE, StringUtils.formatItemName(sfitem.getItem(), false), 14, new String[] {"&4&lLOCKED", "", "&a> Click to unlock", "", "&7Cost: &b" + cost + " Level"})); final int cost = SlimefunStartup.getResearchCfg().getInt(sfitem.getResearch().getID() + ".cost");
menu.addMenuClickHandler(index, new MenuClickHandler() { menu.addItem(index, new CustomItem(Material.STAINED_GLASS_PANE, StringUtils.formatItemName(sfitem.getItem(), false), 14, new String[] {"&4&lLOCKED", "", "&a> Click to unlock", "", "&7Cost: &b" + cost + " Level"}));
menu.addMenuClickHandler(index, new MenuClickHandler() {
@Override
public boolean onClick(final Player p, int slot, ItemStack item, ClickAction action) { @Override
boolean canBuy = false; public boolean onClick(final Player p, int slot, ItemStack item, ClickAction action) {
if (p.getGameMode() == GameMode.CREATIVE) canBuy = true; boolean canBuy = false;
else if (p.getLevel() >= cost) { if (p.getGameMode() == GameMode.CREATIVE) canBuy = true;
p.setLevel(p.getLevel() - cost); else if (p.getLevel() >= cost) {
canBuy = true; p.setLevel(p.getLevel() - cost);
} canBuy = true;
if (canBuy) { }
Research research = sfitem.getResearch(); if (canBuy) {
boolean researched = research == null ? true: research.hasUnlocked(p); Research research = sfitem.getResearch();
boolean researched = research == null ? true: research.hasUnlocked(p);
if (researched) openCategory(p, category, true, selected_page, experimental);
else if (!Research.isResearching(p)){ if (researched) openCategory(p, category, true, selected_page, experimental);
if (p.getGameMode() == GameMode.CREATIVE) { else if (!Research.isResearching(p)){
research.unlock(p, true); if (p.getGameMode() == GameMode.CREATIVE) {
openCategory(p, category, survival, selected_page, experimental); research.unlock(p, true);
} openCategory(p, category, survival, selected_page, experimental);
else { }
research.unlock(p, false); else {
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() { research.unlock(p, false);
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() { @Override
openCategory(p, category, survival, selected_page, experimental); public void run() {
} openCategory(p, category, survival, selected_page, experimental);
}, 103L); }
}, 103L);
}
} }
} }
else Messages.local.sendTranslation(p, "messages.not-enough-xp", true);
return false;
} }
else Messages.local.sendTranslation(p, "messages.not-enough-xp", true); });
return false; }
}
});
} }
else { else {
menu.addItem(index, new CustomItem(Material.STAINED_GLASS_PANE, StringUtils.formatItemName(sfitem.getItem(), false), 14, new String[] {"", "&rYou do not have Permission", "&rto access this Item"})); menu.addItem(index, new CustomItem(Material.STAINED_GLASS_PANE, StringUtils.formatItemName(sfitem.getItem(), false), 14, new String[] {"", "&rYou do not have Permission", "&rto access this Item"}));