1
0
mirror of https://github.com/mcMMO-Dev/mcMMO.git synced 2026-02-18 17:53:00 +01:00

Compare commits

..

2 Commits

Author SHA1 Message Date
t00thpick1
9957ca41a8 Fully remove metrics. 2017-12-22 15:43:44 -08:00
t00thpick1
00e18d4096 Remove metrics 2017-12-22 15:35:46 -08:00
46 changed files with 125 additions and 987 deletions

View File

@@ -7,15 +7,7 @@ Key:
! Change
- Removal
Version 1.5.02-dev
+ Added new active ability "Charge" to Taming!
+ Added option to config.yml for Chimaera Wings to stop using bed spawn points
= Fixed bug where no Mining XP was granted when Flux Mining was successful
= Fixed bug where MobHealthbarTypes were not saved between server restarts
! Changed Flux Mining mechanics. In order to use the ability, you need to infuse a pickaxe with furnace powers first.
! Scoreboard tips are only shown a couple of times to the player, instead of once per login session
Version 1.5.01
Version 1.5.01-dev
+ Added new child skill; Salvage
+ Added UUID support!
+ Added SQL connection pooling and async loading!
@@ -64,7 +56,6 @@ Version 1.5.01
! Changed Alchemy XP distribution. XP is granted based on the stage of the potion.
! Changed behavior of the Blast Mining ability "Demolition Expert"; now only decreases damage for the ability user
! Updated for new getOnlinePlayers() behavior
! Updated for new blocks and entities
! Changed McMMOPlayerDeathPenaltyEvent to get fired after hardcore penalty calculations, use McMMOPlayerPreDeathPenaltyEvent for old behavior
! Moved Refresh_Chunks setting from hidden.yml to config.yml
- Removed salvage ability from Repair, salvage has it's own (child) skill now

View File

