mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-08-03 21:15:28 +02:00
more work on command on level up and misc refactoring on unit tests
This commit is contained in:
@@ -1,20 +1,13 @@
|
||||
package com.gmail.nossr50.config;
|
||||
|
||||
import com.gmail.nossr50.commands.levelup.LevelUpCommand;
|
||||
import com.gmail.nossr50.commands.levelup.LevelUpCommandBuilder;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.util.LogUtils;
|
||||
import java.io.File;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class CommandOnLevelUpConfig extends BukkitConfig {
|
||||
|
||||
public static final String LEVEL_UP_COMMANDS = "level_up_commands";
|
||||
|
@@ -290,7 +290,7 @@ public class ExperienceConfig extends BukkitConfig {
|
||||
return config.getDouble(
|
||||
"Experience_Formula.Skill_Multiplier." + StringUtils.getCapitalized(
|
||||
skill.toString()),
|
||||
1);
|
||||
1D);
|
||||
}
|
||||
|
||||
/* Custom XP perk */
|
||||
|
@@ -710,7 +710,7 @@ public class McMMOPlayer implements Identified {
|
||||
*/
|
||||
public void applyXpGain(PrimarySkillType primarySkillType, float xp, XPGainReason xpGainReason,
|
||||
XPGainSource xpGainSource) {
|
||||
if (!mcMMO.p.getSkillTools().doesPlayerHaveSkillPermission(player, primarySkillType)) {
|
||||
if (!Permissions.skillEnabled(player, primarySkillType)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@@ -4,16 +4,13 @@ import com.gmail.nossr50.config.GeneralConfig;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
import com.gmail.nossr50.util.skills.SkillTools;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public enum PrimarySkillType {
|
||||
ACROBATICS,
|
||||
|
@@ -15,14 +15,13 @@ import com.gmail.nossr50.util.skills.RankUtils;
|
||||
import com.gmail.nossr50.util.skills.SkillTools;
|
||||
import com.gmail.nossr50.worldguard.WorldGuardManager;
|
||||
import com.gmail.nossr50.worldguard.WorldGuardUtils;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Set;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class SelfListener implements Listener {
|
||||
//Used in task scheduling and other things
|
||||
private final mcMMO plugin;
|
||||
@@ -63,7 +62,7 @@ public class SelfListener implements Listener {
|
||||
final Set<Integer> levelsAchieved = new LinkedHashSet<>();
|
||||
final Set<Integer> powerLevelsAchieved = new LinkedHashSet<>();
|
||||
int startingLevel = event.getSkillLevel() - event.getLevelsGained();
|
||||
int startingPowerLevel = mcMMOPlayer.getPowerLevel() - event.getLevelsGained();
|
||||
int startingPowerLevel = mmoPlayer.getPowerLevel() - event.getLevelsGained();
|
||||
for (int i = 0; i < event.getLevelsGained(); i++) {
|
||||
levelsAchieved.add(startingLevel + (i + 1));
|
||||
}
|
||||
@@ -71,7 +70,8 @@ public class SelfListener implements Listener {
|
||||
powerLevelsAchieved.add(startingPowerLevel + (i + 1));
|
||||
}
|
||||
|
||||
plugin.getLevelUpCommandManager().applySkillLevelUp(mcMMOPlayer, skill, levelsAchieved, powerLevelsAchieved);
|
||||
plugin.getLevelUpCommandManager()
|
||||
.applySkillLevelUp(mmoPlayer, skill, levelsAchieved, powerLevelsAchieved);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
|
@@ -4,6 +4,7 @@ import com.gmail.nossr50.chat.ChatManager;
|
||||
import com.gmail.nossr50.commands.CommandManager;
|
||||
import com.gmail.nossr50.commands.levelup.LevelUpCommandManager;
|
||||
import com.gmail.nossr50.config.AdvancedConfig;
|
||||
import com.gmail.nossr50.config.CommandOnLevelUpConfig;
|
||||
import com.gmail.nossr50.config.CoreSkillsConfig;
|
||||
import com.gmail.nossr50.config.CustomItemSupportConfig;
|
||||
import com.gmail.nossr50.config.GeneralConfig;
|
||||
@@ -87,10 +88,8 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
import org.bukkit.plugin.PluginDescriptionFile;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.bukkit.plugin.java.JavaPluginLoader;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
|
@@ -27,6 +27,7 @@ import com.gmail.nossr50.util.skills.CombatUtils;
|
||||
import com.gmail.nossr50.util.skills.RankUtils;
|
||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@@ -209,18 +210,18 @@ public class WoodcuttingManager extends SkillManager {
|
||||
*/
|
||||
@VisibleForTesting
|
||||
void processTree(Block block, Set<Block> treeFellerBlocks) {
|
||||
List<Block> futureCenterBlocks = new ArrayList<>();
|
||||
Collection<Block> futureCenterBlocks = new ArrayList<>();
|
||||
|
||||
// Check the block up and take different behavior (smaller search) if it's a log
|
||||
if (processTreeFellerTargetBlock(block.getRelative(BlockFace.UP), futureCenterBlocks,
|
||||
treeFellerBlocks)) {
|
||||
for (int[] dir : directions) {
|
||||
processTreeFellerTargetBlock(block.getRelative(dir[0], 0, dir[1]),
|
||||
futureCenterBlocks, treeFellerBlocks);
|
||||
|
||||
if (treeFellerReachedThreshold) {
|
||||
return;
|
||||
}
|
||||
|
||||
processTreeFellerTargetBlock(block.getRelative(dir[0], 0, dir[1]),
|
||||
futureCenterBlocks, treeFellerBlocks);
|
||||
}
|
||||
} else {
|
||||
// Cover DOWN
|
||||
@@ -229,12 +230,12 @@ public class WoodcuttingManager extends SkillManager {
|
||||
// Search in a cube
|
||||
for (int y = -1; y <= 1; y++) {
|
||||
for (int[] dir : directions) {
|
||||
processTreeFellerTargetBlock(block.getRelative(dir[0], y, dir[1]),
|
||||
futureCenterBlocks, treeFellerBlocks);
|
||||
|
||||
if (treeFellerReachedThreshold) {
|
||||
return;
|
||||
}
|
||||
|
||||
processTreeFellerTargetBlock(block.getRelative(dir[0], y, dir[1]),
|
||||
futureCenterBlocks, treeFellerBlocks);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -302,23 +303,24 @@ public class WoodcuttingManager extends SkillManager {
|
||||
* @return true if and only if the given block was a Log not already in treeFellerBlocks.
|
||||
*/
|
||||
private boolean processTreeFellerTargetBlock(@NotNull Block block,
|
||||
@NotNull List<Block> futureCenterBlocks,
|
||||
@NotNull Set<Block> treeFellerBlocks) {
|
||||
@NotNull Collection<Block> futureCenterBlocks,
|
||||
@NotNull Collection<Block> treeFellerBlocks) {
|
||||
if (treeFellerBlocks.contains(block) || mcMMO.getUserBlockTracker().isIneligible(block)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Without this check Tree Feller propagates through leaves until the threshold is hit
|
||||
if (treeFellerBlocks.size() > treeFellerThreshold) {
|
||||
treeFellerReachedThreshold = true;
|
||||
}
|
||||
|
||||
if (BlockUtils.hasWoodcuttingXP(block)) {
|
||||
treeFellerBlocks.add(block);
|
||||
futureCenterBlocks.add(block);
|
||||
if (treeFellerBlocks.size() >= treeFellerThreshold) {
|
||||
treeFellerReachedThreshold = true;
|
||||
}
|
||||
return true;
|
||||
} else if (BlockUtils.isNonWoodPartOfTree(block)) {
|
||||
treeFellerBlocks.add(block);
|
||||
if (treeFellerBlocks.size() >= treeFellerThreshold) {
|
||||
treeFellerReachedThreshold = true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
|
@@ -14,6 +14,7 @@ import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumMap;
|
||||
import java.util.HashSet;
|
||||
|
Reference in New Issue
Block a user