Skip to content

Commit

Permalink
Merge branch 'scenario-api'
Browse files Browse the repository at this point in the history
  • Loading branch information
PdeBot committed Jan 9, 2021
2 parents bc3971c + 2db1ffb commit 46eb5dd
Show file tree
Hide file tree
Showing 24 changed files with 440 additions and 250 deletions.
4 changes: 2 additions & 2 deletions src/main/java/com/gmail/val59000mc/UhcCore.java
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,8 @@ private void addBStats(){
metrics.addCustomChart(new Metrics.AdvancedPie("scenarios", () -> {
Map<String, Integer> scenarios = new HashMap<>();

for (Scenario scenario : gameManager.getScenarioManager().getActiveScenarios()){
scenarios.put(scenario.getName(), 1);
for (Scenario scenario : gameManager.getScenarioManager().getEnabledScenarios()){
scenarios.put(scenario.getKey(), 1);
}

return scenarios;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public boolean onCommand(CommandSender sender, Command command, String s, String
}
Player player = (Player) sender;

if (!scenarioManager.isActivated(Scenario.TEAMINVENTORY)){
if (!scenarioManager.isEnabled(Scenario.TEAM_INVENTORY)){
player.sendMessage(Lang.SCENARIO_TEAMINVENTORY_DISABLED);
return true;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.gmail.val59000mc.configuration;

import com.gmail.val59000mc.configuration.options.*;
import com.gmail.val59000mc.scenarios.Scenario;
import org.bukkit.Difficulty;
import org.bukkit.Material;
import org.bukkit.Sound;
Expand Down Expand Up @@ -70,8 +69,8 @@ public class MainConfig extends YamlFile {
public static final Option<Boolean> ENABLE_DAY_NIGHT_CYCLE = new Option<>("customize-game-behavior.day-night-cycle.enable",false);
public static final Option<Integer> TIME_BEFORE_PERMANENT_DAY = new Option<>("customize-game-behavior.day-night-cycle.time-before-permanent-day",1200);
public static final Option<Boolean> ENABLE_DEFAULT_SCENARIOS = new Option<>("customize-game-behavior.enable-default-scenarios", false);
public static final EnumListOption<Scenario> DEFAULT_SCENARIOS = new EnumListOption<>("customize-game-behavior.active-scenarios", Scenario.class);
public static final EnumListOption<Scenario> SCENARIO_VOTING_BLACKLIST = new EnumListOption<>("customize-game-behavior.scenarios.voting.black-list", Scenario.class);
public static final Option<List<String>> DEFAULT_SCENARIOS = new Option<>("customize-game-behavior.active-scenarios");
public static final Option<List<String>> SCENARIO_VOTING_BLACKLIST = new Option<>("customize-game-behavior.scenarios.voting.black-list");
public static final EnumOption<Sound> SOUND_ON_PLAYER_DEATH = new EnumOption<>("customize-game-behavior.sound-on-player-death", Sound.class, "ENTITY_WITHER_SPAWN");
public static final EnumListOption<EntityType> AFFECTED_GOLD_DROP_MOBS = new EnumListOption<>("customize-game-behavior.add-gold-drops.affected-mobs", EntityType.class);

Expand Down
69 changes: 45 additions & 24 deletions src/main/java/com/gmail/val59000mc/languages/Lang.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.FileConfiguration;

Expand Down Expand Up @@ -215,6 +216,7 @@ private void loadLangConfig() {
}

YamlFile lang;
boolean pathChanges = false;

try{
lang = FileUtils.saveResourceIfNotAvailable("lang.yml");
Expand Down Expand Up @@ -389,40 +391,59 @@ private void loadLangConfig() {

// load scenario info
JsonObject defaultInfo = getDefaultScenarioInfo();
for (Scenario scenario : Scenario.values()){
JsonObject scenarioDefault = defaultInfo.get(scenario.name()).getAsJsonObject();
scenario.setName(getString(lang, "scenarios." + scenario.getLowerCase() + ".name", scenarioDefault.get("name").getAsString()));
scenario.setDescription(getStringList(lang, "scenarios." + scenario.getLowerCase() + ".description", scenarioDefault.get("description").getAsJsonArray()));

if (lang.contains("scenarios." + scenario.getLowerCase() + ".info")){
lang.remove("scenarios." + scenario.getLowerCase() + ".info");
for (Scenario scenario : Scenario.BUILD_IN_SCENARIOS){
JsonObject scenarioDefault = defaultInfo.get(scenario.getKey()).getAsJsonObject();
String defaultName = scenarioDefault.get("name").getAsString();
JsonArray defaultDescription = scenarioDefault.get("description").getAsJsonArray();

String path = "scenarios." + scenario.getKey();

ConfigurationSection section = lang.getConfigurationSection(path);
if (section == null){
// Perhaps stored under old path
String oldPath = "scenarios." + scenario.getKey().replace("_", "");
section = lang.getConfigurationSection(oldPath);

// TODO: Remove conversion system on future update!
if (section != null){
lang.set(path, section);
lang.remove(oldPath);
pathChanges = true;
}
}

Scenario.Info info = new Scenario.Info(
getString(lang, path + ".name", defaultName),
getStringList(lang, path + ".description", defaultDescription)
);

scenario.setInfo(info);
}

SCENARIO_BESTPVE_ADDED = getString(lang, "scenarios.bestpve.added", "&4[Best PvE] &aYou are added to the PvE list.");
SCENARIO_BESTPVE_REMOVED = getString(lang, "scenarios.bestpve.removed", "&4[Best PvE] &cYou are now removed from the PvE list. Getting a kill will add you back to the list.");
SCENARIO_BESTPVE_BACK = getString(lang, "scenarios.bestpve.back", "&4[Best PvE] &aYou are added back to the PvE list.");
SCENARIO_BESTPVE_ADDED = getString(lang, "scenarios.best_pve.added", "&4[Best PvE] &aYou are added to the PvE list.");
SCENARIO_BESTPVE_REMOVED = getString(lang, "scenarios.best_pve.removed", "&4[Best PvE] &cYou are now removed from the PvE list. Getting a kill will add you back to the list.");
SCENARIO_BESTPVE_BACK = getString(lang, "scenarios.best_pve.back", "&4[Best PvE] &aYou are added back to the PvE list.");
SCENARIO_BOWLESS_ERROR = getString(lang, "scenarios.bowless.error", "&4[Bowless] &cYou can't craft bows!");
SCENARIO_HORSELESS_ERROR = getString(lang, "scenarios.horseless.error", "&4[Horseless] &cYou can't ride that horse!");
SCENARIO_NOCLEAN_INVULNERABLE = getString(lang, "scenarios.noclean.invulnerable", "&4[NoClean] &aYou are now invulnerable for 30 seconds!");
SCENARIO_NOCLEAN_VULNERABLE = getString(lang, "scenarios.noclean.vulnerable", "&4[NoClean] &cYou can now take damage again!");
SCENARIO_NOCLEAN_ERROR = getString(lang, "scenarios.noclean.error", "&4[NoClean] &cYou can't damage this player!");
SCENARIO_NOCLEAN_INVULNERABLE = getString(lang, "scenarios.no_clean.invulnerable", "&4[NoClean] &aYou are now invulnerable for 30 seconds!");
SCENARIO_NOCLEAN_VULNERABLE = getString(lang, "scenarios.no_clean.vulnerable", "&4[NoClean] &cYou can now take damage again!");
SCENARIO_NOCLEAN_ERROR = getString(lang, "scenarios.no_clean.error", "&4[NoClean] &cYou can't damage this player!");
SCENARIO_RODLESS_ERROR = getString(lang, "scenarios.rodless.error", "&4[Rodless] &cYou can't craft fishing rods!");
SCENARIO_SHIELDLESS_ERROR = getString(lang, "scenarios.shieldless.error", "&4[Shieldless] &cYou can't craft shields!");
SCENARIO_SWITCHEROO_SWITCH = getString(lang, "scenarios.switcheroo.switch", "&4[Switcheroo] &6You have switched positions with &3%player%");
SCENARIO_LOVEATFIRSTSIGHT_JOIN_ERROR = getString(lang, "scenarios.loveatfirstsight.join-error", "&cCan't join teams, Love at first sight is enabled!");
SCENARIO_LOVEATFIRSTSIGHT_JOIN_BROADCAST = getString(lang, "scenarios.loveatfirstsight.join-broadcast", "&4[Love At First Sight] &a%player% has joined %leader%'s team");
SCENARIO_SKYHIGH_DAMAGE = getString(lang, "scenarios.skyhigh.damage", "&4[SkyHigh] &cYou're taking damage as your under y=120");
SCENARIO_TEAMINVENTORY_ERROR = getString(lang, "scenarios.teaminventory.error", "&cYou may only open your team's inventory while playing!");
SCENARIO_TEAMINVENTORY_ERROR = getString(lang, "scenarios.teaminventory.disabled", "&cTeam Inventory is currently disabled!");
SCENARIO_TEAMINVENTORY_OPEN = getString(lang, "scenarios.teaminventory.open", "&aOpening team inventory ...");
SCENARIO_SILENTNIGHT_ERROR = getString(lang, "scenarios.silentnight.error", "&4[Silent Night] &cSilent Night is enabled");
SCENARIO_WEAKESTLINK_KILL = getString(lang, "scenarios.weakestlink.kill", "&4[Weakest Link] &c%player% has been killed!");
SCENARIO_NOGOINGBACK_ERROR = getString(lang, "scenarios.nogoingback.error", "&4[No Going Back] &cYou are stuck in the nether!");
SCENARIO_MONSTERSINC_ERROR = getString(lang, "scenarios.monstersinc.error", "&4[Monsters Inc.] &cStop that!");
SCENARIO_LOVEATFIRSTSIGHT_JOIN_ERROR = getString(lang, "scenarios.love_at_first_sight.join-error", "&cCan't join teams, Love at first sight is enabled!");
SCENARIO_LOVEATFIRSTSIGHT_JOIN_BROADCAST = getString(lang, "scenarios.love_at_first_sight.join-broadcast", "&4[Love At First Sight] &a%player% has joined %leader%'s team");
SCENARIO_SKYHIGH_DAMAGE = getString(lang, "scenarios.sky_high.damage", "&4[Sky High] &cYou're taking damage as your under y=120");
SCENARIO_TEAMINVENTORY_ERROR = getString(lang, "scenarios.team_inventory.error", "&cYou may only open your team's inventory while playing!");
SCENARIO_TEAMINVENTORY_ERROR = getString(lang, "scenarios.team_inventory.disabled", "&cTeam Inventory is currently disabled!");
SCENARIO_TEAMINVENTORY_OPEN = getString(lang, "scenarios.team_inventory.open", "&aOpening team inventory ...");
SCENARIO_SILENTNIGHT_ERROR = getString(lang, "scenarios.silent_night.error", "&4[Silent Night] &cSilent Night is enabled");
SCENARIO_WEAKESTLINK_KILL = getString(lang, "scenarios.weakest_link.kill", "&4[Weakest Link] &c%player% has been killed!");
SCENARIO_NOGOINGBACK_ERROR = getString(lang, "scenarios.no_going_back.error", "&4[No Going Back] &cYou are stuck in the nether!");
SCENARIO_MONSTERSINC_ERROR = getString(lang, "scenarios.monsters_inc.error", "&4[Monsters Inc.] &cStop that!");
SCENARIO_TIMEBOMB_CHEST = getString(lang, "scenarios.timebomb.chest", "&6&l%player%'s Timebomb");

if (lang.addedDefaultValues()) {
if (lang.addedDefaultValues() || pathChanges) {
try {
lang.save(langFile);
} catch (IOException ex) {
Expand Down
10 changes: 5 additions & 5 deletions src/main/java/com/gmail/val59000mc/listeners/ItemsListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -440,16 +440,16 @@ private void handleScenarioInventory(InventoryClickEvent e){
}

// Clicked scenario
Scenario scenario = Scenario.getScenario(meta.getDisplayName());
Scenario scenario = scenarioManager.getScenario(meta.getDisplayName());

// Clicked item is not a scenario item
if (scenario == null){
return;
}

// Send scenario info
player.sendMessage(Lang.SCENARIO_GLOBAL_DESCRIPTION_HEADER.replace("%scenario%", scenario.getName()));
scenario.getDescription().forEach(s -> player.sendMessage(Lang.SCENARIO_GLOBAL_DESCRIPTION_PREFIX + s));
player.sendMessage(Lang.SCENARIO_GLOBAL_DESCRIPTION_HEADER.replace("%scenario%", scenario.getInfo().getName()));
scenario.getInfo().getDescription().forEach(s -> player.sendMessage(Lang.SCENARIO_GLOBAL_DESCRIPTION_PREFIX + s));
}else if (editInventory){
// Handle back item
if (item.getItemMeta().getDisplayName().equals(Lang.SCENARIO_GLOBAL_ITEM_BACK)){
Expand All @@ -459,7 +459,7 @@ private void handleScenarioInventory(InventoryClickEvent e){
}

// Clicked scenario
Scenario scenario = Scenario.getScenario(meta.getDisplayName());
Scenario scenario = scenarioManager.getScenario(meta.getDisplayName());

// toggle scenario
scenarioManager.toggleScenario(scenario);
Expand All @@ -470,7 +470,7 @@ private void handleScenarioInventory(InventoryClickEvent e){
UhcPlayer uhcPlayer = pm.getUhcPlayer(player);

// Clicked scenario
Scenario scenario = Scenario.getScenario(meta.getDisplayName());
Scenario scenario = scenarioManager.getScenario(meta.getDisplayName());

// toggle scenario
if (uhcPlayer.getScenarioVotes().contains(scenario)){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,12 @@ public void onPlayerDeath(PlayerDeathEvent event){
}

// Drop the team inventory if the last player on a team was killed
if (sm.isActivated(Scenario.TEAMINVENTORY))
if (sm.isEnabled(Scenario.TEAM_INVENTORY))
{
UhcTeam team = uhcPlayer.getTeam();
if (team.getPlayingMemberCount() == 1)
{
((TeamInventoryListener) sm.getScenarioListener(Scenario.TEAMINVENTORY)).dropTeamInventory(team, player.getLocation());
((TeamInventoryListener) sm.getScenarioListener(Scenario.TEAM_INVENTORY)).dropTeamInventory(team, player.getLocation());
}
}

Expand All @@ -102,7 +102,7 @@ public void onPlayerDeath(PlayerDeathEvent event){
uhcPlayer.getStoredItems().addAll(event.getDrops());

// eliminations
if (!sm.isActivated(Scenario.SILENTNIGHT) || !((SilentNightListener) sm.getScenarioListener(Scenario.SILENTNIGHT)).isNightMode()) {
if (!sm.isEnabled(Scenario.SILENT_NIGHT) || !((SilentNightListener) sm.getScenarioListener(Scenario.SILENT_NIGHT)).isNightMode()) {
gm.broadcastInfoMessage(Lang.PLAYERS_ELIMINATED.replace("%player%", player.getName()));
}

Expand All @@ -111,7 +111,7 @@ public void onPlayerDeath(PlayerDeathEvent event){
}

if(cfg.get(MainConfig.ENABLE_GOLDEN_HEADS)){
if (cfg.get(MainConfig.PLACE_HEAD_ON_FENCE) && !gm.getScenarioManager().isActivated(Scenario.TIMEBOMB)){
if (cfg.get(MainConfig.PLACE_HEAD_ON_FENCE) && !gm.getScenarioManager().isEnabled(Scenario.TIMEBOMB)){
// place head on fence
Location loc = player.getLocation().clone().add(1,0,0);
loc.getBlock().setType(UniversalMaterial.OAK_FENCE.getType());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public void onPlayerPortalEvent (PlayerPortalEvent event){
}

// No Going back!
if (gm.getScenarioManager().isActivated(Scenario.NOGOINGBACK) && event.getFrom().getWorld().getEnvironment() == Environment.NETHER){
if (gm.getScenarioManager().isEnabled(Scenario.NO_GOING_BACK) && event.getFrom().getWorld().getEnvironment() == Environment.NETHER){
player.sendMessage(Lang.SCENARIO_NOGOINGBACK_ERROR);
event.setCancelled(true);
return;
Expand Down
10 changes: 5 additions & 5 deletions src/main/java/com/gmail/val59000mc/players/PlayersManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ public void playerJoinsTheGame(Player player){
private void autoAssignPlayerToTeam(UhcPlayer uhcPlayer) {
GameManager gm = GameManager.getGameManager();

if (gm.getScenarioManager().isActivated(Scenario.LOVEATFIRSTSIGHT)){
if (gm.getScenarioManager().isEnabled(Scenario.LOVE_AT_FIRST_SIGHT)){
return;
}

Expand Down Expand Up @@ -891,12 +891,12 @@ public void killOfflineUhcPlayer(UhcPlayer uhcPlayer, @Nullable Location locatio
}

// Drop the team inventory if the last player on a team was killed
if (sm.isActivated(Scenario.TEAMINVENTORY))
if (sm.isEnabled(Scenario.TEAM_INVENTORY))
{
UhcTeam team = uhcPlayer.getTeam();
if (team.getPlayingMemberCount() == 1)
{
((TeamInventoryListener) sm.getScenarioListener(Scenario.TEAMINVENTORY)).dropTeamInventory(team, location);
((TeamInventoryListener) sm.getScenarioListener(Scenario.TEAM_INVENTORY)).dropTeamInventory(team, location);
}
}

Expand All @@ -905,7 +905,7 @@ public void killOfflineUhcPlayer(UhcPlayer uhcPlayer, @Nullable Location locatio
uhcPlayer.getStoredItems().addAll(playerDrops);

// eliminations
if (!sm.isActivated(Scenario.SILENTNIGHT) || !((SilentNightListener) sm.getScenarioListener(Scenario.SILENTNIGHT)).isNightMode()) {
if (!sm.isEnabled(Scenario.SILENT_NIGHT) || !((SilentNightListener) sm.getScenarioListener(Scenario.SILENT_NIGHT)).isNightMode()) {
gm.broadcastInfoMessage(Lang.PLAYERS_ELIMINATED.replace("%player%", uhcPlayer.getName()));
}

Expand All @@ -914,7 +914,7 @@ public void killOfflineUhcPlayer(UhcPlayer uhcPlayer, @Nullable Location locatio
}

if(location != null && cfg.get(MainConfig.ENABLE_GOLDEN_HEADS)){
if (cfg.get(MainConfig.PLACE_HEAD_ON_FENCE) && !gm.getScenarioManager().isActivated(Scenario.TIMEBOMB)){
if (cfg.get(MainConfig.PLACE_HEAD_ON_FENCE) && !gm.getScenarioManager().isEnabled(Scenario.TIMEBOMB)){
// place head on fence
Location loc = location.clone().add(1,0,0);
loc.getBlock().setType(UniversalMaterial.OAK_FENCE.getType());
Expand Down
Loading

0 comments on commit 46eb5dd

Please sign in to comment.