1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 11:45:51 +00:00

Merge pull request #448 from dpkirchner/master

Don't consume XP until we are about to unlock the requested research.
This commit is contained in:
TheBusyBiscuit 2017-10-07 09:15:57 +02:00 committed by GitHub
commit 5dd53540ee

View File

@ -672,34 +672,37 @@ public class SlimefunGuide {
@Override @Override
public void run(final Player p) { public void run(final Player p) {
if (research.canUnlock(p)) { if (!Research.isResearching(p)) {
p.setLevel(p.getLevel() - research.getCost()); if (research.canUnlock(p)) {
if (research.hasUnlocked(p))
if (research.hasUnlocked(p)) openCategory(p, category, true, selected_page, experimental); openCategory(p, category, true, selected_page, experimental);
else if (!Research.isResearching(p)) { else {
if (p.getGameMode() == GameMode.CREATIVE) { if (!(p.getGameMode() == GameMode.CREATIVE && Research.creative_research)) {
research.unlock(p, true); p.setLevel(p.getLevel() - research.getCost());
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() { }
@Override if (p.getGameMode() == GameMode.CREATIVE) {
public void run() { research.unlock(p, true);
openCategory(p, category, survival, selected_page, experimental); Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
}
}, 1L); @Override
} public void run() {
else { openCategory(p, category, survival, selected_page, experimental);
research.unlock(p, false); }
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() { }, 1L);
} else {
@Override research.unlock(p, false);
public void run() { Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
openCategory(p, category, survival, selected_page, experimental);
} @Override
}, 103L); 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);
}
} }
}); });
} }
@ -859,30 +862,31 @@ public class SlimefunGuide {
@Override @Override
public boolean onClick(final Player p, int slot, ItemStack item, ClickAction action) { public boolean onClick(final Player p, int slot, ItemStack item, ClickAction action) {
if (research.canUnlock(p)) { if (!Research.isResearching(p)) {
if (!(p.getGameMode() == GameMode.CREATIVE && Research.creative_research)) { if (research.canUnlock(p)) {
p.setLevel(p.getLevel() - research.getCost()); if (research.hasUnlocked(p))
} openCategory(p, category, true, selected_page, experimental);
else {
if (research.hasUnlocked(p)) openCategory(p, category, true, selected_page, experimental); if (!(p.getGameMode() == GameMode.CREATIVE && Research.creative_research)) {
else if (!Research.isResearching(p)) { p.setLevel(p.getLevel() - research.getCost());
if (p.getGameMode() == GameMode.CREATIVE) { }
research.unlock(p, Research.creative_research);
openCategory(p, category, survival, selected_page, experimental); if (p.getGameMode() == GameMode.CREATIVE) {
} research.unlock(p, Research.creative_research);
else { openCategory(p, category, survival, selected_page, experimental);
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);
return false; return false;
} }
}); });