@@ -10,10 +10,11 @@ The goal of mcMMO is to take core Minecraft game mechanics and expand them into
## About the Team
mcMMO is currently developed by a team of individuals from all over the world.
### Developers
### Glorious Leader
[![gmcferrin](http://www.gravatar.com/avatar/b64c52daf25d206b27650788b5813b7b.png)]
(https://github.com/gmcferrin)
### Developers
[![bm01](http://www.gravatar.com/avatar/ec8146f5358177f12e9a252271bbc391.png)]
(https://github.com/bm01)
[![Glitchfinder](http://www.gravatar.com/avatar/5aa4cce22f72ae9c002ecec30f061d00.png)]
@@ -47,4 +48,4 @@ Required Libraries:
* EMetrics
* Bukkit
http://www.spigotmc.org/resources/mcmmo.2445/ for more up to date information.
http://dev.bukkit.org/server-mods/mcmmo for more up to date information.

32
pom.xml
View File

@@ -2,7 +2,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.gmail.nossr50.mcMMO</groupId>
<artifactId>mcMMO</artifactId>
<version>1.5.02-SNAPSHOT</version>
<version>1.5.01-SNAPSHOT</version>
<name>mcMMO</name>
<url>https://github.com/mcMMO-Dev/mcMMO</url>
<issueManagement>
@@ -75,17 +75,12 @@
<configuration>
<artifactSet>
<includes>
<include>com.turt2live.metrics:MetricsExtension</include>
<include>commons-logging:commons-logging</include>
<include>org.apache.tomcat:tomcat-jdbc</include>
<include>org.apache.tomcat:tomcat-juli</include>
</includes>
</artifactSet>
<relocations>
<relocation>
<pattern>com.turt2live.metrics</pattern>
<shadedPattern>com.gmail.nossr50.metrics.mcstats</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.commons.logging</pattern>
<shadedPattern>com.gmail.nossr50.commons.logging</shadedPattern>
@@ -120,8 +115,12 @@
</build>
<repositories>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
<id>bukkit-repo</id>
<url>http://repo.bukkit.org/content/groups/public/</url>
</repository>
<repository>
<id>md_5-releases</id>
<url>http://repo.md-5.net/content/repositories/releases/</url>
</repository>
<repository>
<id>Plugin MetricsExtension</id>
@@ -132,7 +131,7 @@
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>bukkit</artifactId>
<version>1.8-R0.1-SNAPSHOT</version>
<version>1.7.10-R0.1-SNAPSHOT</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
@@ -142,11 +141,6 @@
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.turt2live.metrics</groupId>
<artifactId>MetricsExtension</artifactId>
<version>0.0.5-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
@@ -156,15 +150,19 @@
</dependencies>
<distributionManagement>
<repository>
<id>drtshock-releases</id>
<url>https://ci.drtshock.net/plugin/repository/everything/com/gmail/nossr50/mcMMO/</url>
<id>md_5-releases</id>
<url>http://repo.md-5.net/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>md_5-snapshots</id>
<url>http://repo.md-5.net/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<ciManagement>
<system>Jenkins</system>
<url>https://ci.drtshock.net/job/mcmmo/</url>
<url>http://ci.ecocitycraft.com/job/mcMMO</url>
</ciManagement>
</project>

View File

@@ -18,7 +18,6 @@ public class TamingCommand extends SkillCommand {
private String goreChance;
private String goreChanceLucky;
private boolean canCharge;
private boolean canBeastLore;
private boolean canGore;
private boolean canSharpenedClaws;
@@ -44,7 +43,6 @@ public class TamingCommand extends SkillCommand {
@Override
protected void permissionsCheck(Player player) {
canCharge = Permissions.charge(player);
canBeastLore = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.BEAST_LORE);
canCallWild = Permissions.callOfTheWild(player, EntityType.HORSE) || Permissions.callOfTheWild(player, EntityType.WOLF) || Permissions.callOfTheWild(player, EntityType.OCELOT);
canEnvironmentallyAware = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.ENVIROMENTALLY_AWARE);
@@ -60,10 +58,6 @@ public class TamingCommand extends SkillCommand {
protected List<String> effectsDisplay() {
List<String> messages = new ArrayList<String>();
if (canCharge) {
messages.add(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Taming.Effect.20"), LocaleLoader.getString("Taming.Effect.21")));
}
if (canBeastLore) {
messages.add(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Taming.Effect.0"), LocaleLoader.getString("Taming.Effect.1")));
}

View File

@@ -12,8 +12,6 @@ import java.util.Set;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import com.gmail.nossr50.metrics.MetricsManager;
public abstract class AutoUpdateConfigLoader extends ConfigLoader {
public AutoUpdateConfigLoader(String relativePath, String fileName) {
super(relativePath, fileName);
@@ -116,13 +114,5 @@ public abstract class AutoUpdateConfigLoader extends ConfigLoader {
e.printStackTrace();
}
}
else {
for (String key : configKeys) {
if (!config.isConfigurationSection(key) && !config.get(key).equals(internalConfig.get(key))) {
MetricsManager.customConfig();
break;
}
}
}
}
}

View File

@@ -280,7 +280,6 @@ public class Config extends AutoUpdateConfigLoader {
/* Scoreboards */
public boolean getPowerLevelTagsEnabled() { return config.getBoolean("Scoreboard.Power_Level_Tags", false); }
public boolean getAllowKeepBoard() { return config.getBoolean("Scoreboard.Allow_Keep", true); }
public int getTipsAmount() { return config.getInt("Scoreboard.Tips_Amount", 5); }
public boolean getShowStatsAfterLogin() { return config.getBoolean("Scoreboard.Show_Stats_After_Login", false); }
public boolean getScoreboardRainbows() { return config.getBoolean("Scoreboard.Rainbows", false); }
public boolean getShowAbilityNames() { return config.getBoolean("Scoreboard.Ability_Names", true); }
@@ -373,21 +372,16 @@ public class Config extends AutoUpdateConfigLoader {
public Material getChimaeraItem() { return Material.matchMaterial(config.getString("Items.Chimaera_Wing.Item_Name", "Feather")); }
public boolean getChimaeraEnabled() { return config.getBoolean("Items.Chimaera_Wing.Enabled", true); }
public boolean getChimaeraPreventUseUnderground() { return config.getBoolean("Items.Chimaera_Wing.Prevent_Use_Underground", true); }
public boolean getChimaeraUseBedSpawn() { return config.getBoolean("Items.Chimaera_Wing.Use_Bed_Spawn", true); }
public int getChimaeraCooldown() { return config.getInt("Items.Chimaera_Wing.Cooldown", 240); }
public int getChimaeraWarmup() { return config.getInt("Items.Chimaera_Wing.Warmup", 5); }
public int getChimaeraRecentlyHurtCooldown() { return config.getInt("Items.Chimaera_Wing.RecentlyHurt_Cooldown", 60); }
public boolean getChimaeraSoundEnabled() { return config.getBoolean("Items.Chimaera_Wing.Sound_Enabled", true); }
public boolean getFluxPickaxeEnabled() { return config.getBoolean("Items.Flux_Pickaxe.Enabled", true); }
public boolean getFluxPickaxeSoundEnabled() { return config.getBoolean("Items.Flux_Pickaxe.Sound_Enabled", true); }
/* Particles */
public boolean getAbilityActivationEffectEnabled() { return config.getBoolean("Particles.Ability_Activation", true); }
public boolean getAbilityDeactivationEffectEnabled() { return config.getBoolean("Particles.Ability_Deactivation", true); }
public boolean getBleedEffectEnabled() { return config.getBoolean("Particles.Bleed", true); }
public boolean getDodgeEffectEnabled() { return config.getBoolean("Particles.Dodge", true); }
public boolean getFluxEffectEnabled() { return config.getBoolean("Particles.Flux", true); }
public boolean getBleedEffectEnabled() { return config.getBoolean("Particles.Bleed", true); }
public boolean getGreaterImpactEffectEnabled() { return config.getBoolean("Particles.Greater_Impact", true); }
public boolean getCallOfTheWildEffectEnabled() { return config.getBoolean("Particles.Call_of_the_Wild", true); }
public boolean getLevelUpEffectsEnabled() { return config.getBoolean("Particles.LevelUp_Enabled", true); }

View File

@@ -198,7 +198,6 @@ public class ExperienceConfig extends AutoUpdateConfigLoader {
public double getCombatXP(EntityType entity) { return config.getDouble("Experience.Combat.Multiplier." + StringUtils.getPrettyEntityTypeString(entity).replace(" ", "_")); }
public double getAnimalsXP() { return config.getDouble("Experience.Combat.Multiplier.Animals", 1.0); }
public double getWitherSkeletonXP() { return config.getDouble("Experience.Combat.Multiplier.Wither_Skeleton", 4.0); }
public double getElderGuardianXP() { return config.getDouble("Experience.Combat.Multiplier.Elder_Guardian", 4.0); }
/* Materials */
public int getXp(SkillType skill, Material material) { return config.getInt("Experience." + StringUtils.getCapitalized(skill.toString()) + "." + StringUtils.getPrettyItemString(material).replace(" ", "_")); }
@@ -369,5 +368,4 @@ public class ExperienceConfig extends AutoUpdateConfigLoader {
public int getWoodcuttingTreeXP(TreeSpecies species) { return config.getInt("Experience.Woodcutting." + StringUtils.getPrettyTreeSpeciesString(species).replace(" ", "_")); }
public int getWoodcuttingXPHugeBrownMushroom() { return config.getInt("Experience.Woodcutting.Huge_Mushroom_Brown", 70); }
public int getWoodcuttingXPHugeRedMushroom() { return config.getInt("Experience.Woodcutting.Huge_Mushroom_Red", 70); }
}

View File

@@ -5,7 +5,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.inventory.ItemStack;
@@ -118,14 +117,11 @@ public class PotionConfig extends ConfigLoader {
short dataValue = Short.parseShort(potion_section.getName());
String name = potion_section.getString("Name");
if (name != null) {
name = ChatColor.translateAlternateColorCodes('&', name);
}
List<String> lore = new ArrayList<String>();
if (potion_section.contains("Lore")) {
for (String line : potion_section.getStringList("Lore")) {
lore.add(ChatColor.translateAlternateColorCodes('&', line));
lore.add(line);
}
}

View File

@@ -4,7 +4,6 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.DyeColor;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
@@ -57,7 +56,6 @@ public class TreasureConfig extends ConfigLoader {
public List<ShakeTreasure> shakeFromMushroomCow = new ArrayList<ShakeTreasure>();
public List<ShakeTreasure> shakeFromPig = new ArrayList<ShakeTreasure>();
public List<ShakeTreasure> shakeFromPigZombie = new ArrayList<ShakeTreasure>();
public List<ShakeTreasure> shakeFromPlayer = new ArrayList<ShakeTreasure>();
public List<ShakeTreasure> shakeFromSheep = new ArrayList<ShakeTreasure>();
public List<ShakeTreasure> shakeFromSkeleton = new ArrayList<ShakeTreasure>();
public List<ShakeTreasure> shakeFromSlime = new ArrayList<ShakeTreasure>();
@@ -176,11 +174,6 @@ public class TreasureConfig extends ConfigLoader {
else if (materialName.contains("INK_SACK")) {
material = Material.INK_SACK;
}
else if (materialName.contains("INVENTORY")) {
// Use magic material BED_BLOCK to know that we're grabbing something from the inventory and not a normal treasure
shakeFromPlayer.add(new ShakeTreasure(new ItemStack(Material.BED_BLOCK, 1, (byte) 0), 1, getInventoryStealDropChance(), getInventoryStealDropLevel()));
continue;
}
else {
material = Material.matchMaterial(materialName);
}
@@ -243,22 +236,6 @@ public class TreasureConfig extends ConfigLoader {
try {
item = new Potion(PotionType.valueOf(potionType.toUpperCase().trim())).toItemStack(amount);
if (config.contains(type + "." + treasureName + ".Custom_Name")) {
ItemMeta itemMeta = item.getItemMeta();
itemMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', config.getString(type + "." + treasureName + ".Custom_Name")));
item.setItemMeta(itemMeta);
}
if (config.contains(type + "." + treasureName + ".Lore")) {
ItemMeta itemMeta = item.getItemMeta();
List<String> lore = new ArrayList<String>();
for (String s : config.getStringList(type + "." + treasureName + ".Lore")) {
lore.add(ChatColor.translateAlternateColorCodes('&', s));
}
itemMeta.setLore(lore);
item.setItemMeta(itemMeta);
}
}
catch (IllegalArgumentException ex) {
reason.add("Invalid Potion_Type: " + potionType);
@@ -272,22 +249,6 @@ public class TreasureConfig extends ConfigLoader {
dye.setColor(DyeColor.valueOf(color.toUpperCase().trim()));
item = dye.toItemStack(amount);
if (config.contains(type + "." + treasureName + ".Custom_Name")) {
ItemMeta itemMeta = item.getItemMeta();
itemMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', config.getString(type + "." + treasureName + ".Custom_Name")));
item.setItemMeta(itemMeta);
}
if (config.contains(type + "." + treasureName + ".Lore")) {
ItemMeta itemMeta = item.getItemMeta();
List<String> lore = new ArrayList<String>();
for (String s : config.getStringList(type + "." + treasureName + ".Lore")) {
lore.add(ChatColor.translateAlternateColorCodes('&', s));
}
itemMeta.setLore(lore);
item.setItemMeta(itemMeta);
}
}
catch (IllegalArgumentException ex) {
reason.add("Invalid Dye_Color: " + color);
@@ -298,17 +259,13 @@ public class TreasureConfig extends ConfigLoader {
if (config.contains(type + "." + treasureName + ".Custom_Name")) {
ItemMeta itemMeta = item.getItemMeta();
itemMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', config.getString(type + "." + treasureName + ".Custom_Name")));
itemMeta.setDisplayName(config.getString(type + "." + treasureName + ".Custom_Name"));
item.setItemMeta(itemMeta);
}
if (config.contains(type + "." + treasureName + ".Lore")) {
ItemMeta itemMeta = item.getItemMeta();
List<String> lore = new ArrayList<String>();
for (String s : config.getStringList(type + "." + treasureName + ".Lore")) {
lore.add(ChatColor.translateAlternateColorCodes('&', s));
}
itemMeta.setLore(lore);
itemMeta.setLore(config.getStringList(type + "." + treasureName + ".Lore"));
item.setItemMeta(itemMeta);
}
}
@@ -359,9 +316,6 @@ public class TreasureConfig extends ConfigLoader {
else if (type.equals("Shake.PIG_ZOMBIE")) {
shakeFromPigZombie.add(shakeTreasure);
}
else if (type.equals("Shake.PLAYER")) {
shakeFromPlayer.add(shakeTreasure);
}
else if (type.equals("Shake.SHEEP")) {
shakeFromSheep.add(shakeTreasure);
}
@@ -481,11 +435,6 @@ public class TreasureConfig extends ConfigLoader {
}
}
public boolean getInventoryStealEnabled() { return config.contains("Shake.PLAYER.INVENTORY"); }
public boolean getInventoryStealStacks() { return config.getBoolean("Shake.PLAYER.INVENTORY.Whole_Stacks"); }
public double getInventoryStealDropChance() { return config.getDouble("Shake.PLAYER.INVENTORY.Drop_Chance"); }
public int getInventoryStealDropLevel() { return config.getInt("Shake.PLAYER.INVENTORY.Drop_Level"); }
public double getItemDropRate(int tier, Rarity rarity) { return config.getDouble("Item_Drop_Rates.Tier_" + tier + "." + rarity.toString()); }
public double getEnchantmentDropRate(int tier, Rarity rarity) { return config.getDouble("Enchantment_Drop_Rates.Tier_" + tier + "." + rarity.toString()); }
}

View File

@@ -300,7 +300,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
writer.append(profile.getSkillXpLevel(SkillType.SWORDS)).append(":");
writer.append(profile.getSkillXpLevel(SkillType.AXES)).append(":");
writer.append(profile.getSkillXpLevel(SkillType.ACROBATICS)).append(":");
writer.append((int) profile.getAbilityDATS(AbilityType.CHARGE)).append(":");
writer.append(":");
writer.append(profile.getSkillLevel(SkillType.TAMING)).append(":");
writer.append(profile.getSkillXpLevel(SkillType.TAMING)).append(":");
writer.append((int) profile.getAbilityDATS(AbilityType.BERSERK)).append(":");
@@ -320,7 +320,6 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
writer.append(profile.getSkillLevel(SkillType.ALCHEMY)).append(":");
writer.append(profile.getSkillXpLevel(SkillType.ALCHEMY)).append(":");
writer.append(uuid.toString()).append(":");
writer.append(profile.getScoreboardTipsShown()).append(":");
writer.append("\r\n");
}
}
@@ -408,7 +407,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
out.append("0:"); // SwordsXp
out.append("0:"); // AxesXp
out.append("0:"); // AcrobaticsXp
out.append("0:"); // DATS
out.append(":");
out.append("0:"); // Taming
out.append("0:"); // TamingXp
out.append("0:"); // DATS
@@ -427,7 +426,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
out.append("0:"); // Alchemy
out.append("0:"); // AlchemyXp
out.append(uuid != null ? uuid.toString() : "NULL").append(":"); // UUID
out.append("0:"); // Scoreboard tips shown
// Add more in the same format as the line above
out.newLine();
@@ -889,15 +888,6 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
}
}
if (character[23].isEmpty()) {
// Addition of "Charge" Taming ability
// Version 1.5.02
line = line.replace(character[23], "0:");
if (oldVersion == null) {
oldVersion = "1.5.02";
}
}
// If they're valid, rewrite them to the file.
if (character.length == 42) {
writer.append(line).append("\r\n");
@@ -962,14 +952,6 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
oldVersion = "1.5.01";
}
}
if (character.length <= 42) {
// Addition of scoreboard tips auto disable
// Version 1.5.02
newLine.append("0").append(":");
if (oldVersion == null) {
oldVersion = "1.5.02";
}
}
// Remove any blanks that shouldn't be there, and validate the other fields
String[] newCharacter = newLine.toString().split(":");
@@ -1105,7 +1087,6 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
Map<SkillType, Float> skillsXp = new EnumMap<SkillType, Float>(SkillType.class); // Skill & XP
Map<AbilityType, Integer> skillsDATS = new EnumMap<AbilityType, Integer>(AbilityType.class); // Ability & Cooldown
MobHealthbarType mobHealthbarType;
int scoreboardTipsShown;
// TODO on updates, put new values in a try{} ?
@@ -1123,7 +1104,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
skillsXp.put(SkillType.FISHING, (float) Integer.valueOf(character[35]));
skillsXp.put(SkillType.ALCHEMY, (float) Integer.valueOf(character[40]));
skillsDATS.put(AbilityType.CHARGE, Integer.valueOf(character[23]));
// Taming - Unused
skillsDATS.put(AbilityType.SUPER_BREAKER, Integer.valueOf(character[32]));
// Repair - Unused
skillsDATS.put(AbilityType.TREE_FELLER, Integer.valueOf(character[28]));
@@ -1150,14 +1131,8 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
catch (Exception e) {
uuid = null;
}
try {
scoreboardTipsShown = Integer.valueOf(character[41]);
}
catch (Exception e) {
scoreboardTipsShown = 0;
}
return new PlayerProfile(character[0], uuid, skills, skillsXp, skillsDATS, mobHealthbarType, scoreboardTipsShown);
return new PlayerProfile(character[0], uuid, skills, skillsXp, skillsDATS, mobHealthbarType);
}
private Map<SkillType, Integer> getSkillMapFromLine(String[] character) {

View File

@@ -14,6 +14,8 @@ import java.util.Map;
import java.util.UUID;
import java.util.concurrent.locks.ReentrantLock;
import org.apache.tomcat.jdbc.pool.DataSource;
import org.apache.tomcat.jdbc.pool.PoolProperties;
import org.bukkit.scheduler.BukkitRunnable;
import com.gmail.nossr50.mcMMO;
@@ -28,9 +30,6 @@ import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.runnables.database.UUIDUpdateAsyncTask;
import com.gmail.nossr50.util.Misc;
import org.apache.tomcat.jdbc.pool.DataSource;
import org.apache.tomcat.jdbc.pool.PoolProperties;
public final class SQLDatabaseManager implements DatabaseManager {
private static final String ALL_QUERY_VERSION = "taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing+alchemy";
private String tablePrefix = Config.getInstance().getMySQLTablePrefix();
@@ -315,26 +314,24 @@ public final class SQLDatabaseManager implements DatabaseManager {
statement.close();
statement = connection.prepareStatement("UPDATE " + tablePrefix + "cooldowns SET "
+ " taming = ?, mining = ?, woodcutting = ?, unarmed = ?"
+ " mining = ?, woodcutting = ?, unarmed = ?"
+ ", herbalism = ?, excavation = ?, swords = ?"
+ ", axes = ?, blast_mining = ? WHERE user_id = ?");
statement.setLong(1, profile.getAbilityDATS(AbilityType.CHARGE));
statement.setLong(2, profile.getAbilityDATS(AbilityType.SUPER_BREAKER));
statement.setLong(3, profile.getAbilityDATS(AbilityType.TREE_FELLER));
statement.setLong(4, profile.getAbilityDATS(AbilityType.BERSERK));
statement.setLong(5, profile.getAbilityDATS(AbilityType.GREEN_TERRA));
statement.setLong(6, profile.getAbilityDATS(AbilityType.GIGA_DRILL_BREAKER));
statement.setLong(7, profile.getAbilityDATS(AbilityType.SERRATED_STRIKES));
statement.setLong(8, profile.getAbilityDATS(AbilityType.SKULL_SPLITTER));
statement.setLong(9, profile.getAbilityDATS(AbilityType.BLAST_MINING));
statement.setInt(10, id);
statement.setLong(1, profile.getAbilityDATS(AbilityType.SUPER_BREAKER));
statement.setLong(2, profile.getAbilityDATS(AbilityType.TREE_FELLER));
statement.setLong(3, profile.getAbilityDATS(AbilityType.BERSERK));
statement.setLong(4, profile.getAbilityDATS(AbilityType.GREEN_TERRA));
statement.setLong(5, profile.getAbilityDATS(AbilityType.GIGA_DRILL_BREAKER));
statement.setLong(6, profile.getAbilityDATS(AbilityType.SERRATED_STRIKES));
statement.setLong(7, profile.getAbilityDATS(AbilityType.SKULL_SPLITTER));
statement.setLong(8, profile.getAbilityDATS(AbilityType.BLAST_MINING));
statement.setInt(9, id);
success = (statement.executeUpdate() != 0);
statement.close();
statement = connection.prepareStatement("UPDATE " + tablePrefix + "huds SET mobhealthbar = ?, scoreboardtips = ? WHERE user_id = ?");
statement = connection.prepareStatement("UPDATE " + tablePrefix + "huds SET mobhealthbar = ? WHERE user_id = ?");
statement.setString(1, profile.getMobHealthbarType() == null ? Config.getInstance().getMobHealthbarDefault().name() : profile.getMobHealthbarType().name());
statement.setInt(2, profile.getScoreboardTipsShown());
statement.setInt(3, id);
statement.setInt(2, id);
success = (statement.executeUpdate() != 0);
statement.close();
}
@@ -643,7 +640,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
+ "s.taming, s.mining, s.repair, s.woodcutting, s.unarmed, s.herbalism, s.excavation, s.archery, s.swords, s.axes, s.acrobatics, s.fishing, s.alchemy, "
+ "e.taming, e.mining, e.repair, e.woodcutting, e.unarmed, e.herbalism, e.excavation, e.archery, e.swords, e.axes, e.acrobatics, e.fishing, e.alchemy, "
+ "c.taming, c.mining, c.repair, c.woodcutting, c.unarmed, c.herbalism, c.excavation, c.archery, c.swords, c.axes, c.acrobatics, c.blast_mining, "
+ "h.mobhealthbar, h.scoreboardtips, u.uuid "
+ "h.mobhealthbar, u.uuid "
+ "FROM " + tablePrefix + "users u "
+ "JOIN " + tablePrefix + "skills s ON (u.id = s.user_id) "
+ "JOIN " + tablePrefix + "experience e ON (u.id = e.user_id) "
@@ -732,7 +729,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
+ "s.taming, s.mining, s.repair, s.woodcutting, s.unarmed, s.herbalism, s.excavation, s.archery, s.swords, s.axes, s.acrobatics, s.fishing, s.alchemy, "
+ "e.taming, e.mining, e.repair, e.woodcutting, e.unarmed, e.herbalism, e.excavation, e.archery, e.swords, e.axes, e.acrobatics, e.fishing, e.alchemy, "
+ "c.taming, c.mining, c.repair, c.woodcutting, c.unarmed, c.herbalism, c.excavation, c.archery, c.swords, c.axes, c.acrobatics, c.blast_mining, "
+ "h.mobhealthbar, h.scoreboardtips, u.uuid "
+ "h.mobhealthbar, u.uuid "
+ "FROM " + tablePrefix + "users u "
+ "JOIN " + tablePrefix + "skills s ON (u.id = s.user_id) "
+ "JOIN " + tablePrefix + "experience e ON (u.id = e.user_id) "
@@ -933,6 +930,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
* Checks that the database structure is present and correct
*/
private void checkStructure() {
PreparedStatement statement = null;
Statement createStatement = null;
ResultSet resultSet = null;
@@ -967,7 +965,6 @@ public final class SQLDatabaseManager implements DatabaseManager {
createStatement.executeUpdate("CREATE TABLE IF NOT EXISTS `" + tablePrefix + "huds` ("
+ "`user_id` int(10) unsigned NOT NULL,"
+ "`mobhealthbar` varchar(50) NOT NULL DEFAULT '" + Config.getInstance().getMobHealthbarDefault() + "',"
+ "`scoreboardtips` int(10) NOT NULL DEFAULT '0',"
+ "PRIMARY KEY (`user_id`)) "
+ "DEFAULT CHARSET=latin1;");
createStatement.close();
@@ -1168,10 +1165,6 @@ public final class SQLDatabaseManager implements DatabaseManager {
checkUpgradeAddUUIDs(statement);
return;
case ADD_SCOREBOARD_TIPS:
checkUpgradeAddScoreboardTips(statement);
return;
default:
break;
@@ -1213,10 +1206,9 @@ public final class SQLDatabaseManager implements DatabaseManager {
statement.execute();
statement.close();
statement = connection.prepareStatement("INSERT IGNORE INTO " + tablePrefix + "huds (user_id, mobhealthbar, scoreboardtips) VALUES (?, ?, ?)");
statement = connection.prepareStatement("INSERT IGNORE INTO " + tablePrefix + "huds (user_id, mobhealthbar) VALUES (?, ?)");
statement.setInt(1, id);
statement.setString(2, Config.getInstance().getMobHealthbarDefault().name());
statement.setInt(3, 0);
statement.execute();
statement.close();
}
@@ -1241,7 +1233,6 @@ public final class SQLDatabaseManager implements DatabaseManager {
Map<AbilityType, Integer> skillsDATS = new EnumMap<AbilityType, Integer>(AbilityType.class); // Ability & Cooldown
MobHealthbarType mobHealthbarType;
UUID uuid;
int scoreboardTipsShown;
final int OFFSET_SKILLS = 0; // TODO update these numbers when the query
// changes (a new skill is added)
@@ -1277,7 +1268,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
skillsXp.put(SkillType.FISHING, result.getFloat(OFFSET_XP + 12));
skillsXp.put(SkillType.ALCHEMY, result.getFloat(OFFSET_XP + 13));
skillsDATS.put(AbilityType.CHARGE, result.getInt(OFFSET_DATS + 1));
// Taming - Unused - result.getInt(OFFSET_DATS + 1)
skillsDATS.put(AbilityType.SUPER_BREAKER, result.getInt(OFFSET_DATS + 2));
// Repair - Unused - result.getInt(OFFSET_DATS + 3)
skillsDATS.put(AbilityType.TREE_FELLER, result.getInt(OFFSET_DATS + 4));
@@ -1291,19 +1282,12 @@ public final class SQLDatabaseManager implements DatabaseManager {
skillsDATS.put(AbilityType.BLAST_MINING, result.getInt(OFFSET_DATS + 12));
try {
mobHealthbarType = MobHealthbarType.valueOf(result.getString(OFFSET_OTHER + 1));
mobHealthbarType = MobHealthbarType.valueOf(result.getString(OFFSET_OTHER + 2));
}
catch (Exception e) {
mobHealthbarType = Config.getInstance().getMobHealthbarDefault();
}
try {
scoreboardTipsShown = result.getInt(OFFSET_OTHER + 2);
}
catch (Exception e) {
scoreboardTipsShown = 0;
}
try {
uuid = UUID.fromString(result.getString(OFFSET_OTHER + 3));
}
@@ -1311,7 +1295,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
uuid = null;
}
return new PlayerProfile(playerName, uuid, skills, skillsXp, skillsDATS, mobHealthbarType, scoreboardTipsShown);
return new PlayerProfile(playerName, uuid, skills, skillsXp, skillsDATS, mobHealthbarType);
}
private void printErrors(SQLException ex) {
@@ -1368,16 +1352,6 @@ public final class SQLDatabaseManager implements DatabaseManager {
}
}
private void checkUpgradeAddScoreboardTips(final Statement statement) throws SQLException {
try {
statement.executeQuery("SELECT `scoreboardtips` FROM `" + tablePrefix + "huds` LIMIT 1");
}
catch (SQLException ex) {
mcMMO.p.getLogger().info("Updating mcMMO MySQL tables for scoreboard tips...");
statement.executeUpdate("ALTER TABLE `" + tablePrefix + "huds` ADD `scoreboardtips` int(10) NOT NULL DEFAULT '0' ;");
}
}
private void checkUpgradeAddSQLIndexes(final Statement statement) throws SQLException {
ResultSet resultSet = null;

View File

@@ -9,6 +9,5 @@ public enum UpgradeType {
DROP_SPOUT,
ADD_ALCHEMY,
ADD_UUIDS,
ADD_UUIDS_PARTY,
ADD_SCOREBOARD_TIPS;
ADD_UUIDS_PARTY;
}

View File

@@ -5,11 +5,12 @@ import java.util.Map;
import java.util.Set;
import java.util.UUID;
import com.gmail.nossr50.runnables.skills.BleedTimerTask;
import com.gmail.nossr50.util.player.UserManager;
import com.gmail.nossr50.util.scoreboards.ScoreboardManager;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Sound;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.FixedMetadataValue;
@@ -30,7 +31,6 @@ import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.party.PartyManager;
import com.gmail.nossr50.party.ShareHandler;
import com.gmail.nossr50.runnables.skills.AbilityDisableTask;
import com.gmail.nossr50.runnables.skills.BleedTimerTask;
import com.gmail.nossr50.runnables.skills.ToolLowerTask;
import com.gmail.nossr50.skills.SkillManager;
import com.gmail.nossr50.skills.acrobatics.AcrobaticsManager;
@@ -46,7 +46,6 @@ import com.gmail.nossr50.skills.repair.RepairManager;
import com.gmail.nossr50.skills.salvage.SalvageManager;
import com.gmail.nossr50.skills.smelting.SmeltingManager;
import com.gmail.nossr50.skills.swords.SwordsManager;
import com.gmail.nossr50.skills.taming.Taming;
import com.gmail.nossr50.skills.taming.TamingManager;
import com.gmail.nossr50.skills.unarmed.UnarmedManager;
import com.gmail.nossr50.skills.woodcutting.WoodcuttingManager;
@@ -54,8 +53,6 @@ import com.gmail.nossr50.util.EventUtils;
import com.gmail.nossr50.util.Misc;
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.StringUtils;
import com.gmail.nossr50.util.player.UserManager;
import com.gmail.nossr50.util.scoreboards.ScoreboardManager;
import com.gmail.nossr50.util.skills.ParticleEffectUtils;
import com.gmail.nossr50.util.skills.PerksUtils;
import com.gmail.nossr50.util.skills.SkillUtils;
@@ -742,21 +739,6 @@ public class McMMOPlayer {
return;
}
LivingEntity livingEntity = null;
if (ability == AbilityType.CHARGE) {
livingEntity = this.getTamingManager().getTarget(20);
if (!this.getTamingManager().isEntityTypeNearby(EntityType.WOLF, Taming.wolfCommandRange, true)) {
player.sendMessage(LocaleLoader.getString("Taming.Skills.Charge.NoneNearby"));
return;
}
else if (livingEntity == null) {
player.sendMessage(LocaleLoader.getString("Taming.Skills.Charge.NoTarget"));
return;
}
}
if (EventUtils.callPlayerAbilityActivateEvent(player, skill).isCancelled()) {
return;
}
@@ -780,10 +762,6 @@ public class McMMOPlayer {
SkillUtils.handleAbilitySpeedIncrease(player);
}
if (ability == AbilityType.CHARGE) {
this.getTamingManager().handleCharge(livingEntity);
}
new AbilityDisableTask(this, ability).runTaskLater(mcMMO.p, ticks * Misc.TICK_CONVERSION_FACTOR);
}
@@ -825,11 +803,6 @@ public class McMMOPlayer {
}
}
if (ability == AbilityType.CHARGE && !this.getTamingManager().isEntityTypeNearby(EntityType.WOLF, Taming.wolfCommandRange, true)) {
player.sendMessage(LocaleLoader.getString("Taming.Skills.Charge.NoneNearby"));
return;
}
if (Config.getInstance().getAbilityMessagesEnabled()) {
player.sendMessage(tool.getRaiseTool());
}

View File

@@ -28,7 +28,6 @@ public class PlayerProfile {
/* HUDs */
private MobHealthbarType mobHealthbarType;
private int scoreboardTipsShown;
/* Skill Data */
private final Map<SkillType, Integer> skills = new HashMap<SkillType, Integer>(); // Skill & Level
@@ -49,7 +48,6 @@ public class PlayerProfile {
this.playerName = playerName;
mobHealthbarType = Config.getInstance().getMobHealthbarDefault();
scoreboardTipsShown = 0;
for (AbilityType abilityType : AbilityType.values()) {
abilityDATS.put(abilityType, 0);
@@ -72,11 +70,10 @@ public class PlayerProfile {
this.loaded = isLoaded;
}
public PlayerProfile(String playerName, UUID uuid, Map<SkillType, Integer> levelData, Map<SkillType, Float> xpData, Map<AbilityType, Integer> cooldownData, MobHealthbarType mobHealthbarType, int scoreboardTipsShown) {
public PlayerProfile(String playerName, UUID uuid, Map<SkillType, Integer> levelData, Map<SkillType, Float> xpData, Map<AbilityType, Integer> cooldownData, MobHealthbarType mobHealthbarType) {
this.playerName = playerName;
this.uuid = uuid;
this.mobHealthbarType = mobHealthbarType;
this.scoreboardTipsShown = scoreboardTipsShown;
skills.putAll(levelData);
skillsXp.putAll(xpData);
@@ -95,7 +92,7 @@ public class PlayerProfile {
}
// TODO should this part be synchronized?
PlayerProfile profileCopy = new PlayerProfile(playerName, uuid, ImmutableMap.copyOf(skills), ImmutableMap.copyOf(skillsXp), ImmutableMap.copyOf(abilityDATS), mobHealthbarType, scoreboardTipsShown);
PlayerProfile profileCopy = new PlayerProfile(playerName, uuid, ImmutableMap.copyOf(skills), ImmutableMap.copyOf(skillsXp), ImmutableMap.copyOf(abilityDATS), mobHealthbarType);
changed = !mcMMO.getDatabaseManager().saveUser(profileCopy);
if (changed) {
@@ -130,25 +127,9 @@ public class PlayerProfile {
}
public void setMobHealthbarType(MobHealthbarType mobHealthbarType) {
changed = true;
this.mobHealthbarType = mobHealthbarType;
}
public int getScoreboardTipsShown() {
return scoreboardTipsShown;
}
public void setScoreboardTipsShown(int scoreboardTipsShown) {
changed = true;
this.scoreboardTipsShown = scoreboardTipsShown;
}
public void increaseTipsShown() {
setScoreboardTipsShown(getScoreboardTipsShown() + 1);
}
/*
* Cooldowns
*/

View File

@@ -60,13 +60,6 @@ public enum AbilityType {
"Swords.Skills.SS.Refresh",
"Swords.Skills.SS.Other.Off"),
CHARGE(
"Taming.Skills.Charge.On",
"Taming.Skills.Charge.Off",
"Taming.Skills.Charge.Other.On",
"Taming.Skills.Charge.Refresh",
"Taming.Skills.Charge.Other.Off"),
/**
* Has cooldown - but has to share a skill with Super Breaker, so needs special treatment
*/
@@ -159,9 +152,6 @@ public enum AbilityType {
case BLAST_MINING:
return Permissions.remoteDetonation(player);
case CHARGE:
return Permissions.charge(player);
case GIGA_DRILL_BREAKER:
return Permissions.gigaDrillBreaker(player);

View File

@@ -48,7 +48,7 @@ public enum SkillType {
SALVAGE(SalvageManager.class, Color.ORANGE, ImmutableList.of(SecondaryAbility.ADVANCED_SALVAGE, SecondaryAbility.ARCANE_SALVAGE)),
SMELTING(SmeltingManager.class, Color.YELLOW, ImmutableList.of(SecondaryAbility.FLUX_MINING, SecondaryAbility.FUEL_EFFICIENCY, SecondaryAbility.SECOND_SMELT)),
SWORDS(SwordsManager.class, Color.fromRGB(178, 34, 34), AbilityType.SERRATED_STRIKES, ToolType.SWORD, ImmutableList.of(SecondaryAbility.BLEED, SecondaryAbility.COUNTER)),
TAMING(TamingManager.class, Color.PURPLE, AbilityType.CHARGE, ToolType.BONE, ImmutableList.of(SecondaryAbility.BEAST_LORE, SecondaryAbility.CALL_OF_THE_WILD, SecondaryAbility.ENVIROMENTALLY_AWARE, SecondaryAbility.FAST_FOOD, SecondaryAbility.GORE, SecondaryAbility.HOLY_HOUND, SecondaryAbility.SHARPENED_CLAWS, SecondaryAbility.SHOCK_PROOF, SecondaryAbility.THICK_FUR, SecondaryAbility.PUMMEL)),
TAMING(TamingManager.class, Color.PURPLE, ImmutableList.of(SecondaryAbility.BEAST_LORE, SecondaryAbility.CALL_OF_THE_WILD, SecondaryAbility.ENVIROMENTALLY_AWARE, SecondaryAbility.FAST_FOOD, SecondaryAbility.GORE, SecondaryAbility.HOLY_HOUND, SecondaryAbility.SHARPENED_CLAWS, SecondaryAbility.SHOCK_PROOF, SecondaryAbility.THICK_FUR, SecondaryAbility.PUMMEL)),
UNARMED(UnarmedManager.class, Color.BLACK, AbilityType.BERSERK, ToolType.FISTS, ImmutableList.of(SecondaryAbility.BLOCK_CRACKER, SecondaryAbility.DEFLECT, SecondaryAbility.DISARM, SecondaryAbility.IRON_ARM, SecondaryAbility.IRON_GRIP)),
WOODCUTTING(WoodcuttingManager.class, Color.OLIVE, AbilityType.TREE_FELLER, ToolType.AXE, ImmutableList.of(SecondaryAbility.LEAF_BLOWER, SecondaryAbility.WOODCUTTING_DOUBLE_DROPS));

View File

@@ -8,7 +8,6 @@ import com.gmail.nossr50.util.ItemUtils;
public enum ToolType {
AXE(LocaleLoader.getString("Axes.Ability.Lower"), LocaleLoader.getString("Axes.Ability.Ready")),
BONE(LocaleLoader.getString("Taming.Ability.Lower"), LocaleLoader.getString("Taming.Ability.Ready")),
FISTS(LocaleLoader.getString("Unarmed.Ability.Lower"), LocaleLoader.getString("Unarmed.Ability.Ready")),
HOE(LocaleLoader.getString("Herbalism.Ability.Lower"), LocaleLoader.getString("Herbalism.Ability.Ready")),
PICKAXE(LocaleLoader.getString("Mining.Ability.Lower"), LocaleLoader.getString("Mining.Ability.Ready")),
@@ -42,9 +41,6 @@ public enum ToolType {
case AXE:
return ItemUtils.isAxe(itemStack);
case BONE:
return itemStack.getType() == Material.BONE;
case FISTS:
return itemStack.getType() == Material.AIR;

View File

@@ -260,7 +260,7 @@ public class BlockListener implements Listener {
}
}
}
else if (ItemUtils.isFluxPickaxe(heldItem) && !heldItem.containsEnchantment(Enchantment.SILK_TOUCH)) {
else if (ItemUtils.isPickaxe(heldItem) && !heldItem.containsEnchantment(Enchantment.SILK_TOUCH)) {
SmeltingManager smeltingManager = UserManager.getPlayer(player).getSmeltingManager();
if (smeltingManager.canUseFluxMining(blockState)) {

View File

@@ -39,7 +39,6 @@ import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.AbilityType;
import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.datatypes.skills.ToolType;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.party.ShareHandler;
import com.gmail.nossr50.runnables.player.PlayerProfileLoadingTask;
@@ -523,10 +522,10 @@ public class PlayerListener implements Listener {
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
ItemStack heldItem = player.getItemInHand();
Block block = event.getClickedBlock();
switch (event.getAction()) {
case RIGHT_CLICK_BLOCK:
Block block = event.getClickedBlock();
BlockState blockState = block.getState();
/* ACTIVATION & ITEM CHECKS */
@@ -577,7 +576,6 @@ public class PlayerListener implements Listener {
mcMMOPlayer.processAbilityActivation(SkillType.SWORDS);
mcMMOPlayer.processAbilityActivation(SkillType.UNARMED);
mcMMOPlayer.processAbilityActivation(SkillType.WOODCUTTING);
mcMMOPlayer.processAbilityActivation(SkillType.TAMING);
}
/* ITEM CHECKS */
@@ -592,12 +590,6 @@ public class PlayerListener implements Listener {
break;
case LEFT_CLICK_AIR:
if (mcMMOPlayer.getToolPreparationMode(ToolType.BONE) && ToolType.BONE.inHand(heldItem)) {
mcMMOPlayer.checkAbilityActivation(SkillType.TAMING);
}
// Fallthrough
case LEFT_CLICK_BLOCK:
if (!player.isSneaking()) {

View File

@@ -5,7 +5,6 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.metadata.FixedMetadataValue;
@@ -32,7 +31,6 @@ import com.gmail.nossr50.listeners.InventoryListener;
import com.gmail.nossr50.listeners.PlayerListener;
import com.gmail.nossr50.listeners.SelfListener;
import com.gmail.nossr50.listeners.WorldListener;
import com.gmail.nossr50.metrics.MetricsManager;
import com.gmail.nossr50.party.PartyManager;
import com.gmail.nossr50.runnables.CheckDateTask;
import com.gmail.nossr50.runnables.SaveTimerTask;
@@ -52,7 +50,6 @@ import com.gmail.nossr50.skills.repair.repairables.SimpleRepairableManager;
import com.gmail.nossr50.skills.salvage.salvageables.Salvageable;
import com.gmail.nossr50.skills.salvage.salvageables.SalvageableManager;
import com.gmail.nossr50.skills.salvage.salvageables.SimpleSalvageableManager;
import com.gmail.nossr50.skills.smelting.SmeltingManager;
import com.gmail.nossr50.util.ChimaeraWing;
import com.gmail.nossr50.util.HolidayManager;
import com.gmail.nossr50.util.LogFilter;
@@ -181,8 +178,6 @@ public class mcMMO extends JavaPlugin {
scheduleTasks();
CommandRegistrationManager.registerCommands();
MetricsManager.setup();
placeStore = ChunkManagerFactory.getChunkManager(); // Get our ChunkletManager
checkForUpdates();
@@ -457,14 +452,6 @@ public class mcMMO extends JavaPlugin {
if (Config.getInstance().getChimaeraEnabled()) {
getServer().addRecipe(ChimaeraWing.getChimaeraWingRecipe());
}
if (Config.getInstance().getFluxPickaxeEnabled()) {
getServer().addRecipe(SmeltingManager.getFluxPickaxeRecipe(Material.DIAMOND_PICKAXE));
getServer().addRecipe(SmeltingManager.getFluxPickaxeRecipe(Material.GOLD_PICKAXE));
getServer().addRecipe(SmeltingManager.getFluxPickaxeRecipe(Material.IRON_PICKAXE));
getServer().addRecipe(SmeltingManager.getFluxPickaxeRecipe(Material.STONE_PICKAXE));
getServer().addRecipe(SmeltingManager.getFluxPickaxeRecipe(Material.WOOD_PICKAXE));
}
}
private void scheduleTasks() {

View File

@@ -1,353 +0,0 @@
package com.gmail.nossr50.metrics;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Locale;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.HiddenConfig;
import com.gmail.nossr50.config.experience.ExperienceConfig;
import com.gmail.nossr50.datatypes.experience.FormulaType;
import com.gmail.nossr50.locale.LocaleLoader;
import com.turt2live.metrics.EMetrics;
import com.turt2live.metrics.Metrics;
import com.turt2live.metrics.Metrics.Graph;
import com.turt2live.metrics.data.DataEvent;
import com.turt2live.metrics.data.DataTracker;
import com.turt2live.metrics.tracker.Tracker;
public class MetricsManager {
private static boolean setup = false;
private static Tracker chimeraUseTracker;
private static Tracker chimeraServerUseTracker;
private static boolean customConfig = false;
private static DataTracker tracker;
private static EMetrics emetrics;
public static void setup() {
if (setup) {
return;
}
if (Config.getInstance().getStatsTrackingEnabled()) {
try {
emetrics = new EMetrics(mcMMO.p);
Metrics metrics = emetrics.getMetrics();
// Timings Graph
Graph timingsGraph = metrics.createGraph("Percentage of servers using timings");
if (mcMMO.p.getServer().getPluginManager().useTimings()) {
timingsGraph.addPlotter(new Metrics.Plotter("Enabled") {
@Override
public int getValue() {
return 1;
}
});
}
else {
timingsGraph.addPlotter(new Metrics.Plotter("Disabled") {
@Override
public int getValue() {
return 1;
}
});
}
// Donut Version Graph
Graph versionDonutGraph = metrics.createGraph("Donut Version");
boolean haveVersionInformation = false;
boolean isOfficialBuild = false;
String officialKey = "e14cfacdd442a953343ebd8529138680";
String version = mcMMO.p.getDescription().getVersion();
InputStreamReader isr = new InputStreamReader(mcMMO.p.getResource(".jenkins"));
BufferedReader br = new BufferedReader(isr);
char[] key = new char[32];
br.read(key);
if (officialKey.equals(String.valueOf(key))) {
isOfficialBuild = true;
}
if (version.contains("-")) {
String majorVersion = version.substring(0, version.indexOf("-"));
String subVersion;
if (isOfficialBuild) {
int startIndex = version.indexOf("-");
if (version.substring(startIndex + 1).contains("-")) {
subVersion = version.substring(startIndex, version.indexOf("-", startIndex + 1));
}
else {
subVersion = "-release";
}
}
else {
subVersion = "-custom";
}
version = majorVersion + "~=~" + subVersion;
haveVersionInformation = true;
}
if (haveVersionInformation) {
versionDonutGraph.addPlotter(new Metrics.Plotter(version) {
@Override
public int getValue() {
return 1;
}
});
}
// Official v Custom build Graph
Graph officialGraph = metrics.createGraph("Built by official ci");
if (isOfficialBuild) {
officialGraph.addPlotter(new Metrics.Plotter("Yes") {
@Override
public int getValue() {
return 1;
}
});
}
else {
officialGraph.addPlotter(new Metrics.Plotter("No") {
@Override
public int getValue() {
return 1;
}
});
}
// Chunkmeta enabled Graph
Graph chunkmetaGraph = metrics.createGraph("Uses Chunkmeta");
if (HiddenConfig.getInstance().getChunkletsEnabled()) {
chunkmetaGraph.addPlotter(new Metrics.Plotter("Yes") {
@Override
public int getValue() {
return 1;
}
});
}
else {
chunkmetaGraph.addPlotter(new Metrics.Plotter("No") {
@Override
public int getValue() {
return 1;
}
});
}
// Storage method Graph
Graph storageGraph = metrics.createGraph("Storage method");
if (Config.getInstance().getUseMySQL()) {
storageGraph.addPlotter(new Metrics.Plotter("SQL") {
@Override
public int getValue() {
return 1;
}
});
}
else {
storageGraph.addPlotter(new Metrics.Plotter("Flatfile") {
@Override
public int getValue() {
return 1;
}
});
}
// Locale Graph
Graph localeGraph = metrics.createGraph("Locale");
localeGraph.addPlotter(new Metrics.Plotter(LocaleLoader.getCurrentLocale().getDisplayLanguage(Locale.US)) {
@Override
public int getValue() {
return 1;
}
});
// ExperienceFormulaShape Graph
Graph experienceFormulaShapeGraph = metrics.createGraph("Experience Formula Shape Graph");
experienceFormulaShapeGraph.addPlotter(new Metrics.Plotter(ExperienceConfig.getInstance().getFormulaType().toString()) {
@Override
public int getValue() {
return 1;
}
});
// GlobalMultiplier Graph
Graph globalMultiplierGraph = metrics.createGraph("Global Multiplier Graph");
globalMultiplierGraph.addPlotter(new Metrics.Plotter(ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier() + "") {
@Override
public int getValue() {
return 1;
}
});
// GlobalCurveModifier Graph
Graph globalCurveModifierGraph = metrics.createGraph("Global Curve Modifier Graph");
globalCurveModifierGraph.addPlotter(new Metrics.Plotter(ExperienceConfig.getInstance().getMultiplier(FormulaType.LINEAR) + "") {
@Override
public int getValue() {
return 1;
}
});
// GlobalMultiplierGraph Fuzzy Logic Numbers
Graph globalMultiplierGraphFuzzy = metrics.createGraph("Global Multiplier Fuzz");
if (ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier() > 1.0) {
globalMultiplierGraphFuzzy.addPlotter(new Metrics.Plotter("Higher") {
@Override
public int getValue() {
return 1;
}
});
}
else if (ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier() < 1.0) {
globalMultiplierGraphFuzzy.addPlotter(new Metrics.Plotter("Lower") {
@Override
public int getValue() {
return 1;
}
});
}
else {
globalMultiplierGraphFuzzy.addPlotter(new Metrics.Plotter("Default") {
@Override
public int getValue() {
return 1;
}
});
}
// GlobalCurveModifier Fuzzy Logic Numbers
Graph globalCurveMultiplierGraphFuzzy = metrics.createGraph("Global Curve Multiplier Fuzz");
if (ExperienceConfig.getInstance().getMultiplier(FormulaType.LINEAR) > 20.0) {
globalCurveMultiplierGraphFuzzy.addPlotter(new Metrics.Plotter("Higher") {
@Override
public int getValue() {
return 1;
}
});
}
else if (ExperienceConfig.getInstance().getMultiplier(FormulaType.LINEAR) < 20.0) {
globalCurveMultiplierGraphFuzzy.addPlotter(new Metrics.Plotter("Lower") {
@Override
public int getValue() {
return 1;
}
});
}
else {
globalCurveMultiplierGraphFuzzy.addPlotter(new Metrics.Plotter("Default") {
@Override
public int getValue() {
return 1;
}
});
}
// Chimera Wing Usage Trackers
final String chimeraGraphName = "Chimera Wing Usage";
chimeraUseTracker = EMetrics.createBasicTracker(chimeraGraphName, "Player use");
chimeraServerUseTracker = EMetrics.createEnabledTracker(chimeraGraphName, "Server use");
emetrics.addTracker(chimeraUseTracker);
emetrics.addTracker(chimeraServerUseTracker);
// Chimera Wing Enabled Graph
Graph chimeraGraph = metrics.createGraph("Chimera Wing");
if (Config.getInstance().getChimaeraEnabled()) {
chimeraGraph.addPlotter(new Metrics.Plotter("Enabled") {
@Override
public int getValue() {
return 1;
}
});
}
else {
chimeraGraph.addPlotter(new Metrics.Plotter("Disabled") {
@Override
public int getValue() {
return 1;
}
});
}
// Vanilla v Modified config graph
Graph customConfigGraph = metrics.createGraph("Modified Configs");
if (customConfig) {
customConfigGraph.addPlotter(new Metrics.Plotter("Edited") {
@Override
public int getValue() {
return 1;
}
});
}
else {
customConfigGraph.addPlotter(new Metrics.Plotter("Vanilla") {
@Override
public int getValue() {
return 1;
}
});
}
/*
* Debug stuff
* tracker = emetrics.getDataTracker();
* tracker.enable();
* tracker.setFilter(new DataEvent.DataType [] { DataEvent.DataType.SEND_DATA });
*/
emetrics.startMetrics();
}
catch (IOException e) {
mcMMO.p.getLogger().warning("Failed to submit stats.");
}
}
}
public static void chimeraWingUsed() {
chimeraUseTracker.increment();
chimeraServerUseTracker.increment();
}
public static void customConfig() {
customConfig = true;
}
@SuppressWarnings("unused")
private static void debug() {
emetrics.getMetrics().flush();
for (DataEvent event : tracker.getEvents()) {
String graphName = event.getGraphName();
String colName = event.getTrackerName();
int value = event.getValueSent();
System.out.println("Graph: " + graphName + ", Column: " + colName + ", Value: " + value);
}
tracker.resetEvents();
}
}

View File

@@ -3,7 +3,7 @@ package com.gmail.nossr50.runnables.skills;
import org.bukkit.Location;
import org.bukkit.Sound;
import org.bukkit.World;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Creature;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
@@ -11,20 +11,20 @@ import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.util.Misc;
public class KrakenAttackTask extends BukkitRunnable {
private LivingEntity kraken;
private Creature kraken;
private Player player;
private Location location;
private final boolean GLOBAL_EFFECTS = AdvancedConfig.getInstance().getKrakenGlobalEffectsEnabled();
private final String DEFEAT_MESSAGE = AdvancedConfig.getInstance().getPlayerDefeatMessage();
private final String ESCAPE_MESSAGE = AdvancedConfig.getInstance().getPlayerEscapeMessage();
public KrakenAttackTask(LivingEntity kraken2, Player player) {
this.kraken = kraken2;
public KrakenAttackTask(Creature kraken, Player player) {
this.kraken = kraken;
this.player = player;
}
public KrakenAttackTask(LivingEntity kraken2, Player player, Location location) {
this.kraken = kraken2;
public KrakenAttackTask(Creature kraken, Player player, Location location) {
this.kraken = kraken;
this.player = player;
this.location = location;
}

View File

@@ -110,9 +110,6 @@ public final class Fishing {
case PIG_ZOMBIE:
return TreasureConfig.getInstance().shakeFromPigZombie;
case PLAYER:
return TreasureConfig.getInstance().shakeFromPlayer;
case SHEEP:
return TreasureConfig.getInstance().shakeFromSheep;

View File

@@ -15,6 +15,7 @@ import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Creature;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Fish;
@@ -28,8 +29,6 @@ import org.bukkit.entity.TNTPrimed;
import org.bukkit.entity.ThrownPotion;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.inventory.meta.SkullMeta;
import org.bukkit.material.Wool;
import org.bukkit.potion.Potion;
import org.bukkit.potion.PotionType;
@@ -136,7 +135,7 @@ public class FishingManager extends SkillManager {
player.setItemInHand(null);
}
LivingEntity kraken = (LivingEntity) world.spawnEntity(player.getEyeLocation(), (Misc.getRandom().nextInt(100) == 0 ? EntityType.CHICKEN : EntityType.SQUID));
Creature kraken = (Creature) world.spawnEntity(player.getEyeLocation(), (Misc.getRandom().nextInt(100) == 0 ? EntityType.CHICKEN : EntityType.SQUID));
kraken.setCustomName(AdvancedConfig.getInstance().getKrakenName());
if (!kraken.isValid()) {
@@ -395,45 +394,6 @@ public class FishingManager extends SkillManager {
// Extra processing depending on the mob and drop type
switch (target.getType()) {
case PLAYER:
Player targetPlayer = (Player) target;
switch (drop.getType()) {
case SKULL_ITEM:
drop.setDurability((short) 3);
SkullMeta skullMeta = (SkullMeta) drop.getItemMeta();
skullMeta.setOwner(targetPlayer.getName());
drop.setItemMeta(skullMeta);
break;
case BED_BLOCK:
if (TreasureConfig.getInstance().getInventoryStealEnabled()) {
PlayerInventory inventory = targetPlayer.getInventory();
int length = inventory.getContents().length;
int slot = Misc.getRandom().nextInt(length);
drop = inventory.getItem(slot);
if (drop == null) {
break;
}
if (TreasureConfig.getInstance().getInventoryStealStacks()) {
inventory.setItem(slot, null);
}
else {
inventory.setItem(slot, (drop.getAmount() > 1) ? new ItemStack(drop.getType(), drop.getAmount() - 1) : null);
drop.setAmount(1);
}
targetPlayer.updateInventory();
}
break;
default:
break;
}
break;
case SHEEP:
Sheep sheep = (Sheep) target;
@@ -477,7 +437,7 @@ public class FishingManager extends SkillManager {
}
Misc.dropItem(target.getLocation(), drop);
CombatUtils.dealDamage(target, Math.max(target.getMaxHealth() / 4, 1), getPlayer()); // Make it so you can shake a mob no more than 4 times.
CombatUtils.dealDamage(target, Math.max(target.getMaxHealth() / 4, 1)); // Make it so you can shake a mob no more than 4 times.
applyXpGain(ExperienceConfig.getInstance().getFishingShakeXP(), XPGainReason.PVE);
}
}

View File

@@ -17,7 +17,7 @@ public class Mining {
*
* @param blockState The {@link BlockState} to check ability activation for
*/
public static int getBlockXp(BlockState blockState) {
protected static int getBlockXp(BlockState blockState) {
Material blockType = blockState.getType();
int xp = ExperienceConfig.getInstance().getXp(SkillType.MINING, blockType != Material.GLOWING_REDSTONE_ORE ? blockType : Material.REDSTONE_ORE);

View File

@@ -1,20 +1,12 @@
package com.gmail.nossr50.skills.smelting;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.BlockState;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.FurnaceBurnEvent;
import org.bukkit.inventory.FurnaceRecipe;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.SecondaryAbility;
import com.gmail.nossr50.datatypes.skills.SkillType;
@@ -22,12 +14,10 @@ import com.gmail.nossr50.datatypes.skills.XPGainReason;
import com.gmail.nossr50.events.skills.secondaryabilities.SecondaryAbilityWeightedActivationCheckEvent;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.skills.SkillManager;
import com.gmail.nossr50.skills.mining.Mining;
import com.gmail.nossr50.skills.smelting.Smelting.Tier;
import com.gmail.nossr50.util.BlockUtils;
import com.gmail.nossr50.util.Misc;
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.skills.ParticleEffectUtils;
import com.gmail.nossr50.util.skills.SkillUtils;
public class SmeltingManager extends SkillManager {
@@ -74,46 +64,16 @@ public class SmeltingManager extends SkillManager {
return false;
}
// We need to distribute Mining XP here, because the block break event gets cancelled
applyXpGain(Mining.getBlockXp(blockState), XPGainReason.PVE);
SkillUtils.handleDurabilityChange(getPlayer().getItemInHand(), Config.getInstance().getAbilityToolDamage());
Misc.dropItems(blockState.getLocation(), item, isSecondSmeltSuccessful() ? 2 : 1);
blockState.setType(Material.AIR);
if (Config.getInstance().getFluxPickaxeSoundEnabled()) {
player.playSound(blockState.getLocation(), Sound.FIZZ, Misc.FIZZ_VOLUME, Misc.getFizzPitch());
}
ParticleEffectUtils.playFluxEffect(blockState.getLocation());
player.sendMessage(LocaleLoader.getString("Smelting.FluxMining.Success"));
return true;
}
return false;
}
public static ItemStack getFluxPickaxe(Material material, int amount) {
ItemStack itemStack = new ItemStack(material, amount);
ItemMeta itemMeta = itemStack.getItemMeta();
itemMeta.setDisplayName(ChatColor.GOLD + LocaleLoader.getString("Item.FluxPickaxe.Name"));
List<String> itemLore = new ArrayList<String>();
itemLore.add("mcMMO Item");
itemLore.add(LocaleLoader.getString("Item.FluxPickaxe.Lore.1"));
itemLore.add(LocaleLoader.getString("Item.FluxPickaxe.Lore.2", Smelting.fluxMiningUnlockLevel));
itemMeta.setLore(itemLore);
itemStack.setItemMeta(itemMeta);
return itemStack;
}
public static FurnaceRecipe getFluxPickaxeRecipe(Material material) {
return new FurnaceRecipe(getFluxPickaxe(material, 1), material);
}
/**
* Increases burn time for furnace fuel.
*

View File

@@ -83,7 +83,7 @@ public class SwordsManager extends SkillManager {
}
if (SkillUtils.activationSuccessful(SecondaryAbility.COUNTER, getPlayer(), getSkillLevel(), activationChance)) {
CombatUtils.dealDamage(attacker, damage / Swords.counterAttackModifier, getPlayer());
CombatUtils.dealDamage(attacker, damage / Swords.counterAttackModifier);
getPlayer().sendMessage(LocaleLoader.getString("Swords.Combat.Countered"));

View File

@@ -30,8 +30,6 @@ public class Taming {
public static int thickFurUnlockLevel = AdvancedConfig.getInstance().getThickFurUnlock();
public static double thickFurModifier = AdvancedConfig.getInstance().getThickFurModifier();
public static double wolfCommandRange = 10.0;
public static int wolfXp = ExperienceConfig.getInstance().getTamingXPWolf();
public static int ocelotXp = ExperienceConfig.getInstance().getTamingXPOcelot();
public static int horseXp = ExperienceConfig.getInstance().getTamingXPHorse();

View File

@@ -15,8 +15,6 @@ import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable;
import org.bukkit.entity.Wolf;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.AdvancedConfig;
@@ -210,81 +208,6 @@ public class TamingManager extends SkillManager {
owner.sendMessage(LocaleLoader.getString("Taming.Listener.Wolf"));
}
public void handleCharge(LivingEntity livingEntity) {
attackTarget(livingEntity, true);
}
public LivingEntity getTarget(double range) {
Player player = getPlayer();
LivingEntity target = null;
for (Entity entity : player.getNearbyEntities(range, range, range)) {
if (!(entity instanceof LivingEntity) || entity.getType() == EntityType.WOLF || entity.getType() == EntityType.CREEPER || entity.equals(player)) {
continue;
}
if (!player.hasLineOfSight(entity)) {
continue;
}
target = (LivingEntity) entity;
break;
}
return target;
}
/**
* Make nearby wolves owned by the player attack the target
*
* @param target The LivingEntity to attack
*
* @return true if the attack was successful, false otherwise
*/
public boolean attackTarget(LivingEntity target, boolean charge) {
boolean success = false;
for (Entity entity : getNearbyEntities(EntityType.WOLF, Taming.wolfCommandRange, true)) {
Wolf wolf = (Wolf) entity;
if (charge) {
charge(wolf);
}
wolf.setTarget(target);
success = true;
}
return success;
}
public boolean attackTarget(LivingEntity target) {
return attackTarget(target, false);
}
public void charge(Wolf wolf) {
int duration = 0;
int amplifier = 0;
if (wolf.hasPotionEffect(PotionEffectType.SPEED)) {
for (PotionEffect effect : wolf.getActivePotionEffects()) {
if (effect.getType() != PotionEffectType.SPEED) {
continue;
}
duration = effect.getDuration();
amplifier = effect.getAmplifier();
break;
}
}
int ticks = 20 * 5;
PotionEffect abilityBuff = new PotionEffect(PotionEffectType.SPEED, duration + ticks, amplifier + 3);
wolf.addPotionEffect(abilityBuff, true);
ParticleEffectUtils.playSmokeEffect(wolf);
}
public void pummel(LivingEntity target, Wolf wolf) {
double chance = 10 / activationChance;
SecondaryAbilityWeightedActivationCheckEvent event = new SecondaryAbilityWeightedActivationCheckEvent(getPlayer(), SecondaryAbility.PUMMEL, chance);
@@ -305,6 +228,25 @@ public class TamingManager extends SkillManager {
}
}
public void attackTarget(LivingEntity target) {
double range = 5;
Player player = getPlayer();
for (Entity entity : player.getNearbyEntities(range, range, range)) {
if (entity.getType() != EntityType.WOLF) {
continue;
}
Wolf wolf = (Wolf) entity;
if (!wolf.isTamed() || (wolf.getOwner() != player) || wolf.isSitting()) {
continue;
}
wolf.setTarget(target);
}
}
/**
* Handle the Call of the Wild ability.
*
@@ -323,8 +265,7 @@ public class TamingManager extends SkillManager {
return;
}
if (isEntityTypeNearby(type)) {
player.sendMessage(Taming.getCallOfTheWildFailureMessage(type));
if (!rangeCheck(type)) {
return;
}
@@ -336,7 +277,6 @@ public class TamingManager extends SkillManager {
return;
}
location = Misc.getLocationOffset(location, 1);
LivingEntity entity = (LivingEntity) player.getWorld().spawnEntity(location, type);
FakeEntityTameEvent event = new FakeEntityTameEvent(entity, player);
@@ -395,41 +335,22 @@ public class TamingManager extends SkillManager {
player.playSound(location, Sound.FIREWORK_LARGE_BLAST2, 1F, 0.5F);
}
public List<Entity> getNearbyEntities(EntityType type, double range, boolean wolfReady) {
List<Entity> nearbyEntities = new ArrayList<Entity>();
private boolean rangeCheck(EntityType type) {
double range = Config.getInstance().getTamingCOTWRange();
Player player = getPlayer();
if (range == 0) {
return nearbyEntities;
return true;
}
for (Entity entity : player.getNearbyEntities(range, range, range)) {
EntityType entityType = entity.getType();
if (entityType != type) {
continue;
if (entity.getType() == type) {
player.sendMessage(Taming.getCallOfTheWildFailureMessage(type));
return false;
}
if (entityType == EntityType.WOLF && wolfReady) {
Wolf wolf = (Wolf) entity;
if (!wolf.isTamed() || (wolf.getOwner() != player) || wolf.isSitting()) {
continue;
}
}
nearbyEntities.add(entity);
}
return nearbyEntities;
}
public boolean isEntityTypeNearby(EntityType type) {
return isEntityTypeNearby(type, Config.getInstance().getTamingCOTWRange(), false);
}
public boolean isEntityTypeNearby(EntityType type, double range, boolean wolfReady) {
return !getNearbyEntities(type, range, wolfReady).isEmpty();
return true;
}
private boolean summonAmountCheck(EntityType entityType) {

View File

@@ -4,13 +4,18 @@ import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.Sound;
import org.bukkit.entity.AnimalTamer;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.scheduler.BukkitRunnable;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.util.Misc;
import com.gmail.nossr50.util.player.UserManager;
import com.gmail.nossr50.util.skills.CombatUtils;
import com.gmail.nossr50.util.skills.ParticleEffectUtils;
@@ -18,11 +23,18 @@ public class TrackedTamingEntity extends BukkitRunnable {
private LivingEntity livingEntity;
private UUID id;
private int length;
private Player owner;
protected TrackedTamingEntity(LivingEntity livingEntity) {
this.livingEntity = livingEntity;
this.id = livingEntity.getUniqueId();
AnimalTamer tamer = ((Tameable)livingEntity).getOwner();
if (tamer != null && tamer instanceof Player) {
this.owner = (Player) tamer;
}
int tamingCOTWLength = Config.getInstance().getTamingCOTWLength(livingEntity.getType());
if (tamingCOTWLength > 0) {
@@ -40,7 +52,14 @@ public class TrackedTamingEntity extends BukkitRunnable {
CombatUtils.dealDamage(livingEntity, livingEntity.getMaxHealth(), DamageCause.SUICIDE, livingEntity);
}
TamingManager.removeFromTracker(this);
if (!UserManager.hasPlayerDataKey(owner)) {
return;
}
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(owner);
TamingManager tamingManager = mcMMOPlayer.getTamingManager();
tamingManager.removeFromTracker(this);
this.cancel();
}

View File

@@ -15,7 +15,6 @@ import org.bukkit.material.SmoothBrick;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.skills.repair.Repair;
import com.gmail.nossr50.skills.salvage.Salvage;
import com.gmail.nossr50.util.temp.DualSupport;
public final class BlockUtils {
private BlockUtils() {}
@@ -64,11 +63,10 @@ public final class BlockUtils {
case DROPPER:
case HOPPER:
case TRAPPED_CHEST:
case IRON_DOOR:
return false;
default:
return DualSupport.canActivateAbilities(blockState) && !isMcMMOAnvil(blockState) && !mcMMO.getModManager().isCustomAbilityBlock(blockState);
return !isMcMMOAnvil(blockState) && !mcMMO.getModManager().isCustomAbilityBlock(blockState);
}
}
@@ -166,7 +164,7 @@ public final class BlockUtils {
return true;
default:
return DualSupport.affectedBySuperBreaker(blockState) || isOre(blockState) || mcMMO.getModManager().isCustomMiningBlock(blockState);
return isOre(blockState) || mcMMO.getModManager().isCustomMiningBlock(blockState);
}
}

View File

@@ -17,7 +17,6 @@ import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.metrics.MetricsManager;
import com.gmail.nossr50.runnables.items.ChimaeraWingWarmup;
import com.gmail.nossr50.util.player.UserManager;
import com.gmail.nossr50.util.skills.CombatUtils;
@@ -117,7 +116,7 @@ public final class ChimaeraWing {
public static void chimaeraExecuteTeleport() {
Player player = mcMMOPlayer.getPlayer();
if (Config.getInstance().getChimaeraUseBedSpawn() && player.getBedSpawnLocation() != null) {
if (player.getBedSpawnLocation() != null) {
player.teleport(player.getBedSpawnLocation());
}
else {
@@ -135,10 +134,6 @@ public final class ChimaeraWing {
mcMMOPlayer.actualizeChimeraWingLastUse();
mcMMOPlayer.setTeleportCommenceLocation(null);
if (Config.getInstance().getStatsTrackingEnabled()) {
MetricsManager.chimeraWingUsed();
}
if (Config.getInstance().getChimaeraSoundEnabled()) {
player.playSound(location, Sound.BAT_TAKEOFF, Misc.BAT_VOLUME, Misc.BAT_PITCH);
}

View File

@@ -694,13 +694,4 @@ public final class ItemUtils {
ItemMeta itemMeta = item.getItemMeta();
return itemMeta.hasDisplayName() && itemMeta.getDisplayName().equals(ChatColor.GOLD + LocaleLoader.getString("Item.ChimaeraWing.Name"));
}
public static boolean isFluxPickaxe(ItemStack item) {
if (!isMcMMOItem(item)) {
return false;
}
ItemMeta itemMeta = item.getItemMeta();
return itemMeta.hasDisplayName() && itemMeta.getDisplayName().equals(ChatColor.GOLD + LocaleLoader.getString("Item.FluxPickaxe.Name"));
}
}

View File

@@ -19,6 +19,7 @@ public final class MaterialUtils {
case REDSTONE_ORE:
case EMERALD_ORE:
return true;
default:
return mcMMO.getModManager().isCustomOre(data);
}

View File

@@ -144,23 +144,6 @@ public final class Misc {
return "UnknownMods";
}
/**
* Gets a random location near the specified location
*/
public static Location getLocationOffset(Location location, double strength) {
double blockX = location.getBlockX();
double blockZ = location.getBlockZ();
double distance;
distance = strength * random.nextDouble();
blockX = (random.nextBoolean()) ? blockX + (distance) : blockX - (distance);
distance = strength * random.nextDouble();
blockZ = (random.nextBoolean()) ? blockZ + (distance) : blockZ - (distance);
return new Location(location.getWorld(), blockX, location.getY(), blockZ);
}
public static Random getRandom() {
return random;
}

View File

@@ -182,7 +182,6 @@ public final class Permissions {
public static boolean serratedStrikes(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.swords.serratedstrikes"); }
/* TAMING */
public static boolean charge(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.taming.charge"); }
public static boolean callOfTheWild(Permissible permissible, EntityType type) { return permissible.hasPermission("mcmmo.ability.taming.callofthewild." + type.toString().toLowerCase()); }
public static boolean renamePets(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.taming.callofthewild.renamepets"); }

View File

@@ -199,13 +199,6 @@ public class ScoreboardWrapper {
// TODO is there any way to do the time that looks acceptable?
// player.sendMessage(LocaleLoader.getString("Commands.Scoreboard.Timer", StringUtils.capitalize(sidebarType.toString().toLowerCase()), ticks / 20F));
PlayerProfile profile = UserManager.getPlayer(player).getProfile();
if (profile.getScoreboardTipsShown() >= Config.getInstance().getTipsAmount()) {
return;
}
if (!tippedKeep) {
tippedKeep = true;
player.sendMessage(LocaleLoader.getString("Commands.Scoreboard.Tip.Keep"));
@@ -213,7 +206,6 @@ public class ScoreboardWrapper {
else if (!tippedClear) {
tippedClear = true;
player.sendMessage(LocaleLoader.getString("Commands.Scoreboard.Tip.Clear"));
profile.increaseTipsShown();
}
}

View File

@@ -10,7 +10,6 @@ import org.bukkit.entity.Animals;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Guardian;
import org.bukkit.entity.IronGolem;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
@@ -48,7 +47,7 @@ import com.gmail.nossr50.util.Misc;
import com.gmail.nossr50.util.MobHealthbarUtils;
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.player.UserManager;
import com.gmail.nossr50.util.temp.CompatableGuardianXP;
import com.google.common.collect.ImmutableMap;
public final class CombatUtils {
@@ -485,7 +484,6 @@ public final class CombatUtils {
case WITCH:
case WITHER:
case ZOMBIE:
case ENDERMITE:
baseXP = ExperienceConfig.getInstance().getCombatXP(type);
break;
@@ -507,18 +505,6 @@ public final class CombatUtils {
break;
default:
if (type.name().equals("RABBIT")) {
baseXP = ExperienceConfig.getInstance().getAnimalsXP();
break;
}
if (type.name().equals("ENDERMITE")) {
baseXP = ExperienceConfig.getInstance().getCombatXP(type);
break;
}
if (type.name().equals("GUARDIAN")) {
baseXP = CompatableGuardianXP.get(target);
break;
}
baseXP = 1.0;
mcMMO.getModManager().addCustomEntity(target);
break;

View File

@@ -37,14 +37,6 @@ public final class ParticleEffectUtils {
playSmokeEffect(player);
}
public static void playFluxEffect(Location location) {
if (!Config.getInstance().getFluxEffectEnabled()) {
return;
}
location.getWorld().playEffect(location, Effect.MOBSPAWNER_FLAMES, 1);
}
public static void playSmokeEffect(LivingEntity livingEntity) {
Location location = livingEntity.getEyeLocation();
World world = livingEntity.getWorld();

View File

@@ -1,17 +0,0 @@
package com.gmail.nossr50.util.temp;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Guardian;
import com.gmail.nossr50.config.experience.ExperienceConfig;
public class CompatableGuardianXP {
public static double get(Entity target) {
if (((Guardian) target).isElder()) {
return ExperienceConfig.getInstance().getElderGuardianXP();
} else {
return ExperienceConfig.getInstance().getCombatXP(EntityType.GUARDIAN);
}
}
}

View File

@@ -1,19 +0,0 @@
package com.gmail.nossr50.util.temp;
import org.bukkit.block.BlockState;
public class DualSupport {
public static boolean canActivateAbilities(BlockState blockState) {
String mat = blockState.getType().name();
return !mat.equals("IRON_TRAPDOOR") && !mat.equals("ACACIA_DOOR") && !mat.equals("SPRUCE_DOOR") && !mat.equals("BIRCH_DOOR")
&& !mat.equals("JUNGLE_DOOR") && !mat.equals("DARK_OAK_DOOR") && !mat.equals("ACACIA_FENCE") && !mat.equals("DARK_OAK_FENCE")
&& !mat.equals("BIRCH_FENCE") && !mat.equals("JUNGLE_FENCE") && !mat.equals("ARMOR_STAND");
}
public static boolean affectedBySuperBreaker(BlockState blockState) {
String mat = blockState.getType().name();
return mat.equals("PRISMARINE") || mat.equals("RED_SANDSTONE");
}
}

View File

@@ -45,10 +45,6 @@ Scoreboard:
# Show the /mcstats scoreboard automatically after logging in
Show_Stats_After_Login: false
# Show scoreboard tips 5 times. Tips are only displayed once for every login session.
# Set to 0 to never show these tips.
Tips_Amount: 5
# Add some more color on the board :-)
Rainbows: false
@@ -211,15 +207,10 @@ Items:
Warmup: 5
RecentlyHurt_Cooldown: 60
Prevent_Use_Underground: true
# Attempt to use the bed spawn, if one is available
Use_Bed_Spawn: true
Use_Cost: 1
Recipe_Cost: 5
Item_Name: FEATHER
Sound_Enabled: true
Flux_Pickaxe:
Enabled: true
Sound_Enabled: true
#
# Settings for Parties
@@ -267,7 +258,6 @@ Abilities:
Cooldowns:
Berserk: 240
Blast_Mining: 60
Charge: 240
Giga_Drill_Breaker: 240
Green_Terra: 240
Serrated_Strikes: 240
@@ -277,7 +267,6 @@ Abilities:
Max_Seconds:
Berserk: 0
Blast_Mining: 0
Charge: 0
Giga_Drill_Breaker: 0
Green_Terra: 0
Serrated_Strikes: 0
@@ -490,9 +479,8 @@ Particles:
LargeFireworks: true
# Use particle effect when these abilities trigger
Bleed: true
Dodge: true
Flux: true
Bleed: true
Greater_Impact: true
Call_of_the_Wild: true

View File

@@ -196,8 +196,6 @@ Experience:
Sandstone: 30
Stained_Clay: 50
Stone: 30
Red_Sandstone: 100
Prismarine: 70
Repair:
Base: 1000.0
Wood: 0.6
@@ -243,6 +241,3 @@ Experience:
Witch: 0.0
Iron_Golem: 2.0
Wither_Skeleton: 4.0
Endermite: 2.0
Guardian: 3.0
Elder_Guardian: 4.0

View File

@@ -333,8 +333,6 @@ Taming.Ability.Locked.2=LOCKED UNTIL {0}+ SKILL (SHOCK PROOF)
Taming.Ability.Locked.3=LOCKED UNTIL {0}+ SKILL (SHARPENED CLAWS)
Taming.Ability.Locked.4=LOCKED UNTIL {0}+ SKILL (FAST FOOD SERVICE)
Taming.Ability.Locked.5=LOCKED UNTIL {0}+ SKILL (HOLY HOUND)
Taming.Ability.Lower=[[GRAY]]**YOUR WOLVES STAND DOWN**
Taming.Ability.Ready=[[GREEN]]**YOU READY YOUR WOLVES**
Taming.Combat.Chance.Gore=[[RED]]Gore Chance: [[YELLOW]]{0}
Taming.Effect.0=Beast Lore
Taming.Effect.1=Bone-whacking inspects wolves & ocelots
@@ -355,18 +353,9 @@ Taming.Effect.6=Environmentally Aware
Taming.Effect.7=Cactus/Lava Phobia, Fall DMG Immune
Taming.Effect.8=Thick Fur
Taming.Effect.9=DMG Reduction, Fire Resistance
Taming.Effect.20=Charge (ABILITY)
Taming.Effect.21=Target Enemy, Wolf Speed++
Taming.Listener.Wolf=[[DARK_GRAY]]Your wolf scurries back to you...
Taming.Listener=Taming:
Taming.SkillName=TAMING
Taming.Skills.Charge.Off=[[RED]]**Charge has worn off**
Taming.Skills.Charge.On=[[GREEN]]**CHARGE ACTIVATED**
Taming.Skills.Charge.Other.Off=[[RED]]Charge[[GREEN]] has worn off for [[YELLOW]]{0}
Taming.Skills.Charge.Other.On=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Charge!
Taming.Skills.Charge.Refresh=[[GREEN]]Your [[YELLOW]]Charge [[GREEN]]ability is refreshed!
Taming.Skills.Charge.NoneNearby=[[RED]]**NO AVAILABLE WOLVES NEARBY**
Taming.Skills.Charge.NoTarget=[[RED]]**NO TARGET FOUND**
Taming.Skillup=[[YELLOW]]Taming skill increased by {0}. Total ({1})
Taming.Summon.Complete=[[GREEN]]Summoning complete
Taming.Summon.Lifespan=[[YELLOW]] (Lifespan: {0}s)
@@ -846,9 +835,6 @@ Item.ChimaeraWing.Name=Chimaera Wing
Item.ChimaeraWing.Lore=[[GRAY]]Teleports you to your bed.
Item.Generic.Wait=[[RED]]You need to wait before you can use this again! [[YELLOW]]({0}s)
Item.Injured.Wait=You were injured recently and must wait to use this. [[YELLOW]]({0}s)
Item.FluxPickaxe.Name=Flux Pickaxe
Item.FluxPickaxe.Lore.1=[[GRAY]]Has a chance of instantly smelting ores.
Item.FluxPickaxe.Lore.2=[[GRAY]]Requires Smelting level {0}+
#TELEPORTATION
Teleport.Commencing=[[GRAY]]Commencing teleport in [[GOLD]]({0}) [[GRAY]]seconds, please stand still...
@@ -922,6 +908,7 @@ Smelting.Effect.4=Vanilla XP Boost
Smelting.Effect.5=Increase vanilla XP gained while smelting
Smelting.Effect.6=Flux Mining
Smelting.Effect.7=Chance for ores to be instantly smelted while mining
Smelting.FluxMining.Success=[[GREEN]]That ore smelted itself!
Smelting.Listener=Smelting:
Smelting.SkillName=SMELTING

View File

@@ -536,7 +536,6 @@ permissions:
mcmmo.ability.taming.sharpenedclaws: true
mcmmo.ability.taming.shockproof: true
mcmmo.ability.taming.thickfur: true
mcmmo.ability.taming.charge: true
mcmmo.ability.taming.pummel: true
mcmmo.ability.taming.beastlore:
description: Allows access to the Beast Lore ability
@@ -579,8 +578,6 @@ permissions:
description: Allows access to the Shock Proof ability
mcmmo.ability.taming.thickfur:
description: Allows access to the Thick Fur ability
mcmmo.ability.taming.charge:
description: Allows access to the Charge ability
mcmmo.ability.taming.pummel:
description: Allows access to the Pummel ability
mcmmo.ability.unarmed.*:

View File

@@ -793,16 +793,6 @@ Shake:
XP: 0
Drop_Chance: 50.0
Drop_Level: 0
PLAYER:
SKULL_ITEM:
Amount: 1
XP: 0
Drop_Chance: 0.0
Drop_Level: 0
INVENTORY:
Whole_Stacks: false
Drop_Chance: 0.0
Drop_Level: 0
SHEEP:
WOOL:
Amount: 3