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;
for (final Category category: Category.list()) {
if (tier < category.getTier()) {
if (survival) {
for (final GuideHandler handler: Slimefun.getGuideHandlers(tier)) {
handler.addEntry(texts, tooltips);
actions.add(new PlayerRunnable(2) {
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 (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
public void run(Player p) {
handler.run(p, survival);
public void run(final Player p) {
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
openCategory(p, category, survival, 1, experimental);
}
}, 1L);
}
});
}
}
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()) {
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) {
@ -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) {
@ -314,7 +329,19 @@ public class SlimefunGuide {
else {
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)) {
menu.addItem(index, category.getItem());
menu.addMenuClickHandler(index, new MenuClickHandler() {
@ -397,75 +424,77 @@ public class SlimefunGuide {
for (final SlimefunItem item: category.getItems()) {
if (Slimefun.hasPermission(p, item, false)) {
if (survival && !Slimefun.hasUnlocked(p, item, false) && item.getResearch() != null) {
texts.add(shorten("§7", StringUtils.formatItemName(item.getItem(), false)));
final int cost = SlimefunStartup.getResearchCfg().getInt(item.getResearch().getID() + ".cost");
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) {
boolean canBuy = false;
if (p.getGameMode() == GameMode.CREATIVE) canBuy = true;
else if (p.getLevel() >= cost) {
p.setLevel(p.getLevel() - cost);
canBuy = true;
}
if (canBuy) {
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 (p.getGameMode() == GameMode.CREATIVE) {
research.unlock(p, true);
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
openCategory(p, category, survival, selected_page, experimental);
}
}, 1L);
}
else {
research.unlock(p, false);
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
openCategory(p, category, survival, selected_page, experimental);
}
}, 103L);
if (Slimefun.isEnabled(p, item, false)) {
if (survival && !Slimefun.hasUnlocked(p, item, false) && item.getResearch() != null) {
texts.add(shorten("§7", StringUtils.formatItemName(item.getItem(), false)));
final int cost = SlimefunStartup.getResearchCfg().getInt(item.getResearch().getID() + ".cost");
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) {
boolean canBuy = false;
if (p.getGameMode() == GameMode.CREATIVE) canBuy = true;
else if (p.getLevel() >= cost) {
p.setLevel(p.getLevel() - cost);
canBuy = true;
}
if (canBuy) {
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 (p.getGameMode() == GameMode.CREATIVE) {
research.unlock(p, true);
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
openCategory(p, category, survival, selected_page, experimental);
}
}, 1L);
}
else {
research.unlock(p, false);
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
openCategory(p, category, survival, selected_page, experimental);
}
}, 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);
}
});
}
tooltip.append("\n\n§e§oClick for more Info");
tooltips.add(tooltip.toString());
actions.add(new PlayerRunnable(2) {
else {
texts.add(shorten("§a", StringUtils.formatItemName(item.getItem(), false)));
@Override
public void run(Player p) {
displayItem(p, item.getItem(), true, experimental, 0);
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);
}
}
});
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 {
@ -591,44 +620,46 @@ public class SlimefunGuide {
final SlimefunItem sfitem = category.getItems().get(target);
if (survival && !Slimefun.hasUnlocked(p, sfitem.getItem(), false) && sfitem.getResearch() != null) {
if (Slimefun.hasPermission(p, sfitem, false)) {
final int cost = SlimefunStartup.getResearchCfg().getInt(sfitem.getResearch().getID() + ".cost");
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) {
boolean canBuy = false;
if (p.getGameMode() == GameMode.CREATIVE) canBuy = true;
else if (p.getLevel() >= cost) {
p.setLevel(p.getLevel() - cost);
canBuy = true;
}
if (canBuy) {
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 (p.getGameMode() == GameMode.CREATIVE) {
research.unlock(p, true);
openCategory(p, category, survival, selected_page, experimental);
}
else {
research.unlock(p, false);
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
openCategory(p, category, survival, selected_page, experimental);
}
}, 103L);
if (Slimefun.isEnabled(p, sfitem, false)) {
final int cost = SlimefunStartup.getResearchCfg().getInt(sfitem.getResearch().getID() + ".cost");
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) {
boolean canBuy = false;
if (p.getGameMode() == GameMode.CREATIVE) canBuy = true;
else if (p.getLevel() >= cost) {
p.setLevel(p.getLevel() - cost);
canBuy = true;
}
if (canBuy) {
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 (p.getGameMode() == GameMode.CREATIVE) {
research.unlock(p, true);
openCategory(p, category, survival, selected_page, experimental);
}
else {
research.unlock(p, false);
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
openCategory(p, category, survival, selected_page, experimental);
}
}, 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 {
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"}));