Переглянути джерело

new fishing skill Inner Peace

nossr50 6 роки тому
батько
коміт
78aeb0679b

+ 1 - 0
Changelog.txt

@@ -9,6 +9,7 @@ Key:
 
 Version 2.2.0
     mcMMO's config system has been rewritten
+    Added new subskill to Fishing named 'Inner Peace'
     mcMMO will now warn you in the console if it thinks you are running incompatible server software
     Parties no longer have a cap, you can level them forever for bragging rights
     You can now specify multiple repair-items for an item (such as specifying that a wooden sword can be repaired by all types of planks)

+ 6 - 1
src/main/java/com/gmail/nossr50/commands/skills/FishingCommand.java

@@ -102,7 +102,7 @@ public class FishingCommand extends SkillCommand {
                 location = player.getLocation();
             }
 
-            if (Fishing.masterAnglerBiomes.contains(location.getBlock().getBiome())) {
+            if (Fishing.getInstance().getMasterAnglerBiomes().contains(location.getBlock().getBiome())) {
                 rawBiteChance = rawBiteChance * AdvancedConfig.getInstance().getMasterAnglerBiomeModifier();
             }
 
@@ -163,6 +163,11 @@ public class FishingCommand extends SkillCommand {
                     String.valueOf(recordTreasure)));
         }
 
+        if(canInnerPeace)
+        {
+            m
+        }
+
         return messages;
     }
 

+ 0 - 1
src/main/java/com/gmail/nossr50/config/AdvancedConfig.java

