mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-01-19 16:59:37 +01:00
Fixing merge conflicts
This commit is contained in:
commit
83888f80d4
@ -10,34 +10,74 @@ Key:
|
|||||||
Version 1.3.13-dev
|
Version 1.3.13-dev
|
||||||
+ Added Craftbukkit 1.4.6 compatibility
|
+ Added Craftbukkit 1.4.6 compatibility
|
||||||
+ Added a configurable durability cap for ArmorImpact to advanced.yml
|
+ Added a configurable durability cap for ArmorImpact to advanced.yml
|
||||||
+ Added version number to /mcmmo
|
+ Added the version number to /mcmmo
|
||||||
|
+ Added bats, giants, witches, withers, and wither skeletons to the mcMMO combat experience list, and makes their experience drops configurable
|
||||||
|
+ Added the ability to track mobs spawned by mob spawners or the Taming ability when the chunks they are in unload and reload
|
||||||
|
+ Added wooden button to the list of items that shouldn't trigger abilities
|
||||||
= Fixed issue with missing default cases from several switch/case statements
|
= Fixed issue with missing default cases from several switch/case statements
|
||||||
= Fixed issue with Mining using actual skill level rather than max skill level
|
= Fixed issue with Mining using actual skill level rather than max skill level
|
||||||
= Fixed some issues with static access
|
= Fixed some issues with static access
|
||||||
= Fixed ItemStack deprecation issues
|
= Fixed ItemStack deprecation issues
|
||||||
= Fixed Async deprecation issues
|
= Fixed Async deprecation issues
|
||||||
= Fixed some issues with mySQL databases (non-alphanumeric characters preventing MySQL)
|
= Fixed a bug with MySQL databases (non-alphanumeric characters preventing MySQL access)
|
||||||
= Fixed skill commands displaying .x% instead of 0.x%
|
= Fixed a bug where the /skillreset command was broken
|
||||||
= Fixed Unbreaking enchantments being ignored when using Treefelling and when hit by Armor Impact
|
= Fixed a bug where skill commands displaying .x% instead of 0.x%
|
||||||
|
= Fixed a bug Unbreaking enchantments being ignored when using Treefelling and when hit by Armor Impact
|
||||||
|
= Fixed a bug where only 1 diamond was needed to fully repair a broken item: Repaired the Repair skill!
|
||||||
|
= Fixed a bug where a infinite loop of errors caused by mySQL database could cause the server to crash
|
||||||
|
= Fixed a bug where PartyChangeEvent was fired even when a player isn't able to change parties
|
||||||
|
= Fixed a bug which caused advanced.yml not to work for Swords
|
||||||
|
= Fixed a bug which caused advanced.yml not to respect every MaxChance node
|
||||||
|
= Fixed a bug where GreenThumb_StageChange wasn't read from advanced.yml
|
||||||
|
= Fixed a bug where Repair would remove enchantments but the glow effect remained
|
||||||
|
= Fixed a bug where dropped items did not retain custom NBT data
|
||||||
|
= Fixed a bug which caused a potentially infinite recursion in a btree structure
|
||||||
|
= Fixed a NPE with custom blocks
|
||||||
! GJ stopped being a lazy slacker and got stuff done
|
! GJ stopped being a lazy slacker and got stuff done
|
||||||
|
! Changed code that uses SpoutPlugin to make it compatible with the latest version
|
||||||
|
! Changed Reimplemented skill level and power level caps.
|
||||||
- Removed dead code relating to null profiles
|
- Removed dead code relating to null profiles
|
||||||
- Removed unused imports
|
- Removed unused imports
|
||||||
|
|
||||||
Version 1.3.12
|
Version 1.3.12
|
||||||
+ Added Craftbukkit 1.4.5 compatibility
|
+ Added Craftbukkit 1.4.5 compatibility
|
||||||
|
+ Added the new 1.3.2 items, xp and double drops for Cocao beans & Emeralds, EnderChest to the list of blocks that shouldn't trigger abilities
|
||||||
+ Added new items from Minecraft 1.4 to Herbalism (potatoes & carrots)
|
+ Added new items from Minecraft 1.4 to Herbalism (potatoes & carrots)
|
||||||
|
+ Added new configuration file for advanced users.
|
||||||
|
+ Added new permission nodes to greenthumb for the 1.4 items
|
||||||
+ Added new mobs from Minecraft 1.4 checks for every ability
|
+ Added new mobs from Minecraft 1.4 checks for every ability
|
||||||
+ Added new active ability for Repair: Salvage
|
+ Added new active ability for Repair: Salvage
|
||||||
+ Added options to 'config.yml' configure shake chance
|
+ Added options to 'config.yml' configure shake chance
|
||||||
+ Added the option to negate experience earned for Herbalism while in a minecart to prevent afk leveling
|
+ Added the option to negate experience earned for Herbalism while in a minecart to prevent afk leveling
|
||||||
+ Added Green thumb now converts cobble walls to mossy cobble walls
|
+ Added Green thumb now converts cobble walls to mossy cobble walls
|
||||||
+ Added beacons and anvils to list of blocks that don't trigger abilities
|
+ Added beacons and anvils to list of blocks that don't trigger abilities
|
||||||
|
+ Added a configuration option to disable experience gains when in a minecraft for Acrobatics and Herbalism, to prevent AFK leveling
|
||||||
|
+ Added a new passive ability for Fishing, Fishermans diet. Increases hunger restored from fish
|
||||||
|
+ Added a feature to display all active perks on login
|
||||||
! Changed Fishing, Shake drops changed from guaranteed to based upon fishing level and perks
|
! Changed Fishing, Shake drops changed from guaranteed to based upon fishing level and perks
|
||||||
! Changed Woodcutting, the amount of experience earned when using Tree Feller on jungle trees has increased
|
! Changed Woodcutting, the amount of experience earned when using Tree Feller on jungle trees has increased
|
||||||
|
! Changed Herbalism double drop rates for melons and netherwart
|
||||||
! Changed filesystem usage, it's reduced a lot. Should help reduce lag on larger servers
|
! Changed filesystem usage, it's reduced a lot. Should help reduce lag on larger servers
|
||||||
= Fixed Woodcutting bug, excessive null chunk before earning Woodcutting experience
|
! Changed database connection handling. Support for aggressive connection timeouts, with exponential backoff for multiple failures
|
||||||
= Fixed a null pointer error related to skill cooldowns
|
! Changed Cobblestone walls are now mossy-able with Greenthumb
|
||||||
= Fixed more NPE ?? Needs better explanation
|
! Changed the skull drop rates of the shake ability to 3%
|
||||||
|
= Fixed a NPE when Citizens perform certain tasks
|
||||||
|
= Fixed a NPE with Woodcutting, excessive null chunk before earning Woodcutting experience
|
||||||
|
= Fixed a NPE related to skill cooldowns
|
||||||
|
= Fixed a NPE when a players profile was null
|
||||||
|
= Fixed a NPE involving certain explosions
|
||||||
|
= Fixed a dupe bug when for players who were using a 'nuker' client
|
||||||
|
= Fixed a dupe bug where pistons were used to dupe ores
|
||||||
|
= Fixed a dupe bug with Salvage when players were in Creative mode
|
||||||
|
= Fixed a bug where the player was displayed an incorrect cooldown time
|
||||||
|
= Fixed a bug where players could earn experience when they were dealing 0 damage
|
||||||
|
= Fixed a bug where players could get double drops from mossified Cobblestone
|
||||||
|
= Fixed a bug where Herablism magically converted potatoes to carrots
|
||||||
|
= Fixed a bug where you couldn't modify the stats of offline players
|
||||||
|
= Fixed a bug where treefeller didn't work properly on tree's with side-way logs
|
||||||
|
= Fixed a bug where the Arcane forging downgrade chance should've been 0, but actually wasn't
|
||||||
|
= Fixed a bug where Fishing would sometimes give items with empty enchantments
|
||||||
|
= Fixed a bug where the lucky perk for Fishing was actually an unlucky perk
|
||||||
- Removed nothing
|
- Removed nothing
|
||||||
|
|
||||||
Version 1.3.11
|
Version 1.3.11
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
== mcMMO
|
== mcMMO
|
||||||
**The RPG lovers mod**
|
**The RPG lovers mod**
|
||||||
|
|
||||||
=== Forums
|
=== Dev builds
|
||||||
http://forums.mcmmo.info Talk with developers and the community about mcMMO here
|
http://nuclearw.com:8080/job/mcMMO/ Download the latest dev build of mcMMO here.
|
||||||
|
|
||||||
=== Brief Description
|
=== Brief Description
|
||||||
mcMMO takes core Minecraft game mechanics and expands them to add an extensive RPG experience, the goal of the project has always been a quality RPG experience. Everything in mcMMO is carefully thought out and is constantly improving. mcMMO adds eleven skills to train in and level in, while also offering a high level of customization for server admins. There are countless features, including custom sounds, graphical elements, and more added when running mcMMO in conjunction with Spout. I carefully read feedback and evaluate the mechanics of mcMMO in every update to provide an ever-evolving experience.
|
mcMMO takes core Minecraft game mechanics and expands them to add an extensive RPG experience, the goal of the project has always been a quality RPG experience. Everything in mcMMO is carefully thought out and is constantly improving. mcMMO adds eleven skills to train in and level in, while also offering a high level of customization for server admins. There are countless features, including custom sounds, graphical elements, and more added when running mcMMO in conjunction with Spout. I carefully read feedback and evaluate the mechanics of mcMMO in every update to provide an ever-evolving experience.
|
||||||
@ -20,6 +20,7 @@ Hearing that people enjoy mcMMO and seeing the daily youtube videos about my mod
|
|||||||
|
|
||||||
Required Libraries:
|
Required Libraries:
|
||||||
* Spout API
|
* Spout API
|
||||||
|
* JUnit
|
||||||
|
|
||||||
Required to Run:
|
Required to Run:
|
||||||
* Bukkit
|
* Bukkit
|
||||||
|
@ -99,17 +99,17 @@ public class AdvancedConfig extends ConfigLoader {
|
|||||||
public int getSuperRepairMaxLevel() { return config.getInt("Skills.Repair.SuperRepair_MaxBonusLevel", 1000); }
|
public int getSuperRepairMaxLevel() { return config.getInt("Skills.Repair.SuperRepair_MaxBonusLevel", 1000); }
|
||||||
|
|
||||||
/* SWORDS */
|
/* SWORDS */
|
||||||
public int getBleedChanceMax() { return config.getInt("Skills.Sword.Bleed_ChanceMax", 75); }
|
public int getBleedChanceMax() { return config.getInt("Skills.Swords.Bleed_ChanceMax", 75); }
|
||||||
public int getBleedMaxBonusLevel() { return config.getInt("Skills.Sword.Bleed_MaxBonusLevel", 750); }
|
public int getBleedMaxBonusLevel() { return config.getInt("Skills.Swords.Bleed_MaxBonusLevel", 750); }
|
||||||
public int getBleedMaxTicks() { return config.getInt("Skills.Sword.Bleed_MaxTicks", 3); }
|
public int getBleedMaxTicks() { return config.getInt("Skills.Swords.Bleed_MaxTicks", 3); }
|
||||||
public int getBleedBaseTicks() { return config.getInt("Skills.Sword.Bleed_BaseTicks", 2); }
|
public int getBleedBaseTicks() { return config.getInt("Skills.Swords.Bleed_BaseTicks", 2); }
|
||||||
|
|
||||||
public int getCounterChanceMax() { return config.getInt("Skills.Sword.Counter_ChanceMax", 30); }
|
public int getCounterChanceMax() { return config.getInt("Skills.Swords.Counter_ChanceMax", 30); }
|
||||||
public int getCounterMaxBonusLevel() { return config.getInt("Skills.Sword.Counter_MaxBonusLevel", 600); }
|
public int getCounterMaxBonusLevel() { return config.getInt("Skills.Swords.Counter_MaxBonusLevel", 600); }
|
||||||
public int getCounterModifier() { return config.getInt("Skills.Sword.Counter_DamageModifier", 2); }
|
public int getCounterModifier() { return config.getInt("Skills.Swords.Counter_DamageModifier", 2); }
|
||||||
|
|
||||||
public int getSerratedStrikesModifier() { return config.getInt("Skills.Sword.SerratedStrikes_DamageModifier", 4); }
|
public int getSerratedStrikesModifier() { return config.getInt("Skills.Swords.SerratedStrikes_DamageModifier", 4); }
|
||||||
public int getSerratedStrikesTicks() { return config.getInt("Skills.Sword.SerratedStrikes_BleedTicks", 5); }
|
public int getSerratedStrikesTicks() { return config.getInt("Skills.Swords.SerratedStrikes_BleedTicks", 5); }
|
||||||
/* TAMING */
|
/* TAMING */
|
||||||
public int getGoreChanceMax() { return config.getInt("Skills.Taming.Gore_ChanceMax", 100); }
|
public int getGoreChanceMax() { return config.getInt("Skills.Taming.Gore_ChanceMax", 100); }
|
||||||
public int getGoreMaxBonusLevel() { return config.getInt("Skills.Taming.Gore_MaxBonusLevel", 1000); }
|
public int getGoreMaxBonusLevel() { return config.getInt("Skills.Taming.Gore_MaxBonusLevel", 1000); }
|
||||||
|
@ -30,7 +30,7 @@ import com.gmail.nossr50.events.fake.FakePlayerAnimationEvent;
|
|||||||
import com.gmail.nossr50.runnables.StickyPistonTracker;
|
import com.gmail.nossr50.runnables.StickyPistonTracker;
|
||||||
import com.gmail.nossr50.skills.gathering.Excavation;
|
import com.gmail.nossr50.skills.gathering.Excavation;
|
||||||
import com.gmail.nossr50.skills.gathering.Herbalism;
|
import com.gmail.nossr50.skills.gathering.Herbalism;
|
||||||
import com.gmail.nossr50.skills.gathering.Mining;
|
import com.gmail.nossr50.skills.mining.Mining;
|
||||||
import com.gmail.nossr50.skills.gathering.WoodCutting;
|
import com.gmail.nossr50.skills.gathering.WoodCutting;
|
||||||
import com.gmail.nossr50.skills.repair.Repair;
|
import com.gmail.nossr50.skills.repair.Repair;
|
||||||
import com.gmail.nossr50.skills.repair.Salvage;
|
import com.gmail.nossr50.skills.repair.Salvage;
|
||||||
|
@ -23,7 +23,6 @@ import org.bukkit.event.entity.EntityExplodeEvent;
|
|||||||
import org.bukkit.event.entity.EntityTameEvent;
|
import org.bukkit.event.entity.EntityTameEvent;
|
||||||
import org.bukkit.event.entity.ExplosionPrimeEvent;
|
import org.bukkit.event.entity.ExplosionPrimeEvent;
|
||||||
import org.bukkit.event.entity.FoodLevelChangeEvent;
|
import org.bukkit.event.entity.FoodLevelChangeEvent;
|
||||||
import org.bukkit.metadata.FixedMetadataValue;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.config.AdvancedConfig;
|
import com.gmail.nossr50.config.AdvancedConfig;
|
||||||
@ -36,7 +35,7 @@ import com.gmail.nossr50.party.PartyManager;
|
|||||||
import com.gmail.nossr50.runnables.BleedTimer;
|
import com.gmail.nossr50.runnables.BleedTimer;
|
||||||
import com.gmail.nossr50.skills.acrobatics.AcrobaticsManager;
|
import com.gmail.nossr50.skills.acrobatics.AcrobaticsManager;
|
||||||
import com.gmail.nossr50.skills.archery.Archery;
|
import com.gmail.nossr50.skills.archery.Archery;
|
||||||
import com.gmail.nossr50.skills.gathering.BlastMining;
|
import com.gmail.nossr50.skills.mining.BlastMining;
|
||||||
import com.gmail.nossr50.skills.taming.TamingManager;
|
import com.gmail.nossr50.skills.taming.TamingManager;
|
||||||
import com.gmail.nossr50.util.Combat;
|
import com.gmail.nossr50.util.Combat;
|
||||||
import com.gmail.nossr50.util.Misc;
|
import com.gmail.nossr50.util.Misc;
|
||||||
@ -184,8 +183,8 @@ public class EntityListener implements Listener {
|
|||||||
entity.setFireTicks(0);
|
entity.setFireTicks(0);
|
||||||
BleedTimer.remove(entity);
|
BleedTimer.remove(entity);
|
||||||
Archery.arrowRetrievalCheck(entity);
|
Archery.arrowRetrievalCheck(entity);
|
||||||
mcMMO.p.placeStore.removeSpawnedMob(((Entity) entity));
|
mcMMO.placeStore.removeSpawnedMob(((Entity) entity));
|
||||||
mcMMO.p.placeStore.removeSpawnedPet(((Entity) entity));
|
mcMMO.placeStore.removeSpawnedPet(((Entity) entity));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -198,7 +197,7 @@ public class EntityListener implements Listener {
|
|||||||
SpawnReason reason = event.getSpawnReason();
|
SpawnReason reason = event.getSpawnReason();
|
||||||
|
|
||||||
if ((reason.equals(SpawnReason.SPAWNER) || reason.equals(SpawnReason.SPAWNER_EGG)) && !Config.getInstance().getExperienceGainsMobspawnersEnabled()) {
|
if ((reason.equals(SpawnReason.SPAWNER) || reason.equals(SpawnReason.SPAWNER_EGG)) && !Config.getInstance().getExperienceGainsMobspawnersEnabled()) {
|
||||||
mcMMO.p.placeStore.addSpawnedMob(((Entity) event.getEntity()));
|
mcMMO.placeStore.addSpawnedMob(((Entity) event.getEntity()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -399,7 +398,7 @@ public class EntityListener implements Listener {
|
|||||||
|
|
||||||
if(player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if(player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
|
|
||||||
if (Permissions.taming(player) && !mcMMO.p.placeStore.isSpawnedPet((Entity) event.getEntity())) {
|
if (Permissions.taming(player) && !mcMMO.placeStore.isSpawnedPet((Entity) event.getEntity())) {
|
||||||
PlayerProfile profile = Users.getProfile(player);
|
PlayerProfile profile = Users.getProfile(player);
|
||||||
EntityType type = event.getEntityType();
|
EntityType type = event.getEntityType();
|
||||||
int xp = 0;
|
int xp = 0;
|
||||||
|
@ -35,9 +35,9 @@ import com.gmail.nossr50.events.chat.McMMOPartyChatEvent;
|
|||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.party.Party;
|
import com.gmail.nossr50.party.Party;
|
||||||
import com.gmail.nossr50.runnables.BleedTimer;
|
import com.gmail.nossr50.runnables.BleedTimer;
|
||||||
import com.gmail.nossr50.skills.gathering.BlastMining;
|
|
||||||
import com.gmail.nossr50.skills.gathering.Fishing;
|
import com.gmail.nossr50.skills.gathering.Fishing;
|
||||||
import com.gmail.nossr50.skills.gathering.Herbalism;
|
import com.gmail.nossr50.skills.gathering.Herbalism;
|
||||||
|
import com.gmail.nossr50.skills.mining.BlastMining;
|
||||||
import com.gmail.nossr50.skills.repair.Salvage;
|
import com.gmail.nossr50.skills.repair.Salvage;
|
||||||
import com.gmail.nossr50.skills.taming.TamingManager;
|
import com.gmail.nossr50.skills.taming.TamingManager;
|
||||||
import com.gmail.nossr50.util.BlockChecks;
|
import com.gmail.nossr50.util.BlockChecks;
|
||||||
|
@ -51,6 +51,6 @@ public class WorldListener implements Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void onChunkLoad(ChunkLoadEvent event) {
|
public void onChunkLoad(ChunkLoadEvent event) {
|
||||||
if(event.getChunk().getEntities().length > 0)
|
if(event.getChunk().getEntities().length > 0)
|
||||||
mcMMO.p.placeStore.loadChunk(event.getChunk().getX(), event.getChunk().getZ(), event.getWorld());
|
mcMMO.placeStore.loadChunk(event.getChunk().getX(), event.getChunk().getZ(), event.getWorld());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,11 +4,13 @@ import org.bukkit.CropState;
|
|||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.config.AdvancedConfig;
|
||||||
import com.gmail.nossr50.datatypes.AbilityType;
|
import com.gmail.nossr50.datatypes.AbilityType;
|
||||||
import com.gmail.nossr50.datatypes.PlayerProfile;
|
import com.gmail.nossr50.datatypes.PlayerProfile;
|
||||||
import com.gmail.nossr50.datatypes.SkillType;
|
import com.gmail.nossr50.datatypes.SkillType;
|
||||||
|
|
||||||
public class GreenThumbTimer implements Runnable {
|
public class GreenThumbTimer implements Runnable {
|
||||||
|
AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
|
||||||
private Block block;
|
private Block block;
|
||||||
private PlayerProfile profile;
|
private PlayerProfile profile;
|
||||||
private Material type;
|
private Material type;
|
||||||
@ -24,19 +26,26 @@ public class GreenThumbTimer implements Runnable {
|
|||||||
if(this.block.getType() != this.type)
|
if(this.block.getType() != this.type)
|
||||||
this.block.setType(this.type);
|
this.block.setType(this.type);
|
||||||
|
|
||||||
|
int skillLevel = this.profile.getSkillLevel(SkillType.HERBALISM);
|
||||||
|
|
||||||
|
final int STAGE_CHANGE = advancedConfig.getGreenThumbStageChange();
|
||||||
|
|
||||||
|
int greenThumbStage = (int) ((double) skillLevel / (double) STAGE_CHANGE);
|
||||||
|
if (greenThumbStage > 4) greenThumbStage = 4;
|
||||||
|
|
||||||
switch(this.type) {
|
switch(this.type) {
|
||||||
case CROPS:
|
case CROPS:
|
||||||
case CARROT:
|
case CARROT:
|
||||||
case POTATO:
|
case POTATO:
|
||||||
//This replants the wheat at a certain stage in development based on Herbalism Skill
|
//This replants the wheat at a certain stage in development based on Herbalism Skill
|
||||||
if (!this.profile.getAbilityMode(AbilityType.GREEN_TERRA)) {
|
if (!this.profile.getAbilityMode(AbilityType.GREEN_TERRA)) {
|
||||||
if (this.profile.getSkillLevel(SkillType.HERBALISM) >= 600) {
|
if (greenThumbStage == 3) {
|
||||||
this.block.setData(CropState.MEDIUM.getData());
|
this.block.setData(CropState.MEDIUM.getData());
|
||||||
}
|
}
|
||||||
else if (this.profile.getSkillLevel(SkillType.HERBALISM) >= 400) {
|
else if (greenThumbStage == 2) {
|
||||||
this.block.setData(CropState.SMALL.getData());
|
this.block.setData(CropState.SMALL.getData());
|
||||||
}
|
}
|
||||||
else if (this.profile.getSkillLevel(SkillType.HERBALISM) >= 200) {
|
else if (greenThumbStage == 1) {
|
||||||
this.block.setData(CropState.VERY_SMALL.getData());
|
this.block.setData(CropState.VERY_SMALL.getData());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -49,10 +58,10 @@ public class GreenThumbTimer implements Runnable {
|
|||||||
break;
|
break;
|
||||||
case NETHER_WARTS:
|
case NETHER_WARTS:
|
||||||
if (!this.profile.getAbilityMode(AbilityType.GREEN_TERRA)) {
|
if (!this.profile.getAbilityMode(AbilityType.GREEN_TERRA)) {
|
||||||
if (this.profile.getSkillLevel(SkillType.HERBALISM) >= 600) {
|
if (greenThumbStage == 3) {
|
||||||
this.block.setData((byte) 2);
|
this.block.setData((byte) 2);
|
||||||
}
|
}
|
||||||
else if (this.profile.getSkillLevel(SkillType.HERBALISM) >= 400) {
|
else if (greenThumbStage == 2) {
|
||||||
this.block.setData((byte) 1);
|
this.block.setData((byte) 1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -65,10 +74,10 @@ public class GreenThumbTimer implements Runnable {
|
|||||||
break;
|
break;
|
||||||
case COCOA:
|
case COCOA:
|
||||||
if (!this.profile.getAbilityMode(AbilityType.GREEN_TERRA)) {
|
if (!this.profile.getAbilityMode(AbilityType.GREEN_TERRA)) {
|
||||||
if (this.profile.getSkillLevel(SkillType.HERBALISM) >= 600) {
|
if (greenThumbStage == 3) {
|
||||||
this.block.setData((byte) ((this.block.getData() ^ ((byte) 0xc)) | ((byte) 4)));
|
this.block.setData((byte) ((this.block.getData() ^ ((byte) 0xc)) | ((byte) 4)));
|
||||||
}
|
}
|
||||||
else if (this.profile.getSkillLevel(SkillType.HERBALISM) >= 400) {
|
else if (greenThumbStage == 2) {
|
||||||
this.block.setData((byte) ((this.block.getData() ^ ((byte) 0xc)) | ((byte) 4)));
|
this.block.setData((byte) ((this.block.getData() ^ ((byte) 0xc)) | ((byte) 4)));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -6,12 +6,17 @@ import com.gmail.nossr50.config.AdvancedConfig;
|
|||||||
|
|
||||||
public class Acrobatics {
|
public class Acrobatics {
|
||||||
static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
|
static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
|
||||||
|
public static final int DODGE_MAX_CHANCE = advancedConfig.getDodgeChanceMax();
|
||||||
public static final int DODGE_MAX_BONUS_LEVEL = advancedConfig.getDodgeMaxBonusLevel();
|
public static final int DODGE_MAX_BONUS_LEVEL = advancedConfig.getDodgeMaxBonusLevel();
|
||||||
public static final int DODGE_XP_MODIFIER = advancedConfig.getDodgeXPModifier();
|
public static final int DODGE_XP_MODIFIER = advancedConfig.getDodgeXPModifier();
|
||||||
|
|
||||||
public static final int FALL_XP_MODIFIER = advancedConfig.getFallXPModifier();
|
public static final int ROLL_MAX_CHANCE = advancedConfig.getRollChanceMax();
|
||||||
public static final int ROLL_MAX_BONUS_LEVEL = advancedConfig.getRollMaxBonusLevel();
|
public static final int ROLL_MAX_BONUS_LEVEL = advancedConfig.getRollMaxBonusLevel();
|
||||||
|
public static final int GRACEFUL_MAX_CHANCE = advancedConfig.getGracefulRollChanceMax();
|
||||||
|
public static final int GRACEFUL_MAX_BONUS_LEVEL = advancedConfig.getGracefulRollMaxBonusLevel();
|
||||||
|
|
||||||
public static final int ROLL_XP_MODIFIER = advancedConfig.getRollXPModifier();
|
public static final int ROLL_XP_MODIFIER = advancedConfig.getRollXPModifier();
|
||||||
|
public static final int FALL_XP_MODIFIER = advancedConfig.getFallXPModifier();
|
||||||
|
|
||||||
private static Random random = new Random();
|
private static Random random = new Random();
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ public class AcrobaticsManager {
|
|||||||
this.player = player;
|
this.player = player;
|
||||||
this.profile = Users.getProfile(player);
|
this.profile = Users.getProfile(player);
|
||||||
this.skillLevel = profile.getSkillLevel(SkillType.ACROBATICS);
|
this.skillLevel = profile.getSkillLevel(SkillType.ACROBATICS);
|
||||||
|
this.permissionInstance = Permissions.getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -38,13 +39,20 @@ public class AcrobaticsManager {
|
|||||||
|
|
||||||
RollEventHandler eventHandler = new RollEventHandler(this, event);
|
RollEventHandler eventHandler = new RollEventHandler(this, event);
|
||||||
|
|
||||||
int randomChance = 1000;
|
int randomChance = 100;
|
||||||
|
|
||||||
if (Permissions.luckyAcrobatics(player)) {
|
if (Permissions.luckyAcrobatics(player)) {
|
||||||
randomChance = (int) (randomChance * 0.75);
|
randomChance = (int) (randomChance * 0.75);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Acrobatics.getRandom().nextInt(randomChance) <= eventHandler.skillModifier && !eventHandler.isFatal(eventHandler.modifiedDamage)) {
|
float chance = (float) (((double) Acrobatics.ROLL_MAX_CHANCE / (double) Acrobatics.ROLL_MAX_BONUS_LEVEL) * skillLevel);
|
||||||
|
if (chance > Acrobatics.ROLL_MAX_CHANCE) chance = Acrobatics.ROLL_MAX_CHANCE;
|
||||||
|
if (eventHandler.isGraceful) {
|
||||||
|
chance = (float) (((double) Acrobatics.GRACEFUL_MAX_CHANCE / (double) Acrobatics.GRACEFUL_MAX_BONUS_LEVEL) * skillLevel);
|
||||||
|
if (chance > Acrobatics.GRACEFUL_MAX_CHANCE) chance = Acrobatics.GRACEFUL_MAX_CHANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (chance > Acrobatics.getRandom().nextInt(randomChance) && !eventHandler.isFatal(eventHandler.modifiedDamage)) {
|
||||||
eventHandler.modifyEventDamage();
|
eventHandler.modifyEventDamage();
|
||||||
eventHandler.sendAbilityMessage();
|
eventHandler.sendAbilityMessage();
|
||||||
eventHandler.processXPGain(eventHandler.damage * Acrobatics.ROLL_XP_MODIFIER);
|
eventHandler.processXPGain(eventHandler.damage * Acrobatics.ROLL_XP_MODIFIER);
|
||||||
@ -69,13 +77,16 @@ public class AcrobaticsManager {
|
|||||||
|
|
||||||
DodgeEventHandler eventHandler = new DodgeEventHandler(this, event);
|
DodgeEventHandler eventHandler = new DodgeEventHandler(this, event);
|
||||||
|
|
||||||
int randomChance = 4000;
|
int randomChance = 100;
|
||||||
|
|
||||||
if (Permissions.luckyAcrobatics(player)) {
|
if (Permissions.luckyAcrobatics(player)) {
|
||||||
randomChance = (int) (randomChance * 0.75);
|
randomChance = (int) (randomChance * 0.75);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Acrobatics.getRandom().nextInt(randomChance) <= eventHandler.skillModifier && !eventHandler.isFatal(eventHandler.modifiedDamage)) {
|
float chance = (float) (((double) Acrobatics.DODGE_MAX_CHANCE / (double) Acrobatics.DODGE_MAX_BONUS_LEVEL) * skillLevel);
|
||||||
|
if (chance > Acrobatics.DODGE_MAX_CHANCE) chance = Acrobatics.DODGE_MAX_CHANCE;
|
||||||
|
|
||||||
|
if (chance > Acrobatics.getRandom().nextInt(randomChance) && !eventHandler.isFatal(eventHandler.modifiedDamage)) {
|
||||||
eventHandler.modifyEventDamage();
|
eventHandler.modifyEventDamage();
|
||||||
eventHandler.sendAbilityMessage();
|
eventHandler.sendAbilityMessage();
|
||||||
eventHandler.processXPGain(eventHandler.damage * Acrobatics.DODGE_XP_MODIFIER);
|
eventHandler.processXPGain(eventHandler.damage * Acrobatics.DODGE_XP_MODIFIER);
|
||||||
|
@ -9,7 +9,7 @@ import com.gmail.nossr50.util.Permissions;
|
|||||||
import com.gmail.nossr50.util.Skills;
|
import com.gmail.nossr50.util.Skills;
|
||||||
|
|
||||||
public class RollEventHandler extends AcrobaticsEventHandler {
|
public class RollEventHandler extends AcrobaticsEventHandler {
|
||||||
private boolean isGraceful;
|
public boolean isGraceful;
|
||||||
private int damageThreshold;
|
private int damageThreshold;
|
||||||
|
|
||||||
protected RollEventHandler(AcrobaticsManager manager, EntityDamageEvent event) {
|
protected RollEventHandler(AcrobaticsManager manager, EntityDamageEvent event) {
|
||||||
|
@ -18,12 +18,14 @@ public class Archery {
|
|||||||
private static List<TrackedEntity> trackedEntities = new ArrayList<TrackedEntity>();
|
private static List<TrackedEntity> trackedEntities = new ArrayList<TrackedEntity>();
|
||||||
|
|
||||||
public static final int ARROW_TRACKING_MAX_BONUS_LEVEL = advancedConfig.getRetrieveMaxBonusLevel();
|
public static final int ARROW_TRACKING_MAX_BONUS_LEVEL = advancedConfig.getRetrieveMaxBonusLevel();
|
||||||
|
public static final int ARROW_TRACKING_MAX_BONUS = advancedConfig.getRetrieveBonusMax();
|
||||||
|
|
||||||
public static final int BONUS_DAMAGE_INCREASE_LEVEL = advancedConfig.getSkillShotIncreaseLevel();
|
public static final int BONUS_DAMAGE_INCREASE_LEVEL = advancedConfig.getSkillShotIncreaseLevel();
|
||||||
public static final double BONUS_DAMAGE_INCREASE_PERCENT = advancedConfig.getSkillShotIncreasePercentage();
|
public static final double BONUS_DAMAGE_INCREASE_PERCENT = advancedConfig.getSkillShotIncreasePercentage();
|
||||||
public static final double BONUS_DAMAGE_MAX_BONUS_PERCENTAGE = advancedConfig.getSkillShotBonusMax();
|
public static final double BONUS_DAMAGE_MAX_BONUS_PERCENTAGE = advancedConfig.getSkillShotBonusMax();
|
||||||
|
|
||||||
public static final int DAZE_MAX_BONUS_LEVEL = advancedConfig.getDazeMaxBonusLevel();
|
public static final int DAZE_MAX_BONUS_LEVEL = advancedConfig.getDazeMaxBonusLevel();
|
||||||
|
public static final int DAZE_MAX_BONUS = advancedConfig.getDazeBonusMax();
|
||||||
public static final int DAZE_MODIFIER = advancedConfig.getDazeModifier();
|
public static final int DAZE_MODIFIER = advancedConfig.getDazeModifier();
|
||||||
|
|
||||||
protected static void incrementTrackerValue(LivingEntity livingEntity) {
|
protected static void incrementTrackerValue(LivingEntity livingEntity) {
|
||||||
|
@ -4,24 +4,16 @@ import org.bukkit.entity.LivingEntity;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent;
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.AdvancedConfig;
|
|
||||||
import com.gmail.nossr50.datatypes.PlayerProfile;
|
import com.gmail.nossr50.datatypes.PlayerProfile;
|
||||||
import com.gmail.nossr50.datatypes.SkillType;
|
import com.gmail.nossr50.datatypes.SkillType;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
import com.gmail.nossr50.util.Users;
|
import com.gmail.nossr50.util.Users;
|
||||||
|
|
||||||
public class ArcheryManager {
|
public class ArcheryManager {
|
||||||
AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
|
|
||||||
|
|
||||||
private Player player;
|
private Player player;
|
||||||
private PlayerProfile profile;
|
private PlayerProfile profile;
|
||||||
private int skillLevel;
|
private int skillLevel;
|
||||||
|
|
||||||
private float dazeBonusMax = advancedConfig.getDazeBonusMax();
|
|
||||||
private float dazeMaxBonusLevel = advancedConfig.getDazeMaxBonusLevel();
|
|
||||||
private float retrieveBonusMax = advancedConfig.getRetrieveBonusMax();
|
|
||||||
private float retrieveMaxBonusLevel = advancedConfig.getRetrieveMaxBonusLevel();
|
|
||||||
|
|
||||||
public ArcheryManager (Player player) {
|
public ArcheryManager (Player player) {
|
||||||
this.player = player;
|
this.player = player;
|
||||||
this.profile = Users.getProfile(player);
|
this.profile = Users.getProfile(player);
|
||||||
@ -52,7 +44,10 @@ public class ArcheryManager {
|
|||||||
if (Permissions.luckyArchery(player)) {
|
if (Permissions.luckyArchery(player)) {
|
||||||
randomChance = (int) (randomChance * 0.75);
|
randomChance = (int) (randomChance * 0.75);
|
||||||
}
|
}
|
||||||
final float chance = (float) (((double) retrieveBonusMax / (double) retrieveMaxBonusLevel) * skillLevel);
|
|
||||||
|
float chance = (float) (((double) Archery.ARROW_TRACKING_MAX_BONUS / (double) Archery.ARROW_TRACKING_MAX_BONUS_LEVEL) * skillLevel);
|
||||||
|
if (chance > Archery.ARROW_TRACKING_MAX_BONUS) chance = Archery.ARROW_TRACKING_MAX_BONUS;
|
||||||
|
|
||||||
if (chance > Archery.getRandom().nextInt(randomChance)) {
|
if (chance > Archery.getRandom().nextInt(randomChance)) {
|
||||||
eventHandler.addToTracker();
|
eventHandler.addToTracker();
|
||||||
}
|
}
|
||||||
@ -80,7 +75,9 @@ public class ArcheryManager {
|
|||||||
randomChance = (int) (randomChance * 0.75);
|
randomChance = (int) (randomChance * 0.75);
|
||||||
}
|
}
|
||||||
|
|
||||||
final float chance = (float) (((double) dazeBonusMax / (double) dazeMaxBonusLevel) * skillLevel);
|
float chance = (float) (((double) Archery.DAZE_MAX_BONUS / (double) Archery.DAZE_MAX_BONUS_LEVEL) * skillLevel);
|
||||||
|
if (chance > Archery.DAZE_MAX_BONUS) chance = Archery.DAZE_MAX_BONUS;
|
||||||
|
|
||||||
if (chance > Archery.getRandom().nextInt(randomChance)) {
|
if (chance > Archery.getRandom().nextInt(randomChance)) {
|
||||||
eventHandler.handleDazeEffect();
|
eventHandler.handleDazeEffect();
|
||||||
eventHandler.sendAbilityMessages();
|
eventHandler.sendAbilityMessages();
|
||||||
|
@ -89,6 +89,7 @@ public class Axes {
|
|||||||
|
|
||||||
int randomChance = 100;
|
int randomChance = 100;
|
||||||
double chance = (MAX_CHANCE / MAX_BONUS_LEVEL) * skillCheck;
|
double chance = (MAX_CHANCE / MAX_BONUS_LEVEL) * skillCheck;
|
||||||
|
if (chance > MAX_CHANCE) chance = MAX_CHANCE;
|
||||||
|
|
||||||
if (Permissions.luckyAxes(attacker)) {
|
if (Permissions.luckyAxes(attacker)) {
|
||||||
randomChance = (int) (randomChance * 0.75);
|
randomChance = (int) (randomChance * 0.75);
|
||||||
|
@ -13,6 +13,7 @@ import org.bukkit.inventory.PlayerInventory;
|
|||||||
import org.bukkit.material.MaterialData;
|
import org.bukkit.material.MaterialData;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
|
import com.gmail.nossr50.config.AdvancedConfig;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.config.mods.CustomBlocksConfig;
|
import com.gmail.nossr50.config.mods.CustomBlocksConfig;
|
||||||
import com.gmail.nossr50.datatypes.AbilityType;
|
import com.gmail.nossr50.datatypes.AbilityType;
|
||||||
@ -30,6 +31,7 @@ import com.gmail.nossr50.util.Users;
|
|||||||
public class Herbalism {
|
public class Herbalism {
|
||||||
|
|
||||||
private static Random random = new Random();
|
private static Random random = new Random();
|
||||||
|
static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Activate the Green Terra ability.
|
* Activate the Green Terra ability.
|
||||||
@ -85,7 +87,8 @@ public class Herbalism {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
final PlayerProfile profile = Users.getProfile(player);
|
final PlayerProfile profile = Users.getProfile(player);
|
||||||
final int MAX_BONUS_LEVEL = 1000;
|
final double MAX_CHANCE = advancedConfig.getHerbalismDoubleDropsChanceMax();
|
||||||
|
final int MAX_BONUS_LEVEL = advancedConfig.getHerbalismDoubleDropsMaxLevel();
|
||||||
|
|
||||||
int herbLevel = profile.getSkillLevel(SkillType.HERBALISM);
|
int herbLevel = profile.getSkillLevel(SkillType.HERBALISM);
|
||||||
int id = block.getTypeId();
|
int id = block.getTypeId();
|
||||||
@ -101,12 +104,15 @@ public class Herbalism {
|
|||||||
|
|
||||||
boolean customPlant = false;
|
boolean customPlant = false;
|
||||||
|
|
||||||
int randomChance = 1000;
|
int randomChance = 100;
|
||||||
|
|
||||||
if (Permissions.luckyHerbalism(player)) {
|
if (Permissions.luckyHerbalism(player)) {
|
||||||
randomChance = (int) (randomChance * 0.75);
|
randomChance = (int) (randomChance * 0.75);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float chance = (float) (((double) MAX_CHANCE / (double) MAX_BONUS_LEVEL) * herbLevel);
|
||||||
|
if (chance > MAX_CHANCE) chance = (float) MAX_CHANCE;
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case BROWN_MUSHROOM:
|
case BROWN_MUSHROOM:
|
||||||
case RED_MUSHROOM:
|
case RED_MUSHROOM:
|
||||||
@ -122,7 +128,7 @@ public class Herbalism {
|
|||||||
if (b.getType().equals(Material.CACTUS)) {
|
if (b.getType().equals(Material.CACTUS)) {
|
||||||
mat = Material.CACTUS;
|
mat = Material.CACTUS;
|
||||||
if (!mcMMO.placeStore.isTrue(b)) {
|
if (!mcMMO.placeStore.isTrue(b)) {
|
||||||
if (herbLevel > MAX_BONUS_LEVEL || random.nextInt(randomChance) <= herbLevel) {
|
if (chance > random.nextInt(randomChance)) {
|
||||||
catciDrops++;
|
catciDrops++;
|
||||||
}
|
}
|
||||||
xp += Config.getInstance().getHerbalismXPCactus();
|
xp += Config.getInstance().getHerbalismXPCactus();
|
||||||
@ -182,7 +188,7 @@ public class Herbalism {
|
|||||||
if (b.getType().equals(Material.SUGAR_CANE_BLOCK)) {
|
if (b.getType().equals(Material.SUGAR_CANE_BLOCK)) {
|
||||||
mat = Material.SUGAR_CANE;
|
mat = Material.SUGAR_CANE;
|
||||||
if (!mcMMO.placeStore.isTrue(b)) {
|
if (!mcMMO.placeStore.isTrue(b)) {
|
||||||
if (herbLevel > MAX_BONUS_LEVEL || random.nextInt(randomChance) <= herbLevel) {
|
if (chance > random.nextInt(randomChance)) {
|
||||||
caneDrops++;
|
caneDrops++;
|
||||||
}
|
}
|
||||||
xp += Config.getInstance().getHerbalismXPSugarCane();
|
xp += Config.getInstance().getHerbalismXPSugarCane();
|
||||||
@ -275,7 +281,7 @@ public class Herbalism {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (herbLevel > MAX_BONUS_LEVEL || random.nextInt(randomChance) <= herbLevel) {
|
if (chance > random.nextInt(randomChance)) {
|
||||||
Config configInstance = Config.getInstance();
|
Config configInstance = Config.getInstance();
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
@ -399,7 +405,8 @@ public class Herbalism {
|
|||||||
* @param plugin mcMMO plugin instance
|
* @param plugin mcMMO plugin instance
|
||||||
*/
|
*/
|
||||||
private static void greenThumbWheat(Block block, Player player, BlockBreakEvent event, mcMMO plugin) {
|
private static void greenThumbWheat(Block block, Player player, BlockBreakEvent event, mcMMO plugin) {
|
||||||
final int MAX_BONUS_LEVEL = 1500;
|
final int MAX_CHANCE = advancedConfig.getGreenThumbChanceMax();
|
||||||
|
final int MAX_BONUS_LEVEL = advancedConfig.getGreenThumbMaxLevel();
|
||||||
|
|
||||||
PlayerProfile profile = Users.getProfile(player);
|
PlayerProfile profile = Users.getProfile(player);
|
||||||
int herbLevel = profile.getSkillLevel(SkillType.HERBALISM);
|
int herbLevel = profile.getSkillLevel(SkillType.HERBALISM);
|
||||||
@ -429,13 +436,16 @@ public class Herbalism {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
int randomChance = 1500;
|
int randomChance = 100;
|
||||||
|
|
||||||
if (Permissions.luckyHerbalism(player)) {
|
if (Permissions.luckyHerbalism(player)) {
|
||||||
randomChance = (int) (randomChance * 0.75);
|
randomChance = (int) (randomChance * 0.75);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasSeeds && profile.getAbilityMode(AbilityType.GREEN_TERRA) || hasSeeds && (herbLevel > MAX_BONUS_LEVEL || random.nextInt(randomChance) <= herbLevel)) {
|
float chance = (float) (((double) MAX_CHANCE / (double) MAX_BONUS_LEVEL) * herbLevel);
|
||||||
|
if (chance > MAX_CHANCE) chance = (float) MAX_CHANCE;
|
||||||
|
|
||||||
|
if (hasSeeds && profile.getAbilityMode(AbilityType.GREEN_TERRA) || hasSeeds && (chance > random.nextInt(randomChance))) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|
||||||
switch(type) {
|
switch(type) {
|
||||||
@ -481,7 +491,8 @@ public class Herbalism {
|
|||||||
* @param block The block being used in the ability
|
* @param block The block being used in the ability
|
||||||
*/
|
*/
|
||||||
public static void greenThumbBlocks(ItemStack is, Player player, Block block) {
|
public static void greenThumbBlocks(ItemStack is, Player player, Block block) {
|
||||||
final int MAX_BONUS_LEVEL = 1500;
|
final int MAX_CHANCE = advancedConfig.getGreenThumbChanceMax();
|
||||||
|
final int MAX_BONUS_LEVEL = advancedConfig.getGreenThumbMaxLevel();
|
||||||
|
|
||||||
PlayerProfile profile = Users.getProfile(player);
|
PlayerProfile profile = Users.getProfile(player);
|
||||||
int skillLevel = profile.getSkillLevel(SkillType.HERBALISM);
|
int skillLevel = profile.getSkillLevel(SkillType.HERBALISM);
|
||||||
@ -489,13 +500,16 @@ public class Herbalism {
|
|||||||
|
|
||||||
player.setItemInHand(new ItemStack(Material.SEEDS, seeds - 1));
|
player.setItemInHand(new ItemStack(Material.SEEDS, seeds - 1));
|
||||||
|
|
||||||
int randomChance = 1500;
|
int randomChance = 100;
|
||||||
|
|
||||||
if (Permissions.luckyHerbalism(player)) {
|
if (Permissions.luckyHerbalism(player)) {
|
||||||
randomChance = (int) (randomChance * 0.75);
|
randomChance = (int) (randomChance * 0.75);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (skillLevel > MAX_BONUS_LEVEL || random.nextInt(randomChance) <= skillLevel) {
|
float chance = (float) (((double) MAX_CHANCE / (double) MAX_BONUS_LEVEL) * skillLevel);
|
||||||
|
if (chance > MAX_CHANCE) chance = (float) MAX_CHANCE;
|
||||||
|
|
||||||
|
if (chance > random.nextInt(randomChance)) {
|
||||||
greenTerraConvert(player, block);
|
greenTerraConvert(player, block);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -84,6 +84,8 @@ public class WoodCutting {
|
|||||||
if (health >= 2) {
|
if (health >= 2) {
|
||||||
Combat.dealDamage(player, random.nextInt(health - 1));
|
Combat.dealDamage(player, random.nextInt(health - 1));
|
||||||
}
|
}
|
||||||
|
inHand.setDurability((short) (inHand.getType().getMaxDurability()));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((inHand.getDurability() + durabilityLoss >= inHand.getType().getMaxDurability()) || inHand.getType().equals(Material.AIR)) {
|
else if ((inHand.getDurability() + durabilityLoss >= inHand.getType().getMaxDurability()) || inHand.getType().equals(Material.AIR)) {
|
||||||
@ -94,6 +96,8 @@ public class WoodCutting {
|
|||||||
if (health >= 2) {
|
if (health >= 2) {
|
||||||
Combat.dealDamage(player, random.nextInt(health - 1));
|
Combat.dealDamage(player, random.nextInt(health - 1));
|
||||||
}
|
}
|
||||||
|
inHand.setDurability((short) (inHand.getType().getMaxDurability()));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Damage the tool */
|
/* Damage the tool */
|
||||||
@ -352,6 +356,7 @@ public class WoodCutting {
|
|||||||
|
|
||||||
int randomChance = 100;
|
int randomChance = 100;
|
||||||
int chance = (int) (((double) MAX_CHANCE / (double) MAX_BONUS_LEVEL) * skillLevel);
|
int chance = (int) (((double) MAX_CHANCE / (double) MAX_BONUS_LEVEL) * skillLevel);
|
||||||
|
if (chance > MAX_CHANCE) chance = MAX_CHANCE;
|
||||||
|
|
||||||
if (Permissions.luckyWoodcutting(player)) {
|
if (Permissions.luckyWoodcutting(player)) {
|
||||||
randomChance = (int) (randomChance * 0.75);
|
randomChance = (int) (randomChance * 0.75);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package com.gmail.nossr50.skills.gathering;
|
package com.gmail.nossr50.skills.mining;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
@ -1,4 +1,4 @@
|
|||||||
package com.gmail.nossr50.skills.gathering;
|
package com.gmail.nossr50.skills.mining;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
@ -30,10 +30,10 @@ public class Repair {
|
|||||||
|
|
||||||
static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
|
static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
|
||||||
|
|
||||||
private static int repairMasteryChanceMax = advancedConfig.getRepairMasteryChanceMax();
|
public static final int REPAIR_MASTERY_CHANCE_MAX = advancedConfig.getRepairMasteryChanceMax();
|
||||||
private static int repairMasteryMaxBonusLevel = advancedConfig.getRepairMasteryMaxLevel();
|
public static final int REPAIR_MASTERY_MAX_BONUS_LEVEL = advancedConfig.getRepairMasteryMaxLevel();
|
||||||
private static int superRepairChanceMax = advancedConfig.getSuperRepairChanceMax();
|
public static final int SUPER_REPAIR_CHANCE_MAX = advancedConfig.getSuperRepairChanceMax();
|
||||||
private static int superRepairMaxBonusLevel = advancedConfig.getSuperRepairMaxLevel();
|
public static final int SUPER_REPAIR_MAX_BONUS_LEVEL = advancedConfig.getSuperRepairMaxLevel();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle the XP gain for repair events.
|
* Handle the XP gain for repair events.
|
||||||
@ -240,8 +240,8 @@ public class Repair {
|
|||||||
*/
|
*/
|
||||||
protected static short repairCalculate(Player player, int skillLevel, short durability, int repairAmount) {
|
protected static short repairCalculate(Player player, int skillLevel, short durability, int repairAmount) {
|
||||||
float bonus;
|
float bonus;
|
||||||
if(skillLevel >= repairMasteryMaxBonusLevel) bonus = ((float) repairMasteryChanceMax / 100F);
|
if(skillLevel >= REPAIR_MASTERY_MAX_BONUS_LEVEL) bonus = ((float) REPAIR_MASTERY_CHANCE_MAX / 100F);
|
||||||
else bonus = (((float) skillLevel) / ((float) repairMasteryMaxBonusLevel)) * (((float) repairMasteryChanceMax) / 100F);
|
else bonus = (((float) skillLevel) / ((float) REPAIR_MASTERY_MAX_BONUS_LEVEL)) * (((float) REPAIR_MASTERY_CHANCE_MAX) / 100F);
|
||||||
|
|
||||||
if (Permissions.repairMastery(player)) {
|
if (Permissions.repairMastery(player)) {
|
||||||
bonus = (((float) repairAmount) * bonus);
|
bonus = (((float) repairAmount) * bonus);
|
||||||
@ -271,14 +271,11 @@ public class Repair {
|
|||||||
* @return true if bonus granted, false otherwise
|
* @return true if bonus granted, false otherwise
|
||||||
*/
|
*/
|
||||||
public static boolean checkPlayerProcRepair(Player player) {
|
public static boolean checkPlayerProcRepair(Player player) {
|
||||||
final int MAX_CHANCE = superRepairChanceMax;
|
|
||||||
final int MAX_BONUS_LEVEL = superRepairMaxBonusLevel;
|
|
||||||
|
|
||||||
int skillLevel = Users.getProfile(player).getSkillLevel(SkillType.REPAIR);
|
int skillLevel = Users.getProfile(player).getSkillLevel(SkillType.REPAIR);
|
||||||
|
|
||||||
int randomChance = 100;
|
int randomChance = 100;
|
||||||
int chance = (int) (((double) MAX_CHANCE / (double) MAX_BONUS_LEVEL) * skillLevel);
|
int chance = (int) (((double) SUPER_REPAIR_CHANCE_MAX / (double) SUPER_REPAIR_MAX_BONUS_LEVEL) * skillLevel);
|
||||||
if (skillLevel >= MAX_BONUS_LEVEL) chance = MAX_CHANCE;
|
if (skillLevel >= SUPER_REPAIR_MAX_BONUS_LEVEL) chance = SUPER_REPAIR_CHANCE_MAX;
|
||||||
|
|
||||||
if (Permissions.luckyRepair(player)) randomChance = (int) (randomChance * 0.75);
|
if (Permissions.luckyRepair(player)) randomChance = (int) (randomChance * 0.75);
|
||||||
|
|
||||||
|
@ -7,10 +7,12 @@ import com.gmail.nossr50.config.AdvancedConfig;
|
|||||||
public class Swords {
|
public class Swords {
|
||||||
static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
|
static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
|
||||||
|
|
||||||
|
public static final int BLEED_CHANCE_MAX = AdvancedConfig.getInstance().getBleedChanceMax();
|
||||||
public static final int BLEED_MAX_BONUS_LEVEL = advancedConfig.getBleedMaxBonusLevel();
|
public static final int BLEED_MAX_BONUS_LEVEL = advancedConfig.getBleedMaxBonusLevel();
|
||||||
public static final int MAX_BLEED_TICKS = advancedConfig.getBleedMaxTicks();
|
public static final int MAX_BLEED_TICKS = advancedConfig.getBleedMaxTicks();
|
||||||
public static final int BASE_BLEED_TICKS = advancedConfig.getBleedBaseTicks();
|
public static final int BASE_BLEED_TICKS = advancedConfig.getBleedBaseTicks();
|
||||||
|
|
||||||
|
public static final int COUNTER_ATTACK_CHANCE_MAX = advancedConfig.getCounterChanceMax();
|
||||||
public static final int COUNTER_ATTACK_MAX_BONUS_LEVEL = advancedConfig.getCounterMaxBonusLevel();
|
public static final int COUNTER_ATTACK_MAX_BONUS_LEVEL = advancedConfig.getCounterMaxBonusLevel();
|
||||||
public static final int COUNTER_ATTACK_MODIFIER = advancedConfig.getCounterModifier();
|
public static final int COUNTER_ATTACK_MODIFIER = advancedConfig.getCounterModifier();
|
||||||
|
|
||||||
|
@ -3,7 +3,6 @@ package com.gmail.nossr50.skills.swords;
|
|||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.AdvancedConfig;
|
|
||||||
import com.gmail.nossr50.datatypes.PlayerProfile;
|
import com.gmail.nossr50.datatypes.PlayerProfile;
|
||||||
import com.gmail.nossr50.datatypes.SkillType;
|
import com.gmail.nossr50.datatypes.SkillType;
|
||||||
import com.gmail.nossr50.util.Combat;
|
import com.gmail.nossr50.util.Combat;
|
||||||
@ -37,15 +36,15 @@ public class SwordsManager {
|
|||||||
if (Combat.shouldBeAffected(player, defender)) {
|
if (Combat.shouldBeAffected(player, defender)) {
|
||||||
BleedEventHandler eventHandler = new BleedEventHandler(this, defender);
|
BleedEventHandler eventHandler = new BleedEventHandler(this, defender);
|
||||||
|
|
||||||
int bleedChanceMax = AdvancedConfig.getInstance().getBleedChanceMax();
|
|
||||||
int bleedMaxLevel = AdvancedConfig.getInstance().getBleedMaxBonusLevel();
|
|
||||||
int randomChance = 100;
|
int randomChance = 100;
|
||||||
|
|
||||||
if (Permissions.luckySwords(player)) {
|
if (Permissions.luckySwords(player)) {
|
||||||
randomChance = (int) (randomChance * 0.75);
|
randomChance = (int) (randomChance * 0.75);
|
||||||
}
|
}
|
||||||
|
|
||||||
final float chance = (float) (((double) bleedChanceMax / (double) bleedMaxLevel) * skillLevel);
|
float chance = (float) (((double) Swords.BLEED_CHANCE_MAX / (double) Swords.BLEED_MAX_BONUS_LEVEL) * skillLevel);
|
||||||
|
if (chance > Swords.BLEED_CHANCE_MAX) chance = Swords.BLEED_CHANCE_MAX;
|
||||||
|
|
||||||
if (chance > Swords.getRandom().nextInt(randomChance)) {
|
if (chance > Swords.getRandom().nextInt(randomChance)) {
|
||||||
eventHandler.addBleedTicks();
|
eventHandler.addBleedTicks();
|
||||||
eventHandler.sendAbilityMessages();
|
eventHandler.sendAbilityMessages();
|
||||||
@ -65,15 +64,16 @@ public class SwordsManager {
|
|||||||
|
|
||||||
if (eventHandler.isHoldingSword()) {
|
if (eventHandler.isHoldingSword()) {
|
||||||
eventHandler.calculateSkillModifier();
|
eventHandler.calculateSkillModifier();
|
||||||
int counterChanceMax = AdvancedConfig.getInstance().getCounterChanceMax();
|
|
||||||
int counterMaxLevel = AdvancedConfig.getInstance().getCounterMaxBonusLevel();
|
|
||||||
int randomChance = 100;
|
int randomChance = 100;
|
||||||
|
|
||||||
if (Permissions.luckySwords(player)) {
|
if (Permissions.luckySwords(player)) {
|
||||||
randomChance = (int) (randomChance * 0.75);
|
randomChance = (int) (randomChance * 0.75);
|
||||||
}
|
}
|
||||||
|
|
||||||
final float chance = (float) (((double) counterChanceMax / (double) counterMaxLevel) * skillLevel);
|
float chance = (float) (((double) Swords.COUNTER_ATTACK_CHANCE_MAX / (double) Swords.COUNTER_ATTACK_MAX_BONUS_LEVEL) * skillLevel);
|
||||||
|
if (chance > Swords.COUNTER_ATTACK_CHANCE_MAX) chance = Swords.COUNTER_ATTACK_CHANCE_MAX;
|
||||||
|
|
||||||
if (chance > Swords.getRandom().nextInt(randomChance)) {
|
if (chance > Swords.getRandom().nextInt(randomChance)) {
|
||||||
eventHandler.dealDamage();
|
eventHandler.dealDamage();
|
||||||
eventHandler.sendAbilityMessages();
|
eventHandler.sendAbilityMessages();
|
||||||
|
@ -9,7 +9,6 @@ import org.bukkit.entity.Ocelot;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Tameable;
|
import org.bukkit.entity.Tameable;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.metadata.FixedMetadataValue;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
@ -68,7 +67,7 @@ public class CallOfTheWildEventHandler {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
LivingEntity entity = (LivingEntity) player.getWorld().spawnEntity(player.getLocation(), type);
|
LivingEntity entity = (LivingEntity) player.getWorld().spawnEntity(player.getLocation(), type);
|
||||||
mcMMO.p.placeStore.addSpawnedPet((Entity) entity);
|
mcMMO.placeStore.addSpawnedPet((Entity) entity);
|
||||||
|
|
||||||
((Tameable) entity).setOwner(player);
|
((Tameable) entity).setOwner(player);
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ public class Taming {
|
|||||||
public static final int FAST_FOOD_SERVICE_ACTIVATION_CHANCE = advancedConfig.getFastFoodChance();
|
public static final int FAST_FOOD_SERVICE_ACTIVATION_CHANCE = advancedConfig.getFastFoodChance();
|
||||||
public static final int FAST_FOOD_SERVICE_ACTIVATION_LEVEL = advancedConfig.getFastFoodUnlock();
|
public static final int FAST_FOOD_SERVICE_ACTIVATION_LEVEL = advancedConfig.getFastFoodUnlock();
|
||||||
|
|
||||||
|
public static final int GORE_CHANCE_MAX = AdvancedConfig.getInstance().getGoreChanceMax();
|
||||||
public static final int GORE_BLEED_TICKS = advancedConfig.getGoreBleedTicks();
|
public static final int GORE_BLEED_TICKS = advancedConfig.getGoreBleedTicks();
|
||||||
public static final int GORE_MAX_BONUS_LEVEL = advancedConfig.getGoreMaxBonusLevel();
|
public static final int GORE_MAX_BONUS_LEVEL = advancedConfig.getGoreMaxBonusLevel();
|
||||||
public static final int GORE_MULTIPLIER = advancedConfig.getGoreModifier();
|
public static final int GORE_MULTIPLIER = advancedConfig.getGoreModifier();
|
||||||
|
@ -8,7 +8,6 @@ import org.bukkit.event.entity.EntityDamageEvent;
|
|||||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.AdvancedConfig;
|
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.datatypes.PlayerProfile;
|
import com.gmail.nossr50.datatypes.PlayerProfile;
|
||||||
import com.gmail.nossr50.datatypes.SkillType;
|
import com.gmail.nossr50.datatypes.SkillType;
|
||||||
@ -92,15 +91,15 @@ public class TamingManager {
|
|||||||
|
|
||||||
GoreEventHandler eventHandler = new GoreEventHandler(this, event);
|
GoreEventHandler eventHandler = new GoreEventHandler(this, event);
|
||||||
|
|
||||||
int goreChanceMax = AdvancedConfig.getInstance().getGoreChanceMax();
|
|
||||||
int goreMaxLevel = AdvancedConfig.getInstance().getGoreMaxBonusLevel();
|
|
||||||
int randomChance = 100;
|
int randomChance = 100;
|
||||||
|
|
||||||
if (Permissions.luckyTaming(player)) {
|
if (Permissions.luckyTaming(player)) {
|
||||||
randomChance = (int) (randomChance * 0.75);
|
randomChance = (int) (randomChance * 0.75);
|
||||||
}
|
}
|
||||||
|
|
||||||
final float chance = (float) (((double) goreChanceMax / (double) goreMaxLevel) * skillLevel);
|
float chance = (float) (((double) Taming.GORE_CHANCE_MAX / (double) Taming.GORE_MAX_BONUS_LEVEL) * skillLevel);
|
||||||
|
if (chance > Taming.GORE_CHANCE_MAX) chance = Taming.GORE_CHANCE_MAX;
|
||||||
|
|
||||||
if (chance > Taming.getRandom().nextInt(randomChance)) {
|
if (chance > Taming.getRandom().nextInt(randomChance)) {
|
||||||
eventHandler.modifyEventDamage();
|
eventHandler.modifyEventDamage();
|
||||||
eventHandler.applyBleed();
|
eventHandler.applyBleed();
|
||||||
|
@ -9,10 +9,13 @@ public class Unarmed {
|
|||||||
|
|
||||||
public static final int BONUS_DAMAGE_MAX_BONUS_MODIFIER = advancedConfig.getIronArmBonus();
|
public static final int BONUS_DAMAGE_MAX_BONUS_MODIFIER = advancedConfig.getIronArmBonus();
|
||||||
public static final int BONUS_DAMAGE_INCREASE_LEVEL = advancedConfig.getIronArmIncreaseLevel();
|
public static final int BONUS_DAMAGE_INCREASE_LEVEL = advancedConfig.getIronArmIncreaseLevel();
|
||||||
|
|
||||||
public static final int DEFLECT_MAX_CHANCE = advancedConfig.getDisarmChanceMax() ;
|
public static final int DEFLECT_MAX_CHANCE = advancedConfig.getDisarmChanceMax() ;
|
||||||
public static final int DEFLECT_MAX_BONUS_LEVEL = advancedConfig.getDisarmMaxBonusLevel();
|
public static final int DEFLECT_MAX_BONUS_LEVEL = advancedConfig.getDisarmMaxBonusLevel();
|
||||||
|
|
||||||
public static final int DISARM_MAX_CHANCE = advancedConfig.getDeflectChanceMax();
|
public static final int DISARM_MAX_CHANCE = advancedConfig.getDeflectChanceMax();
|
||||||
public static final int DISARM_MAX_BONUS_LEVEL = advancedConfig.getDeflectMaxBonusLevel();
|
public static final int DISARM_MAX_BONUS_LEVEL = advancedConfig.getDeflectMaxBonusLevel();
|
||||||
|
|
||||||
public static final int IRON_GRIP_MAX_CHANCE = advancedConfig.getIronGripChanceMax();
|
public static final int IRON_GRIP_MAX_CHANCE = advancedConfig.getIronGripChanceMax();
|
||||||
public static final int IRON_GRIP_MAX_BONUS_LEVEL = advancedConfig.getIronGripMaxBonusLevel();
|
public static final int IRON_GRIP_MAX_BONUS_LEVEL = advancedConfig.getIronGripMaxBonusLevel();
|
||||||
|
|
||||||
|
@ -3,7 +3,6 @@ package com.gmail.nossr50.skills.unarmed;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent;
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.AdvancedConfig;
|
|
||||||
import com.gmail.nossr50.datatypes.PlayerProfile;
|
import com.gmail.nossr50.datatypes.PlayerProfile;
|
||||||
import com.gmail.nossr50.datatypes.SkillType;
|
import com.gmail.nossr50.datatypes.SkillType;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
@ -38,15 +37,15 @@ public class UnarmedManager {
|
|||||||
if (eventHandler.isHoldingItem()) {
|
if (eventHandler.isHoldingItem()) {
|
||||||
eventHandler.calculateSkillModifier();
|
eventHandler.calculateSkillModifier();
|
||||||
|
|
||||||
int disarmChanceMax = AdvancedConfig.getInstance().getDisarmChanceMax();
|
|
||||||
int disarmMaxLevel = AdvancedConfig.getInstance().getDisarmMaxBonusLevel();
|
|
||||||
int randomChance = 100;
|
int randomChance = 100;
|
||||||
|
|
||||||
if (Permissions.luckyUnarmed(player)) {
|
if (Permissions.luckyUnarmed(player)) {
|
||||||
randomChance = (int) (randomChance * 0.75);
|
randomChance = (int) (randomChance * 0.75);
|
||||||
}
|
}
|
||||||
|
|
||||||
final float chance = (float) (((double) disarmChanceMax / (double) disarmMaxLevel) * skillLevel);
|
float chance = (float) (((double) Unarmed.DISARM_MAX_CHANCE / (double) Unarmed.DISARM_MAX_BONUS_LEVEL) * skillLevel);
|
||||||
|
if (chance > Unarmed.DISARM_MAX_CHANCE) chance = Unarmed.DISARM_MAX_CHANCE;
|
||||||
|
|
||||||
if (chance > Unarmed.getRandom().nextInt(randomChance)) {
|
if (chance > Unarmed.getRandom().nextInt(randomChance)) {
|
||||||
if (!hasIronGrip(defender)) {
|
if (!hasIronGrip(defender)) {
|
||||||
eventHandler.sendAbilityMessage();
|
eventHandler.sendAbilityMessage();
|
||||||
@ -72,15 +71,15 @@ public class UnarmedManager {
|
|||||||
|
|
||||||
DeflectEventHandler eventHandler = new DeflectEventHandler(this, event);
|
DeflectEventHandler eventHandler = new DeflectEventHandler(this, event);
|
||||||
|
|
||||||
int deflectChanceMax = AdvancedConfig.getInstance().getDeflectChanceMax();
|
|
||||||
int deflectMaxLevel = AdvancedConfig.getInstance().getDeflectMaxBonusLevel();
|
|
||||||
int randomChance = 100;
|
int randomChance = 100;
|
||||||
|
|
||||||
if (Permissions.luckyUnarmed(player)) {
|
if (Permissions.luckyUnarmed(player)) {
|
||||||
randomChance = (int) (randomChance * 0.75);
|
randomChance = (int) (randomChance * 0.75);
|
||||||
}
|
}
|
||||||
|
|
||||||
final float chance = (float) (((double) deflectChanceMax / (double) deflectMaxLevel) * skillLevel);
|
float chance = (float) (((double) Unarmed.DEFLECT_MAX_CHANCE / (double) Unarmed.DEFLECT_MAX_BONUS_LEVEL) * skillLevel);
|
||||||
|
if (chance > Unarmed.DEFLECT_MAX_CHANCE) chance = Unarmed.DEFLECT_MAX_CHANCE;
|
||||||
|
|
||||||
if (chance > Unarmed.getRandom().nextInt(randomChance)) {
|
if (chance > Unarmed.getRandom().nextInt(randomChance)) {
|
||||||
eventHandler.cancelEvent();
|
eventHandler.cancelEvent();
|
||||||
eventHandler.sendAbilityMessage();
|
eventHandler.sendAbilityMessage();
|
||||||
@ -122,15 +121,15 @@ public class UnarmedManager {
|
|||||||
|
|
||||||
IronGripEventHandler eventHandler = new IronGripEventHandler(this, defender);
|
IronGripEventHandler eventHandler = new IronGripEventHandler(this, defender);
|
||||||
|
|
||||||
int ironGripChanceMax = AdvancedConfig.getInstance().getIronGripChanceMax();
|
|
||||||
int ironGripMaxLevel = AdvancedConfig.getInstance().getIronGripMaxBonusLevel();
|
|
||||||
int randomChance = 100;
|
int randomChance = 100;
|
||||||
|
|
||||||
if (Permissions.luckyUnarmed(defender)) {
|
if (Permissions.luckyUnarmed(defender)) {
|
||||||
randomChance = (int) (randomChance * 0.75);
|
randomChance = (int) (randomChance * 0.75);
|
||||||
}
|
}
|
||||||
|
|
||||||
final float chance = (float) (((double) ironGripChanceMax / (double) ironGripMaxLevel) * skillLevel);
|
float chance = (float) (((double) Unarmed.IRON_GRIP_MAX_CHANCE / (double) Unarmed.IRON_GRIP_MAX_BONUS_LEVEL) * skillLevel);
|
||||||
|
if (chance > Unarmed.IRON_GRIP_MAX_CHANCE) chance = Unarmed.IRON_GRIP_MAX_CHANCE;
|
||||||
|
|
||||||
if (chance > Unarmed.getRandom().nextInt(randomChance)) {
|
if (chance > Unarmed.getRandom().nextInt(randomChance)) {
|
||||||
eventHandler.sendAbilityMessages();
|
eventHandler.sendAbilityMessages();
|
||||||
return true;
|
return true;
|
||||||
|
@ -398,8 +398,8 @@ public class Combat {
|
|||||||
baseXP = 20 * configInstance.getPlayerVersusPlayerXP();
|
baseXP = 20 * configInstance.getPlayerVersusPlayerXP();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!mcMMO.p.placeStore.isSpawnedMob(((Entity) target))) {
|
else if (!mcMMO.placeStore.isSpawnedMob(((Entity) target))) {
|
||||||
if (target instanceof Animals && !mcMMO.p.placeStore.isSpawnedPet((Entity) target)) {
|
if (target instanceof Animals && !mcMMO.placeStore.isSpawnedPet((Entity) target)) {
|
||||||
baseXP = configInstance.getAnimalsXP();
|
baseXP = configInstance.getAnimalsXP();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -19,7 +19,6 @@ import org.bukkit.block.Block;
|
|||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
|
||||||
import com.gmail.nossr50.runnables.ChunkletUnloader;
|
import com.gmail.nossr50.runnables.ChunkletUnloader;
|
||||||
import com.gmail.nossr50.runnables.blockstoreconversion.BlockStoreConversionZDirectory;
|
import com.gmail.nossr50.runnables.blockstoreconversion.BlockStoreConversionZDirectory;
|
||||||
|
|
||||||
|
@ -22,8 +22,8 @@ public class PrimitiveChunkStore implements ChunkStore {
|
|||||||
private int cx;
|
private int cx;
|
||||||
private int cz;
|
private int cz;
|
||||||
private UUID worldUid;
|
private UUID worldUid;
|
||||||
private List spawnedMobs = new ArrayList<UUID>();
|
private List<UUID> spawnedMobs = new ArrayList<UUID>();
|
||||||
private List spawnedPets = new ArrayList<UUID>();
|
private List<UUID> spawnedPets = new ArrayList<UUID>();
|
||||||
transient private int worldHeight;
|
transient private int worldHeight;
|
||||||
transient private int xBitShifts;
|
transient private int xBitShifts;
|
||||||
transient private int zBitShifts;
|
transient private int zBitShifts;
|
||||||
@ -214,8 +214,9 @@ public class PrimitiveChunkStore implements ChunkStore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(fileVersionNumber >= 6) {
|
if(fileVersionNumber >= 6) {
|
||||||
spawnedMobs = (ArrayList) in.readObject();
|
//What do we want to do about this? These casts are unchecked.
|
||||||
spawnedPets = (ArrayList) in.readObject();
|
spawnedMobs = (ArrayList<UUID>) in.readObject();
|
||||||
|
spawnedPets = (ArrayList<UUID>) in.readObject();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,8 +77,8 @@ Skills:
|
|||||||
Bleed_MaxBonusLevel: 750
|
Bleed_MaxBonusLevel: 750
|
||||||
Bleed_MaxTicks: 3
|
Bleed_MaxTicks: 3
|
||||||
Bleed_BaseTicks: 2
|
Bleed_BaseTicks: 2
|
||||||
CounterAttack_ChanceMax: 30
|
Counter_ChanceMax: 30
|
||||||
CounterAttack_MaxBonusLevel: 600
|
Counter_MaxBonusLevel: 600
|
||||||
Counter_DamageModifier: 2
|
Counter_DamageModifier: 2
|
||||||
SerratedStrikes_DamageModifier: 4
|
SerratedStrikes_DamageModifier: 4
|
||||||
SerratedStrikes_BleedTicks: 5
|
SerratedStrikes_BleedTicks: 5
|
||||||
|
Loading…
x
Reference in New Issue
Block a user