tridents/xbows WIP part 1

This commit is contained in:
nossr50
2020-07-06 20:44:10 -07:00
parent 919907f46a
commit ea448dfa47
29 changed files with 622 additions and 36 deletions

View File

@@ -25,6 +25,11 @@ public final class ItemUtils {
return mcMMO.getMaterialMapStore().isBow(item.getType().getKey().getKey());
}
public static boolean isCrossbow(ItemStack itemStack) {
return mcMMO.getMaterialMapStore().isCrossbow(itemStack.getType().getKey().getKey());
}
public static boolean hasItemInEitherHand(Player player, Material material) {
return player.getInventory().getItemInMainHand().getType() == material || player.getInventory().getItemInOffHand().getType() == material;
}
@@ -39,6 +44,11 @@ public final class ItemUtils {
return mcMMO.getMaterialMapStore().isSword(item.getType().getKey().getKey());
}
public static boolean isTrident(ItemStack itemStack) {
return mcMMO.getMaterialMapStore().isTrident(itemStack.getType().getKey().getKey());
}
/**
* Checks if the item is a hoe.
*

View File

@@ -48,6 +48,7 @@ public class MaterialMapStore {
private HashSet<String> pickAxes;
private HashSet<String> tridents;
private HashSet<String> bows;
private HashSet<String> xbows;
private HashSet<String> tools;
private HashSet<String> enchantables;
@@ -85,6 +86,7 @@ public class MaterialMapStore {
diamondTools = new HashSet<>();
netheriteTools = new HashSet<>();
bows = new HashSet<>();
xbows = new HashSet<>();
stringTools = new HashSet<>();
tools = new HashSet<>();
@@ -255,6 +257,7 @@ public class MaterialMapStore {
fillTridents();
fillStringTools();
fillBows();
fillCrossBows();
//Tools collection
tools.addAll(woodTools);
@@ -266,12 +269,17 @@ public class MaterialMapStore {
tools.addAll(tridents);
tools.addAll(stringTools);
tools.addAll(bows);
tools.addAll(xbows);
}
private void fillBows() {
bows.add("bow");
}
private void fillCrossBows() {
xbows.add("crossbow");
}
private void fillStringTools() {
stringTools.add("bow");
stringTools.add("fishing_rod");
@@ -598,6 +606,15 @@ public class MaterialMapStore {
return bows.contains(id);
}
public boolean isCrossbow(Material material) {
return isCrossbow(material.getKey().getKey());
}
public boolean isCrossbow(String id) {
return xbows.contains(id);
}
public boolean isLeatherArmor(Material material) {
return isLeatherArmor(material.getKey().getKey());
}
@@ -686,6 +703,10 @@ public class MaterialMapStore {
return diamondTools.contains(id);
}
public boolean isTrident(Material material) { return isTrident(material.getKey().getKey()); }
public boolean isTrident(String id) { return tridents.contains(id); }
public boolean isSword(Material material) {
return isSword(material.getKey().getKey());
}

View File

@@ -6,12 +6,14 @@ import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.runnables.skills.ExperienceBarHideTask;
import com.gmail.nossr50.util.player.NotificationManager;
import com.gmail.nossr50.util.skills.SkillUtils;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
/**
* ExperienceBarManager handles displaying and updating mcMMO experience bars for players
@@ -24,12 +26,16 @@ public class ExperienceBarManager {
private HashMap<PrimarySkillType, ExperienceBarWrapper> experienceBars;
private HashMap<PrimarySkillType, ExperienceBarHideTask> experienceBarHideTaskHashMap;
private final HashMap<PrimarySkillType, BarState> barStateMap;
private HashSet<PrimarySkillType> alwaysVisible;
private HashSet<PrimarySkillType> disabledBars;
public ExperienceBarManager(McMMOPlayer mcMMOPlayer)
public ExperienceBarManager(McMMOPlayer mcMMOPlayer, HashMap<PrimarySkillType, BarState> barStateMap)
{
this.mcMMOPlayer = mcMMOPlayer;
this.barStateMap = barStateMap;
init();
}
@@ -41,6 +47,28 @@ public class ExperienceBarManager {
//Init sets
alwaysVisible = new HashSet<>();
disabledBars = new HashSet<>();
syncBarStates();
}
private void syncBarStates() {
for(Map.Entry<PrimarySkillType, BarState> entry : barStateMap.entrySet()) {
PrimarySkillType key = entry.getKey();
BarState barState = entry.getValue();
switch(barState) {
case NORMAL:
break;
case ALWAYS_ON:
xpBarSettingToggle(XPBarSettingTarget.SHOW, key);
case DISABLED:
xpBarSettingToggle(XPBarSettingTarget.HIDE, key);
}
}
}
private void resetBarStateMap() {
SkillUtils.setBarStateDefaults(barStateMap);
}
public void updateExperienceBar(PrimarySkillType primarySkillType, Plugin plugin)
@@ -112,6 +140,7 @@ public class ExperienceBarManager {
}
updateExperienceBar(skillType, mcMMO.p);
barStateMap.put(skillType, BarState.ALWAYS_ON);
break;
case HIDE:
alwaysVisible.remove(skillType);
@@ -123,6 +152,7 @@ public class ExperienceBarManager {
}
hideExperienceBar(skillType);
barStateMap.put(skillType, BarState.DISABLED);
break;
case RESET:
resetBarSettings();
@@ -138,12 +168,14 @@ public class ExperienceBarManager {
hideExperienceBar(permanent);
}
resetBarStateMap();
alwaysVisible.clear();
disabledBars.clear();
//Hide child skills by default
disabledBars.add(PrimarySkillType.SALVAGE);
disabledBars.add(PrimarySkillType.SMELTING);
xpBarSettingToggle(XPBarSettingTarget.HIDE, PrimarySkillType.SALVAGE);
xpBarSettingToggle(XPBarSettingTarget.HIDE, PrimarySkillType.SMELTING);
}
private void informPlayer(@NotNull ExperienceBarManager.@NotNull XPBarSettingTarget settingTarget, @Nullable PrimarySkillType skillType) {
@@ -156,4 +188,6 @@ public class ExperienceBarManager {
}
public enum XPBarSettingTarget { SHOW, HIDE, RESET, DISABLE }
public enum BarState { NORMAL, ALWAYS_ON, DISABLED }
}

View File

@@ -245,7 +245,7 @@ public class ScoreboardWrapper {
oldBoard = null;
}
else {
mcMMO.p.debug("Not reverting targetBoard for " + playerName + " - targetBoard was changed by another plugin (Consider disabling the mcMMO scoreboards if you don't want them!)");
mcMMO.p.getLogger().info("Not reverting targetBoard for " + playerName + " - targetBoard was changed by another plugin (Consider disabling the mcMMO scoreboards if you don't want them!)");
}
}

View File

@@ -18,6 +18,7 @@ import com.gmail.nossr50.skills.archery.ArcheryManager;
import com.gmail.nossr50.skills.axes.AxesManager;
import com.gmail.nossr50.skills.swords.SwordsManager;
import com.gmail.nossr50.skills.taming.TamingManager;
import com.gmail.nossr50.skills.tridents.TridentManager;
import com.gmail.nossr50.skills.unarmed.UnarmedManager;
import com.gmail.nossr50.util.*;
import com.gmail.nossr50.util.player.NotificationManager;
@@ -90,6 +91,26 @@ public final class CombatUtils {
processCombatXP(mcMMOPlayer, target, PrimarySkillType.SWORDS);
}
public static void processTridentCombat(LivingEntity target, Player player, EntityDamageByEntityEvent entityDamageByEntityEvent) {
if (entityDamageByEntityEvent.getCause() == DamageCause.THORNS) {
return;
}
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
//Make sure the profiles been loaded
if(mcMMOPlayer == null) {
return;
}
TridentManager tridentManager = mcMMOPlayer.getTridentManager();
// double initialDamage = entityDamageByEntityEvent.getDamage();
// double finalDamage = initialDamage;
processCombatXP(mcMMOPlayer, target, PrimarySkillType.TRIDENTS);
}
// public static void strengthDebug(Player player) {
// BukkitPlatform bukkitPlatform = (BukkitPlatform) mcMMO.getPlatformManager().getPlatform();
// Bukkit.broadcastMessage("Strength: "+bukkitPlatform.getPlayerAttackStrength(player));
@@ -387,6 +408,15 @@ public final class CombatUtils {
processUnarmedCombat(target, player, event);
}
}
else if (ItemUtils.isTrident(heldItem)) {
if(!PrimarySkillType.TRIDENTS.shouldProcess(target)) {
return;
}
if(PrimarySkillType.TRIDENTS.getPermissions(player)) {
processTridentCombat(target, player, event);
}
}
}
else if (entityType == EntityType.WOLF) {

View File

@@ -15,6 +15,7 @@ import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.ItemUtils;
import com.gmail.nossr50.util.Misc;
import com.gmail.nossr50.util.StringUtils;
import com.gmail.nossr50.util.experience.ExperienceBarManager;
import com.gmail.nossr50.util.player.NotificationManager;
import com.gmail.nossr50.util.player.UserManager;
import org.bukkit.Bukkit;
@@ -31,6 +32,7 @@ import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -44,6 +46,34 @@ public class SkillUtils {
mcMMOPlayer.beginXpGain(skill, xp, xpGainReason, xpGainSource);
}
public static HashMap<PrimarySkillType, ExperienceBarManager.BarState> generateDefaultBarStateMap() {
HashMap<PrimarySkillType, ExperienceBarManager.BarState> barStateHashMap = new HashMap<>();
setBarStateDefaults(barStateHashMap);
return barStateHashMap;
}
public static ExperienceBarManager.BarState asBarState(String str) {
for(ExperienceBarManager.BarState barState : ExperienceBarManager.BarState.values()) {
if(barState.toString().equalsIgnoreCase(str)) {
return barState;
}
}
return ExperienceBarManager.BarState.NORMAL;
}
public static void setBarStateDefaults(HashMap<PrimarySkillType, ExperienceBarManager.BarState> barStateHashMap) {
for(PrimarySkillType skillType : PrimarySkillType.values()) {
if(skillType.isChildSkill()) {
barStateHashMap.put(skillType, ExperienceBarManager.BarState.DISABLED);
} else {
barStateHashMap.put(skillType, ExperienceBarManager.BarState.NORMAL);
}
}
}
/*
* Skill Stat Calculations
*/