@@ -644,7 +644,6 @@ public class AdvancedConfig extends ConfigValidated {
 
     /* FISHING */
     public double getShakeChance(int rank) { return getDoubleValue(SKILLS, FISHING, SHAKE, CHANCE, RANK, String.valueOf(rank)); }
-    public int getFishingVanillaXPModifier(int rank) { return getIntValue(SKILLS, FISHING, VANILLA_XPMULTIPLIER, RANK, String.valueOf(rank)); }
     public double getMasterAnglerBoatModifier() {return getDoubleValue(SKILLS, FISHING, MASTER_ANGLER, BOAT_MODIFIER); }
     public double getMasterAnglerBiomeModifier() {return getDoubleValue(SKILLS, FISHING, MASTER_ANGLER, BIOME_MODIFIER); }
 

+ 0 - 26
src/main/java/com/gmail/nossr50/config/MainConfig.java

@@ -369,14 +369,6 @@ public class MainConfig extends ConfigValidated {
             reason.add(ABILITIES + "." + LIMITS + "." + TREE_FELLER_THRESHOLD + " should be greater than 0!");
         }*/
 
-        if (getFishingLureModifier() < 0) {
-            reason.add(ABILITIES + "." + FISHING + "." + LURE_MODIFIER + " should be at least 0!");
-        }
-
-        if (getDetonatorItem() == null) {
-            reason.add(SKILLS + "." + MINING + "." + DETONATOR + "Item is invalid!");
-        }
-
         /*if (getRepairAnvilMaterial() == null) {
             reason.add(SKILLS + "." + REPAIR + "." + ANVIL + "Type is invalid!!");
         }
@@ -597,24 +589,6 @@ public class MainConfig extends ConfigValidated {
         return getBooleanValue(SKILLS, ALCHEMY, PREVENT_HOPPER_TRANSFER_BOTTLES);
     }
 
-    /* Fishing */
-    public boolean getFishingDropsEnabled() {
-        return getBooleanValue(SKILLS, FISHING, DROPS + ENABLED);
-    }
-
-    public boolean getFishingOverrideTreasures() {
-        return getBooleanValue(SKILLS, FISHING, OVERRIDE_VANILLA_TREASURES);
-    }
-
-    public double getFishingLureModifier() {
-        return getDoubleValue(SKILLS, FISHING, LURE_MODIFIER);
-    }
-
-    /* Mining */
-    public Material getDetonatorItem() {
-        //Flint and steel
-        return Material.matchMaterial(getStringValue(SKILLS, MINING, DETONATOR + NAME));
-    }
 
     /* Unarmed */
     public boolean getUnarmedBlockCrackerSmoothbrickToCracked() {

+ 2 - 0
src/main/java/com/gmail/nossr50/config/hocon/experience/ConfigExperienceFishing.java

@@ -33,4 +33,6 @@ public class ConfigExperienceFishing {
     public int getShakeXP() {
         return shakeXP;
     }
+
+
 }

+ 30 - 0
src/main/java/com/gmail/nossr50/config/hocon/skills/fishing/ConfigFishing.java

@@ -3,12 +3,21 @@ package com.gmail.nossr50.config.hocon.skills.fishing;
 import ninja.leaping.configurate.objectmapping.Setting;
 import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
 
+import java.util.HashMap;
+
 @ConfigSerializable
 public class ConfigFishing {
 
     @Setting(value = "General")
     private ConfigFishingGeneral fishingGeneral = new ConfigFishingGeneral();
 
+    @Setting(value = "Sub-Skills")
+    public ConfigFishingSubskills fishingSubskills = new ConfigFishingSubskills();
+
+    /*
+     * GETTERS BOILERPLATE
+     */
+
     public ConfigFishingGeneral getFishingGeneral() {
         return fishingGeneral;
     }
@@ -24,4 +33,25 @@ public class ConfigFishing {
     public boolean isOverrideVanillaTreasures() {
         return fishingGeneral.isOverrideVanillaTreasures();
     }
+
+    public boolean isAllowCustomDrops() {
+        return fishingGeneral.isAllowCustomDrops();
+    }
+
+    public ConfigFishingSubskills getFishingSubskills() {
+        return fishingSubskills;
+    }
+
+    public ConfigFishingInnerPeace getInnerPeace() {
+        return fishingSubskills.getInnerPeace();
+    }
+
+    public HashMap<Integer, Integer> getInnerPeaceVanillaXPMultiplier() {
+        return getInnerPeace().getInnerPeaceVanillaXPMultiplier();
+    }
+
+    public int getVanillaXPMultInnerPeace(int rank)
+    {
+        return getInnerPeaceVanillaXPMultiplier().get(rank);
+    }
 }

+ 9 - 0
src/main/java/com/gmail/nossr50/config/hocon/skills/fishing/ConfigFishingGeneral.java

@@ -9,6 +9,7 @@ public class ConfigFishingGeneral {
     private static final boolean ALWAYS_CATCH_FISH_DEFAULT = true;
     private static final boolean OVERRIDE_VANILLA_TREASURES = true;
     public static final double LURE_MODIFIER_DEFAULT = 4.0D;
+    private static final boolean ALLOW_MCMMO_FISHING_REWARDS = true;
 
     @Setting(value = "Always-Catch-Fish", comment = "Enables fish to be caught alongside treasure." +
             "\nDefault value: "+ALWAYS_CATCH_FISH_DEFAULT)
@@ -24,6 +25,14 @@ public class ConfigFishingGeneral {
             "\nDefault value: "+LURE_MODIFIER_DEFAULT)
     private double lureLuckModifier = LURE_MODIFIER_DEFAULT;
 
+    @Setting(value = "Allow-Custom-Fishing-Drops", comment = "If set to true, allows mcMMO fishing treasures to be found while fishing." +
+            "\nDefault value: "+ALLOW_MCMMO_FISHING_REWARDS)
+    private boolean allowCustomDrops = ALLOW_MCMMO_FISHING_REWARDS;
+
+    public boolean isAllowCustomDrops() {
+        return allowCustomDrops;
+    }
+
     public double getLureLuckModifier() {
         return lureLuckModifier;
     }

+ 27 - 0
src/main/java/com/gmail/nossr50/config/hocon/skills/fishing/ConfigFishingInnerPeace.java

@@ -0,0 +1,27 @@
+package com.gmail.nossr50.config.hocon.skills.fishing;
+
+import ninja.leaping.configurate.objectmapping.Setting;
+import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
+
+import java.util.HashMap;
+
+@ConfigSerializable
+public class ConfigFishingInnerPeace {
+
+    private static final HashMap<Integer, Integer> INNER_PEACE_DEFAULT;
+
+    static {
+        INNER_PEACE_DEFAULT = new HashMap<>();
+        INNER_PEACE_DEFAULT.put(1, 3);
+        INNER_PEACE_DEFAULT.put(2, 5);
+        INNER_PEACE_DEFAULT.put(3, 7);
+    }
+
+    @Setting(value = "Vanilla-Orb-XP-Multipliers", comment = "How much Inner Peace will grant in bonus XP orbs" +
+            "\nThis value is used to multiply the number of vanilla XP orbs you would normally receive.")
+    private HashMap<Integer, Integer> innerPeaceVanillaXPMultiplier = INNER_PEACE_DEFAULT;
+
+    public HashMap<Integer, Integer> getInnerPeaceVanillaXPMultiplier() {
+        return innerPeaceVanillaXPMultiplier;
+    }
+}

+ 15 - 0
src/main/java/com/gmail/nossr50/config/hocon/skills/fishing/ConfigFishingSubskills.java

@@ -0,0 +1,15 @@
+package com.gmail.nossr50.config.hocon.skills.fishing;
+
+import ninja.leaping.configurate.objectmapping.Setting;
+import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
+
+@ConfigSerializable
+public class ConfigFishingSubskills {
+
+    @Setting(value = "Inner-Peace")
+    private ConfigFishingInnerPeace innerPeace = new ConfigFishingInnerPeace();
+
+    public ConfigFishingInnerPeace getInnerPeace() {
+        return innerPeace;
+    }
+}

+ 0 - 19
src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillFlags.java

@@ -1,19 +0,0 @@
-package com.gmail.nossr50.datatypes.skills;
-
-public class SubSkillFlags {
-    /*
-     * Bitwise Flags
-     * These are so I can flag properties for subskills
-     * Flags are in the power of 2 because binary is a base-2 system
-     */
-    public static final int ACTIVE                      = 1; //Active subskills are ones that aren't passive
-    public static final int SUPERABILITY                = 2; // Super abilities are redundantly active
-    public static final int RNG                         = 4; //If the subskill makes use of RNG
-    public static final int PVP                         = 8; //If the subskill has properties that change in PVP conditions
-    public static final int TIMED                       = 16; //If the subskill has a duration or time component
-    public static final int TARGET_COLLECTION           = 32; //If the subskill has multiple target types
-    public static final int REWARD_COLLECTION           = 64; //If the subskill has multiple reward types
-    public static final int CHARGES                     = 128;
-    public static final int LIMITED                     = 256;
-    //public static final int RANDOM_ACTIVATION           = 128; //If the subskill has random activation
-}

+ 1 - 0
src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java

@@ -38,6 +38,7 @@ public enum SubSkillType {
     FISHING_MAGIC_HUNTER(1),
     FISHING_MASTER_ANGLER(1),
     FISHING_TREASURE_HUNTER(8),
+    FISHING_INNER_PEACE(3),
     FISHING_SHAKE(1),
 
     /* Herbalism */

+ 6 - 4
src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java

@@ -211,7 +211,7 @@ public class FishingManager extends SkillManager {
     }
 
     protected int getVanillaXPBoostModifier() {
-        return AdvancedConfig.getInstance().getFishingVanillaXPModifier(getLootTier());
+        return mcMMO.getConfigManager().getConfigFishing().getVanillaXPMultInnerPeace(RankUtils.getRank(getPlayer(), SubSkillType.FISHING_INNER_PEACE));
     }
 
     /**
@@ -283,12 +283,13 @@ public class FishingManager extends SkillManager {
      * @param fishingCatch The {@link Item} initially caught
      */
     public void handleFishing(Item fishingCatch) {
-        int fishXp = ExperienceConfig.getInstance().getXp(PrimarySkillType.FISHING, fishingCatch.getItemStack().getType());
+        int fishXp = Fishing.getInstance().getFishXPValue(fishingCatch.getItemStack().getType());
         int treasureXp = 0;
         Player player = getPlayer();
         FishingTreasure treasure = null;
 
-        if (MainConfig.getInstance().getFishingDropsEnabled() && Permissions.isSubSkillEnabled(player, SubSkillType.FISHING_TREASURE_HUNTER)) {
+        if (mcMMO.getConfigManager().getConfigFishing().isAllowCustomDrops()
+                && Permissions.isSubSkillEnabled(player, SubSkillType.FISHING_TREASURE_HUNTER)) {
             treasure = getFishingTreasure();
         }
 
@@ -326,7 +327,8 @@ public class FishingManager extends SkillManager {
                 }
 
                 if (mcMMO.getConfigManager().getConfigFishing().isAlwaysCatchFish()) {
-                    Misc.dropItem(player.getEyeLocation(), fishingCatch.getItemStack());
+                    /*Misc.dropItem(player.getEyeLocation(), fishingCatch.getItemStack());*/
+                    Misc.dropItem(fishingCatch.getLocation(), fishingCatch.getItemStack()).setVelocity(fishingCatch.getVelocity());
                 }
 
                 fishingCatch.setItemStack(treasureDrop);

+ 9 - 0
src/main/resources/skillranks.yml

@@ -426,6 +426,15 @@ Fishing:
             Rank_6: 750
             Rank_7: 850
             Rank_8: 1000
+    InnerPeace:
+        Standard:
+            Rank_1: 33
+            Rank_2: 66
+            Rank_3: 100
+        RetroMode:
+            Rank_1: 333
+            Rank_2: 666
+            Rank_3: 1000
 Swords:
     SwordsLimitBreak:
         Standard: