Add setup() method to requirement API

This commit is contained in:
Daniel Saukel 2016-07-26 14:44:39 +02:00
parent 5042b57fc5
commit b175b2b50b
7 changed files with 63 additions and 41 deletions

View File

@ -25,12 +25,7 @@ import io.github.dre2n.commons.util.NumberUtil;
import io.github.dre2n.dungeonsxl.DungeonsXL;
import io.github.dre2n.dungeonsxl.game.GameRules;
import io.github.dre2n.dungeonsxl.game.GameType;
import io.github.dre2n.dungeonsxl.requirement.FeeLevelRequirement;
import io.github.dre2n.dungeonsxl.requirement.FeeMoneyRequirement;
import io.github.dre2n.dungeonsxl.requirement.GroupSizeRequirement;
import io.github.dre2n.dungeonsxl.requirement.PermissionRequirement;
import io.github.dre2n.dungeonsxl.requirement.Requirement;
import io.github.dre2n.dungeonsxl.requirement.RequirementTypeDefault;
import io.github.dre2n.dungeonsxl.util.DeserializationUtil;
import java.io.File;
import java.io.IOException;
@ -187,24 +182,10 @@ public class WorldConfig extends GameRules {
requirements = new ArrayList<>();
}
ConfigurationSection requirementSection = configFile.getConfigurationSection("requirements");
for (String identifier : configFile.getConfigurationSection("requirements").getKeys(false)) {
Requirement requirement = Requirement.create(plugin.getRequirementTypes().getByIdentifier(identifier));
// Check for built-in requirements
if (requirement.getType() == RequirementTypeDefault.FEE_MONEY) {
((FeeMoneyRequirement) requirement).setFee(configFile.getDouble("requirements.feeMoney"));
} else if (requirement.getType() == RequirementTypeDefault.FEE_LEVEL) {
((FeeLevelRequirement) requirement).setFee(configFile.getInt("requirements.feeLevel"));
} else if (requirement.getType() == RequirementTypeDefault.GROUP_SIZE) {
((GroupSizeRequirement) requirement).setMinimum(configFile.getInt("requirements.groupSize.minimum"));
((GroupSizeRequirement) requirement).setMaximum(configFile.getInt("requirements.groupSize.maximum"));
} else if (requirement.getType() == RequirementTypeDefault.PERMISSION) {
((PermissionRequirement) requirement).setPermissions(configFile.getStringList("requirements.permission"));
}
requirement.setup(requirementSection);
requirements.add(requirement);
}
}

View File

@ -20,6 +20,7 @@ import io.github.dre2n.commons.util.messageutil.MessageUtil;
import io.github.dre2n.dungeonsxl.config.DMessages;
import io.github.dre2n.dungeonsxl.player.DGamePlayer;
import io.github.dre2n.dungeonsxl.player.DSavePlayer;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
/**
@ -31,6 +32,7 @@ public class FeeLevelRequirement extends Requirement {
private int fee;
/* Getters and setters */
/**
* @return the fee
*/
@ -46,6 +48,17 @@ public class FeeLevelRequirement extends Requirement {
this.fee = fee;
}
@Override
public RequirementType getType() {
return type;
}
/* Actions */
@Override
public void setup(ConfigurationSection config) {
fee = config.getInt("feeLevel");
}
@Override
public boolean check(Player player) {
return player.getLevel() >= fee;
@ -63,9 +76,4 @@ public class FeeLevelRequirement extends Requirement {
MessageUtil.sendMessage(player, plugin.getMessageConfig().getMessage(DMessages.REQUIREMENT_FEE, fee + " levels"));
}
@Override
public RequirementType getType() {
return type;
}
}

View File

@ -18,6 +18,7 @@ package io.github.dre2n.dungeonsxl.requirement;
import io.github.dre2n.commons.util.messageutil.MessageUtil;
import io.github.dre2n.dungeonsxl.config.DMessages;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
/**
@ -29,6 +30,7 @@ public class FeeMoneyRequirement extends Requirement {
private double fee;
/* Getters and setters */
/**
* @return the fee
*/
@ -44,6 +46,17 @@ public class FeeMoneyRequirement extends Requirement {
this.fee = fee;
}
@Override
public RequirementType getType() {
return type;
}
/* Actions */
@Override
public void setup(ConfigurationSection config) {
fee = config.getDouble("feeMoney");
}
@Override
public boolean check(Player player) {
if (plugin.getEconomyProvider() == null) {
@ -63,9 +76,4 @@ public class FeeMoneyRequirement extends Requirement {
MessageUtil.sendMessage(player, plugin.getMessageConfig().getMessage(DMessages.REQUIREMENT_FEE, plugin.getEconomyProvider().format(fee)));
}
@Override
public RequirementType getType() {
return type;
}
}

View File

@ -17,6 +17,7 @@
package io.github.dre2n.dungeonsxl.requirement;
import io.github.dre2n.dungeonsxl.player.DGroup;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
/**
@ -59,6 +60,18 @@ public class GroupSizeRequirement extends Requirement {
this.maximum = maximum;
}
@Override
public RequirementType getType() {
return type;
}
/* Actions */
@Override
public void setup(ConfigurationSection config) {
minimum = config.getInt("groupSize.minimum");
maximum = config.getInt("groupSize.maximum");
}
@Override
public boolean check(Player player) {
DGroup dGroup = DGroup.getByPlayer(player);
@ -70,9 +83,4 @@ public class GroupSizeRequirement extends Requirement {
public void demand(Player player) {
}
@Override
public RequirementType getType() {
return type;
}
}

View File

@ -19,6 +19,7 @@ package io.github.dre2n.dungeonsxl.requirement;
import io.github.dre2n.dungeonsxl.player.DPermissions;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
/**
@ -52,6 +53,11 @@ public class PermissionRequirement extends Requirement {
}
/* Actions */
@Override
public void setup(ConfigurationSection config) {
permissions = config.getStringList("permission");
}
@Override
public boolean check(Player player) {
for (String permission : permissions) {

View File

@ -22,6 +22,7 @@ import io.github.dre2n.dungeonsxl.event.requirement.RequirementRegistrationEvent
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import org.bukkit.Bukkit;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
/**
@ -56,6 +57,8 @@ public abstract class Requirement {
}
/* Abstracts */
public abstract void setup(ConfigurationSection config);
public abstract boolean check(Player player);
public abstract void demand(Player player);

View File

@ -17,6 +17,7 @@
package io.github.dre2n.dungeonsxl.requirement;
import io.github.dre2n.commons.util.messageutil.MessageUtil;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
/**
@ -28,6 +29,7 @@ public class AwesomenessRequirement extends Requirement {
private int level;
/* Getters and setters */
/**
* @return the awesomeness level
*/
@ -43,6 +45,17 @@ public class AwesomenessRequirement extends Requirement {
this.level = level;
}
@Override
public RequirementType getType() {
return type;
}
/* Actions */
@Override
public void setup(ConfigurationSection config) {
this.level = config.getInt("awesomeness");
}
@Override
public boolean check(Player player) {
// Code that checks if the player has the requirement
@ -55,9 +68,4 @@ public class AwesomenessRequirement extends Requirement {
// Code that removes the requirement if it is a fee
}
@Override
public RequirementType getType() {
return type;
}
}