Small bug fix + Code added to run randomized missions

Signed-off-by: DroppingAnvil <dr0pping.4nvi1@gmail.com>
This commit is contained in:
DroppingAnvil 2019-11-14 02:27:29 -06:00
parent 8bde1385fc
commit bd77c8266c
5 changed files with 105 additions and 4 deletions

View File

@ -48,6 +48,10 @@ public class CmdHome extends FCommand {
if (context.args.size() == 1) {
Faction faction = context.argAsFaction(0);
if (faction == null) return;
if (faction.getAccess(context.fPlayer, PermissableAction.HOME) != Access.ALLOW) {
context.msg(TL.GENERIC_FPERM_NOPERMISSION, "teleport home");
return;
}
context.faction = faction;
}

View File

@ -13,7 +13,6 @@ import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.*;
public class MissionGUI implements FactionGUI {
@ -44,6 +43,9 @@ public class MissionGUI implements FactionGUI {
if (missionName == null) {
return;
}
//if (missionName.equals(plugin.color(FactionsPlugin.getInstance().getConfig().getString("Randomization.Start-Item.Disallowed.Name")))) {
//return;
//}
if (fPlayer.getFaction().getMissions().containsKey(missionName)) {
fPlayer.msg(TL.MISSION_MISSION_ACTIVE);
return;
@ -63,6 +65,24 @@ public class MissionGUI implements FactionGUI {
if (missionSection == null) {
return;
}
//Coming soon (:
//if (missionName.equals(plugin.color(FactionsPlugin.getInstance().getConfig().getString("Randomization.Start-Item.Allowed.Name")))) {
//Mission pickedMission = null;
//Set<String> keys = plugin.getConfig().getConfigurationSection("Missions").getKeys(false);
//while (pickedMission == null) {
//Random r = new Random();
//int pick = r.nextInt(keys.size() - 1);
//if (!keys.toArray()[pick].toString().equals("FillItem")) {
//missionName = keys.toArray()[pick].toString();
//pickedMission = new Mission(missionName, plugin.getConfig().getString("Missions." + missionName + ".Mission.Type"));
//fPlayer.getFaction().getMissions().put(missionName, pickedMission);
//fPlayer.msg(TL.MISSION_MISSION_STARTED, fPlayer.describeTo(fPlayer.getFaction()), plugin.color(plugin.getConfig().getString("Missions." + missionName + ".Name")));
//build();
//fPlayer.getPlayer().openInventory(inventory);
//return;
//}
//}
//}
Mission mission = new Mission(missionName, missionSection.getString("Type"));
fPlayer.getFaction().getMissions().put(missionName, mission);
fPlayer.msg(TL.MISSION_MISSION_STARTED, fPlayer.describeTo(fPlayer.getFaction()), plugin.color(section.getString("Name")));
@ -110,6 +130,46 @@ public class MissionGUI implements FactionGUI {
slots.put(slot, key);
}
}
if (plugin.getConfig().getBoolean("Randomization.Enabled")) {
ItemStack start = null;
ItemMeta meta;
start = XMaterial.matchXMaterial(plugin.getConfig().getString("Randomization.Start-Item.Allowed.Material")).parseItem();
meta = start.getItemMeta();
meta.setDisplayName(plugin.color(plugin.getConfig().getString("Randomization.Start-Item.Allowed.Name")));
List<String> loree = meta.getLore();
loree.clear();
for (String string : plugin.getConfig().getStringList("Randomization.Start-Item.Allowed.Lore")) {
loree.add(plugin.color(string));
}
meta.setLore(loree);
start.setItemMeta(meta);
if (fPlayer.getFaction().getCompletedMissions().size() >= configurationSection.getKeys(false).size() - 1 && plugin.getConfig().getBoolean("DenyMissionsMoreThenOnce")) {
start = XMaterial.matchXMaterial(plugin.getConfig().getString("Randomization.Start-Item.Disallowed.Material")).parseItem();
meta = start.getItemMeta();
meta.setDisplayName(plugin.color(plugin.getConfig().getString("Randomization.Start-Item.Disallowed.Name")));
List<String> lore = meta.getLore();
lore.clear();
for (String string : plugin.getConfig().getStringList("Randomization.Start-Item.Disallowed.Lore")) {
lore.add(plugin.color(string).replace("%reason%", TL.MISSION_MISSION_ALL_COMPLETED.toString()));
}
meta.setLore(lore);
start.setItemMeta(meta);
}
if (fPlayer.getFaction().getMissions().size() >= plugin.getConfig().getInt("MaximumMissionsAllowedAtOnce")) {
start = XMaterial.matchXMaterial(plugin.getConfig().getString("Randomization.Start-Item.Disallowed.Material")).parseItem();
meta = start.getItemMeta();
meta.setDisplayName(plugin.color(plugin.getConfig().getString("Randomization.Start-Item.Disallowed.Name")));
List<String> lore = meta.getLore();
lore.clear();
for (String string : plugin.getConfig().getStringList("Randomization.Start-Item.Disallowed.Lore")) {
lore.add(plugin.color(string).replace("%reason%", FactionsPlugin.getInstance().txt.parse(TL.MISSION_MISSION_MAX_ALLOWED.toString(), plugin.getConfig().getInt("MaximumMissionsAllowedAtOnce"))));
}
meta.setLore(lore);
start.setItemMeta(meta);
}
inventory.setItem(plugin.getConfig().getInt("Randomization.Start-Item.Slot"), start);
slots.put(plugin.getConfig().getInt("Randomization.Start-Item.Slot"), start.getItemMeta().getDisplayName());
}
}
public Inventory getInventory() {

View File

@ -5,9 +5,11 @@ import org.bukkit.configuration.file.FileConfiguration;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class Updater {
public static double currentVersion = 1.0;
public static double currentVersion = 1.1;
public static void updateIfNeeded(FileConfiguration conf) {
double version = conf.getDouble("Config-Version", 0);
//Previous version
@ -17,6 +19,25 @@ public class Updater {
conf.set("Config-Version", 1.0);
version = 1.0;
}
if (version == 1.0) {
FactionsPlugin.getInstance().log("Updating config from version 1.0 to 1.1");
FactionsPlugin.getInstance().log("Adding randomization support for f missions...");
conf.set("Randomization.Enabled", false);
conf.set("Randomization.Start-Item.Allowed.Name", "&aStart!");
conf.set("Randomization.Start-Item.Allowed.Material", "GREEN_STAINED_GLASS_PANE");
List<String> lore = new ArrayList<>();
lore.add("&aStart a new mission!");
conf.set("Randomization.Start-Item.Allowed.Lore", lore);
conf.set("Randomization.Start-Item.Disallowed.Name", "&4Cannot start new mission");
conf.set("Randomization.Start-Item.Disallowed.Material", "GRAY_STAINED_GLASS_PANE");
lore.clear();
lore.add("&4%reason%");
conf.set("Randomization.Start-Item.Disallowed.Lore", lore);
conf.set("Randomization.Start-Item.Slot", 23);
conf.set("Config-Version", 1.1);
version = 1.1;
}
//End with save + reload
try {
conf.save(new File("plugins/Factions/config.yml"));

View File

@ -1036,7 +1036,8 @@ public enum TL {
MISSION_MISSION_STARTED("&f%1$s &dstarted the %2$s &fmission"),
MISSION_ALREAD_COMPLETED("&c&l[!] &7You may not restart a mission you have already completed"),
MISSION_MISSION_ACTIVE("&c&l[!] &7This mission is currently active!"),
MISSION_MISSION_MAX_ALLOWED("&c&l[!] &7You may not have more then &b%1$s &7missions active at once."),
MISSION_MISSION_MAX_ALLOWED("&c&l[!] &7You may not have more than &b%1$s &7missions active at once."),
MISSION_MISSION_ALL_COMPLETED("&c&l[!] &7Your faction has completed all available missions."),
MISSION_MISSION_FINISHED("&c&l[!] &7Your faction has successfully completed %1$s mission!"),
COMMAND_MISSION_DESCRIPTION("Opens missions gui"),
// F Global \\

View File

@ -1,4 +1,4 @@
Config-Version: 1.0
Config-Version: 1.1
# SaberFactions by Driftay
# Report issues: https://github.com/Driftay/Saber-Factions/issues/new
# Live support: https://discord.gg/TFxWKeX
@ -753,6 +753,21 @@ Missions-Enabled: true
Missions-GUI-Title: '&8&lFaction Missions'
MaximumMissionsAllowedAtOnce: 1
Mission-Progress-Format: '&b&lProgression: &f{progress}&7/&e{total}'
Randomization:
Enabled: false
Start-Item:
# Allowed means that they are under maximum allowed missions at one AND if applicable they have not completed every mission more than once
Allowed:
Name: "&aStart!"
Material: GREEN_STAINED_GLASS_PANE
Lore: "&2Start a new mission!"
Disallowed:
# Placeholder %reason% supported throughout this section
Name: "&4Cannot start new mission"
Material: GRAY_STAINED_GLASS_PANE
Lore:
- '&4%reason%'
Slot: 23
DenyMissionsMoreThenOnce: true #this setting to true, means that if they complete a mission they cannot redo the same mission
#Mission Types: KILL, MINE, PLACE, FISH, TAME, ENCHANT, CONSUME