mirror of
				https://github.com/mcMMO-Dev/mcMMO.git
				synced 2025-11-04 11:03:43 +01:00 
			
		
		
		
	Start of work on allowing custom tool/block mods. This version should
allow for XP gain from vanilla blocks with custom tools. Please report any issues to facilitate further development.
This commit is contained in:
		@@ -53,7 +53,10 @@ public class Config extends ConfigLoader {
 | 
				
			|||||||
    public double getHardcoreDeathStatPenaltyPercentage() { return config.getDouble("Hardcore.Death_Stat_Loss_Penalty_Percentage", 75); }
 | 
					    public double getHardcoreDeathStatPenaltyPercentage() { return config.getDouble("Hardcore.Death_Stat_Loss_Penalty_Percentage", 75); }
 | 
				
			||||||
    public double getHardcoreVampirismStatLeechPercentage() { return config.getDouble("Hardcore.Vampirism_Stat_Leech_Percentage", 5); }
 | 
					    public double getHardcoreVampirismStatLeechPercentage() { return config.getDouble("Hardcore.Vampirism_Stat_Leech_Percentage", 5); }
 | 
				
			||||||
    public boolean getHardcoreVampirismEnabled() { return config.getBoolean("Hardcore.Vampirism", false); }
 | 
					    public boolean getHardcoreVampirismEnabled() { return config.getBoolean("Hardcore.Vampirism", false); }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
 | 
					    /* SMP Mods */
 | 
				
			||||||
 | 
					    public boolean getToolModsEnabled() { return config.getBoolean("Mods.Tool_Mods_Enabled", false); }
 | 
				
			||||||
 | 
					    public boolean getBlockModsEnabled() { return config.getBoolean("Mods.Block_Mods_Enabled", false); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Commands */
 | 
					    /* Commands */
 | 
				
			||||||
    public boolean getCommandXPLockEnabled() { return config.getBoolean("Commands.xplock.Enabled", true); }
 | 
					    public boolean getCommandXPLockEnabled() { return config.getBoolean("Commands.xplock.Enabled", true); }
 | 
				
			||||||
@@ -446,7 +449,6 @@ public class Config extends ConfigLoader {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void load() {
 | 
					    protected void load() {
 | 
				
			||||||
        // If it doesn't exist, copy it from the .jar
 | 
					 | 
				
			||||||
        if (!configFile.exists()) {
 | 
					        if (!configFile.exists()) {
 | 
				
			||||||
            dataFolder.mkdir();
 | 
					            dataFolder.mkdir();
 | 
				
			||||||
            plugin.saveDefaultConfig();
 | 
					            plugin.saveDefaultConfig();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -48,8 +48,6 @@ public class LoadTreasures extends ConfigLoader{
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void load() {
 | 
					    protected void load() {
 | 
				
			||||||
 | 
					 | 
				
			||||||
        // If it doesn't exist, copy it from the .jar
 | 
					 | 
				
			||||||
        if (!configFile.exists()) {
 | 
					        if (!configFile.exists()) {
 | 
				
			||||||
            dataFolder.mkdir();
 | 
					            dataFolder.mkdir();
 | 
				
			||||||
            plugin.saveTreasuresConfig();
 | 
					            plugin.saveTreasuresConfig();
 | 
				
			||||||
@@ -95,7 +93,7 @@ public class LoadTreasures extends ConfigLoader{
 | 
				
			|||||||
            int data = config.getInt("Treasures." + treasureName + ".Data");
 | 
					            int data = config.getInt("Treasures." + treasureName + ".Data");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (Material.getMaterial(id) == null) {
 | 
					            if (Material.getMaterial(id) == null) {
 | 
				
			||||||
                reason.add("Invlid id: " + id);
 | 
					                reason.add("Invalid id: " + id);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (amount < 1) {
 | 
					            if (amount < 1) {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										109
									
								
								src/main/java/com/gmail/nossr50/config/mods/LoadCustomTools.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								src/main/java/com/gmail/nossr50/config/mods/LoadCustomTools.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,109 @@
 | 
				
			|||||||
 | 
					package com.gmail.nossr50.config.mods;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.File;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.Iterator;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.bukkit.configuration.ConfigurationSection;
 | 
				
			||||||
 | 
					import org.bukkit.inventory.ItemStack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.gmail.nossr50.mcMMO;
 | 
				
			||||||
 | 
					import com.gmail.nossr50.config.ConfigLoader;
 | 
				
			||||||
 | 
					import com.gmail.nossr50.datatypes.mods.CustomTool;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class LoadCustomTools extends ConfigLoader {
 | 
				
			||||||
 | 
					    private static LoadCustomTools instance;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static LoadCustomTools getInstance() {
 | 
				
			||||||
 | 
					        if (instance == null) {
 | 
				
			||||||
 | 
					            instance = new LoadCustomTools(mcMMO.p);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return instance;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public List<CustomTool> customAxes = new ArrayList<CustomTool>();
 | 
				
			||||||
 | 
					    public List<CustomTool> customBows = new ArrayList<CustomTool>();
 | 
				
			||||||
 | 
					    public List<CustomTool> customHoes = new ArrayList<CustomTool>();
 | 
				
			||||||
 | 
					    public List<CustomTool> customPickaxes = new ArrayList<CustomTool>();
 | 
				
			||||||
 | 
					    public List<CustomTool> customShovels = new ArrayList<CustomTool>();
 | 
				
			||||||
 | 
					    public List<CustomTool> customSwords = new ArrayList<CustomTool>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public List<Integer> customAxeIDs = new ArrayList<Integer>();
 | 
				
			||||||
 | 
					    public List<Integer> customBowIDs = new ArrayList<Integer>();
 | 
				
			||||||
 | 
					    public List<Integer> customHoeIDs = new ArrayList<Integer>();
 | 
				
			||||||
 | 
					    public List<Integer> customPickaxeIDs = new ArrayList<Integer>();
 | 
				
			||||||
 | 
					    public List<Integer> customShovelIDs = new ArrayList<Integer>();
 | 
				
			||||||
 | 
					    public List<Integer> customSwordIDs = new ArrayList<Integer>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private LoadCustomTools(mcMMO plugin) {
 | 
				
			||||||
 | 
					        super(plugin, "ModConfigs" + File.separator + "tools.yml");
 | 
				
			||||||
 | 
					        config = plugin.getToolsConfig();
 | 
				
			||||||
 | 
					        load();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    protected void load() {
 | 
				
			||||||
 | 
					        if (!configFile.exists()) {
 | 
				
			||||||
 | 
					            dataFolder.mkdir();
 | 
				
			||||||
 | 
					            plugin.saveToolsConfig();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        addDefaults();
 | 
				
			||||||
 | 
					        loadKeys();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    protected void loadKeys() {
 | 
				
			||||||
 | 
					        plugin.getLogger().info("Loading mcMMO tools.yml File...");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        loadTool("Axes", customAxes, customAxeIDs);
 | 
				
			||||||
 | 
					        loadTool("Bows", customBows, customBowIDs);
 | 
				
			||||||
 | 
					        loadTool("Hoes", customHoes, customHoeIDs);
 | 
				
			||||||
 | 
					        loadTool("Pickaxes", customPickaxes, customPickaxeIDs);
 | 
				
			||||||
 | 
					        loadTool("Shovels", customShovels, customShovelIDs);
 | 
				
			||||||
 | 
					        loadTool("Swords", customSwords, customSwordIDs);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void loadTool(String toolType, List<CustomTool> toolList, List<Integer> idList) {
 | 
				
			||||||
 | 
					        ConfigurationSection toolSection = config.getConfigurationSection(toolType);
 | 
				
			||||||
 | 
					        Set<String> toolConfigSet = toolSection.getKeys(false);
 | 
				
			||||||
 | 
					        Iterator<String> iterator = toolConfigSet.iterator();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        while (iterator.hasNext()) {
 | 
				
			||||||
 | 
					            String toolName = iterator.next();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            int id = config.getInt(toolType + "." + toolName + ".ID");
 | 
				
			||||||
 | 
					            double multiplier = config.getDouble(toolType + "." + toolName + ".XP_Modifier", 1.0);
 | 
				
			||||||
 | 
					            boolean repairable = config.getBoolean(toolType + "." + toolName + ".Repairable");
 | 
				
			||||||
 | 
					            int repairID = config.getInt(toolType + "." + toolName + ".Repair_Material_ID");
 | 
				
			||||||
 | 
					            byte repairData = (byte) config.getInt(toolType + "." + toolName + ".Repair_Material_Data_Value");
 | 
				
			||||||
 | 
					            short durability = (short) config.getInt(toolType + "." + toolName + ".Durability");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (id == 0) {
 | 
				
			||||||
 | 
					                plugin.getLogger().warning("Missing ID. This item will be skipped.");
 | 
				
			||||||
 | 
					                continue;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (repairable && (repairID == 0 || durability == 0)) {
 | 
				
			||||||
 | 
					                plugin.getLogger().warning("Incomplete repair information. This item will be unrepairable.");
 | 
				
			||||||
 | 
					                repairable = false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            CustomTool tool;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (repairable) {
 | 
				
			||||||
 | 
					                ItemStack repairMaterial = new ItemStack(repairID, 1, (short) 0, repairData);
 | 
				
			||||||
 | 
					                tool = new CustomTool(durability, repairMaterial, repairable, multiplier, id);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                tool = new CustomTool(durability, null, repairable, multiplier, id);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            toolList.add(tool);
 | 
				
			||||||
 | 
					            idList.add(id);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -48,7 +48,7 @@ public enum ToolType {
 | 
				
			|||||||
            return ItemChecks.isHoe(is);
 | 
					            return ItemChecks.isHoe(is);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        case PICKAXE:
 | 
					        case PICKAXE:
 | 
				
			||||||
            return ItemChecks.isMiningPick(is);
 | 
					            return ItemChecks.isPickaxe(is);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        case SHOVEL:
 | 
					        case SHOVEL:
 | 
				
			||||||
            return ItemChecks.isShovel(is);
 | 
					            return ItemChecks.isShovel(is);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,59 @@
 | 
				
			|||||||
 | 
					package com.gmail.nossr50.datatypes.mods;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.bukkit.inventory.ItemStack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class CustomTool {
 | 
				
			||||||
 | 
					    private int itemID;
 | 
				
			||||||
 | 
					    private double xpMultiplier;
 | 
				
			||||||
 | 
					    private boolean repairable;
 | 
				
			||||||
 | 
					    private ItemStack repairMaterial;
 | 
				
			||||||
 | 
					    private short durability;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public CustomTool(short durability, ItemStack repairMaterial, boolean repairable, double xpMultiplier, int itemID) {
 | 
				
			||||||
 | 
					        this.itemID = itemID;
 | 
				
			||||||
 | 
					        this.xpMultiplier = xpMultiplier;
 | 
				
			||||||
 | 
					        this.repairable = repairable;
 | 
				
			||||||
 | 
					        this.repairMaterial = repairMaterial;
 | 
				
			||||||
 | 
					        this.durability = durability;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getItemID() {
 | 
				
			||||||
 | 
					        return itemID;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setItemID(int itemID) {
 | 
				
			||||||
 | 
					        this.itemID = itemID;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public double getXpMultiplier() {
 | 
				
			||||||
 | 
					        return xpMultiplier;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setXpMultiplier(Double xpMultiplier) {
 | 
				
			||||||
 | 
					        this.xpMultiplier = xpMultiplier;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isRepairable() {
 | 
				
			||||||
 | 
					        return repairable;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setRepairable(boolean repairable) {
 | 
				
			||||||
 | 
					        this.repairable = repairable;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public ItemStack getRepairMaterial() {
 | 
				
			||||||
 | 
					        return repairMaterial;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setRepairMaterial(ItemStack repairMaterial) {
 | 
				
			||||||
 | 
					        this.repairMaterial = repairMaterial;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public short getDurability() {
 | 
				
			||||||
 | 
					        return durability;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setDurability(short durability) {
 | 
				
			||||||
 | 
					        this.durability = durability;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -4,7 +4,7 @@ import org.bukkit.inventory.ItemStack;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
public abstract class Treasure {
 | 
					public abstract class Treasure {
 | 
				
			||||||
    private int xp;
 | 
					    private int xp;
 | 
				
			||||||
    private Double dropChance;
 | 
					    private double dropChance;
 | 
				
			||||||
    private int dropLevel;
 | 
					    private int dropLevel;
 | 
				
			||||||
    private ItemStack drop;
 | 
					    private ItemStack drop;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -31,7 +31,7 @@ public abstract class Treasure {
 | 
				
			|||||||
        this.xp = xp;
 | 
					        this.xp = xp;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Double getDropChance() {
 | 
					    public double getDropChance() {
 | 
				
			||||||
        return dropChance;
 | 
					        return dropChance;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -164,7 +164,7 @@ public class BlockListener implements Listener {
 | 
				
			|||||||
         */
 | 
					         */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (Permissions.getInstance().mining(player) && BlockChecks.canBeSuperBroken(mat)) {
 | 
					        if (Permissions.getInstance().mining(player) && BlockChecks.canBeSuperBroken(mat)) {
 | 
				
			||||||
            if (Config.getInstance().getMiningRequiresTool() && ItemChecks.isMiningPick(inhand)) {
 | 
					            if (Config.getInstance().getMiningRequiresTool() && ItemChecks.isPickaxe(inhand)) {
 | 
				
			||||||
                Mining.miningBlockCheck(player, block);
 | 
					                Mining.miningBlockCheck(player, block);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else if (!Config.getInstance().getMiningRequiresTool()) {
 | 
					            else if (!Config.getInstance().getMiningRequiresTool()) {
 | 
				
			||||||
@@ -279,7 +279,7 @@ public class BlockListener implements Listener {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        else if (PP.getAbilityMode(AbilityType.SUPER_BREAKER) && Skills.triggerCheck(player, block, AbilityType.SUPER_BREAKER)) {
 | 
					        else if (PP.getAbilityMode(AbilityType.SUPER_BREAKER) && Skills.triggerCheck(player, block, AbilityType.SUPER_BREAKER)) {
 | 
				
			||||||
            if(!player.getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH)) {  
 | 
					            if(!player.getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH)) {  
 | 
				
			||||||
                if (Config.getInstance().getMiningRequiresTool() && ItemChecks.isMiningPick(inhand)) {
 | 
					                if (Config.getInstance().getMiningRequiresTool() && ItemChecks.isPickaxe(inhand)) {
 | 
				
			||||||
                    event.setInstaBreak(true);
 | 
					                    event.setInstaBreak(true);
 | 
				
			||||||
                    Mining.SuperBreakerBlockCheck(player, block);
 | 
					                    Mining.SuperBreakerBlockCheck(player, block);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -56,6 +56,7 @@ public class mcMMO extends JavaPlugin {
 | 
				
			|||||||
    public static String flatFileDirectory;
 | 
					    public static String flatFileDirectory;
 | 
				
			||||||
    public static String usersFile;
 | 
					    public static String usersFile;
 | 
				
			||||||
    public static String leaderboardDirectory;
 | 
					    public static String leaderboardDirectory;
 | 
				
			||||||
 | 
					    public static String modDirectory;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Things to be run when the plugin is enabled.
 | 
					     * Things to be run when the plugin is enabled.
 | 
				
			||||||
@@ -67,6 +68,7 @@ public class mcMMO extends JavaPlugin {
 | 
				
			|||||||
        mainDirectory = getDataFolder().getPath() + File.separator;
 | 
					        mainDirectory = getDataFolder().getPath() + File.separator;
 | 
				
			||||||
        flatFileDirectory = mainDirectory + "FlatFileStuff" + File.separator;
 | 
					        flatFileDirectory = mainDirectory + "FlatFileStuff" + File.separator;
 | 
				
			||||||
        leaderboardDirectory = flatFileDirectory + "Leaderboards" + File.separator;
 | 
					        leaderboardDirectory = flatFileDirectory + "Leaderboards" + File.separator;
 | 
				
			||||||
 | 
					        modDirectory = mainDirectory + "ModConfigs" + File.separator;
 | 
				
			||||||
        usersFile = flatFileDirectory + "mcmmo.users";
 | 
					        usersFile = flatFileDirectory + "mcmmo.users";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!Config.getInstance().getUseMySQL()) {
 | 
					        if (!Config.getInstance().getUseMySQL()) {
 | 
				
			||||||
@@ -79,11 +81,12 @@ public class mcMMO extends JavaPlugin {
 | 
				
			|||||||
        pm.registerEvents(playerListener, this);
 | 
					        pm.registerEvents(playerListener, this);
 | 
				
			||||||
        pm.registerEvents(blockListener, this);
 | 
					        pm.registerEvents(blockListener, this);
 | 
				
			||||||
        pm.registerEvents(entityListener, this);
 | 
					        pm.registerEvents(entityListener, this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (Config.getInstance().getHardcoreEnabled()) {
 | 
					        if (Config.getInstance().getHardcoreEnabled()) {
 | 
				
			||||||
            pm.registerEvents(hardcoreListener, this);
 | 
					            pm.registerEvents(hardcoreListener, this);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        PluginDescriptionFile pdfFile = this.getDescription();
 | 
					        PluginDescriptionFile pdfFile = getDescription();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //Setup the leaderboards
 | 
					        //Setup the leaderboards
 | 
				
			||||||
        if (Config.getInstance().getUseMySQL()) {
 | 
					        if (Config.getInstance().getUseMySQL()) {
 | 
				
			||||||
@@ -117,7 +120,8 @@ public class mcMMO extends JavaPlugin {
 | 
				
			|||||||
            try {
 | 
					            try {
 | 
				
			||||||
                Metrics metrics = new Metrics(this);
 | 
					                Metrics metrics = new Metrics(this);
 | 
				
			||||||
                metrics.start();
 | 
					                metrics.start();
 | 
				
			||||||
            } catch (IOException e) {
 | 
					            }
 | 
				
			||||||
 | 
					            catch (IOException e) {
 | 
				
			||||||
                System.out.println("Failed to submit stats.");
 | 
					                System.out.println("Failed to submit stats.");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -168,12 +172,13 @@ public class mcMMO extends JavaPlugin {
 | 
				
			|||||||
            x.save();
 | 
					            x.save();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.getServer().getScheduler().cancelTasks(this); //This removes our tasks
 | 
					        getServer().getScheduler().cancelTasks(this); //This removes our tasks
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //Remove other tasks BEFORE starting the Backup, or we just cancel it straight away.
 | 
					        //Remove other tasks BEFORE starting the Backup, or we just cancel it straight away.
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            ZipLibrary.mcMMObackup();
 | 
					            ZipLibrary.mcMMObackup();
 | 
				
			||||||
        } catch (IOException e) {
 | 
					        }
 | 
				
			||||||
 | 
					        catch (IOException e) {
 | 
				
			||||||
            getLogger().severe(e.toString());
 | 
					            getLogger().severe(e.toString());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -304,7 +309,7 @@ public class mcMMO extends JavaPlugin {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * Boilerplate Custom Config Stuff
 | 
					     * Boilerplate Custom Config Stuff (Treasures)
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private FileConfiguration treasuresConfig = null;
 | 
					    private FileConfiguration treasuresConfig = null;
 | 
				
			||||||
@@ -352,7 +357,60 @@ public class mcMMO extends JavaPlugin {
 | 
				
			|||||||
            treasuresConfig.save(treasuresConfigFile);
 | 
					            treasuresConfig.save(treasuresConfigFile);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        catch (IOException ex) {
 | 
					        catch (IOException ex) {
 | 
				
			||||||
            this.getLogger().severe("Could not save config to " + treasuresConfigFile + ex.toString());
 | 
					            getLogger().severe("Could not save config to " + treasuresConfigFile + ex.toString());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /*
 | 
				
			||||||
 | 
					     * Boilerplate Custom Config Stuff (Tools)
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private FileConfiguration toolsConfig = null;
 | 
				
			||||||
 | 
					    private File toolsConfigFile = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Reload the Tools.yml file.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public void reloadToolsConfig() {
 | 
				
			||||||
 | 
					        if (toolsConfigFile == null) {
 | 
				
			||||||
 | 
					            toolsConfigFile = new File(modDirectory, "tools.yml");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        toolsConfig = YamlConfiguration.loadConfiguration(toolsConfigFile);
 | 
				
			||||||
 | 
					        InputStream defConfigStream = getResource("tools.yml"); // Look for defaults in the jar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (defConfigStream != null) {
 | 
				
			||||||
 | 
					            YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(defConfigStream);
 | 
				
			||||||
 | 
					            toolsConfig.setDefaults(defConfig);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get the Tools config information.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return the configuration object for tools.yml
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public FileConfiguration getToolsConfig() {
 | 
				
			||||||
 | 
					        if (toolsConfig == null) {
 | 
				
			||||||
 | 
					            reloadToolsConfig();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return toolsConfig;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Save the Tools config informtion.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public void saveToolsConfig() {
 | 
				
			||||||
 | 
					        if (toolsConfig == null || toolsConfigFile == null) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            toolsConfig.save(toolsConfigFile);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        catch (IOException ex) {
 | 
				
			||||||
 | 
					            getLogger().severe("Could not save config to " + toolsConfigFile + ex.toString());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -327,7 +327,7 @@ public class Repair {
 | 
				
			|||||||
        else if (ItemChecks.isHoe(is) || ItemChecks.isSword(is) || is.getType().equals(Material.SHEARS)) {
 | 
					        else if (ItemChecks.isHoe(is) || ItemChecks.isSword(is) || is.getType().equals(Material.SHEARS)) {
 | 
				
			||||||
            ramt = maxDurability / 2;
 | 
					            ramt = maxDurability / 2;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else if (ItemChecks.isAxe(is) || ItemChecks.isMiningPick(is) || ItemChecks.isStringTool(is)) {
 | 
					        else if (ItemChecks.isAxe(is) || ItemChecks.isPickaxe(is) || ItemChecks.isStringTool(is)) {
 | 
				
			||||||
            ramt = maxDurability / 3;
 | 
					            ramt = maxDurability / 3;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else if (ItemChecks.isBoots(is)) {
 | 
					        else if (ItemChecks.isBoots(is)) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,11 @@ package com.gmail.nossr50.util;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import org.bukkit.inventory.ItemStack;
 | 
					import org.bukkit.inventory.ItemStack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.gmail.nossr50.config.Config;
 | 
				
			||||||
 | 
					import com.gmail.nossr50.config.mods.LoadCustomTools;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class ItemChecks {
 | 
					public class ItemChecks {
 | 
				
			||||||
 | 
					    private static Config configInstance = Config.getInstance();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Checks if the item is a sword.
 | 
					     * Checks if the item is a sword.
 | 
				
			||||||
@@ -20,7 +24,12 @@ public class ItemChecks {
 | 
				
			|||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        default:
 | 
					        default:
 | 
				
			||||||
            return false;
 | 
					            if (configInstance.getToolModsEnabled() && LoadCustomTools.getInstance().customSwordIDs.contains(is.getTypeId())) {
 | 
				
			||||||
 | 
					                return true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -40,7 +49,12 @@ public class ItemChecks {
 | 
				
			|||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        default:
 | 
					        default:
 | 
				
			||||||
            return false;
 | 
					            if (configInstance.getToolModsEnabled() && LoadCustomTools.getInstance().customHoeIDs.contains(is.getTypeId())) {
 | 
				
			||||||
 | 
					                return true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -49,7 +63,7 @@ public class ItemChecks {
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param is Item to check
 | 
					     * @param is Item to check
 | 
				
			||||||
     * @return true if the item is a shovel, false otherwise
 | 
					     * @return true if the item is a shovel, false otherwise
 | 
				
			||||||
     */
 | 
					     */ 
 | 
				
			||||||
    public static boolean isShovel(ItemStack is) {
 | 
					    public static boolean isShovel(ItemStack is) {
 | 
				
			||||||
        switch (is.getType()) {
 | 
					        switch (is.getType()) {
 | 
				
			||||||
        case DIAMOND_SPADE:
 | 
					        case DIAMOND_SPADE:
 | 
				
			||||||
@@ -60,7 +74,12 @@ public class ItemChecks {
 | 
				
			|||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        default:
 | 
					        default:
 | 
				
			||||||
            return false;
 | 
					            if (configInstance.getToolModsEnabled() && LoadCustomTools.getInstance().customShovelIDs.contains(is.getTypeId())) {
 | 
				
			||||||
 | 
					                return true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -80,7 +99,12 @@ public class ItemChecks {
 | 
				
			|||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        default:
 | 
					        default:
 | 
				
			||||||
            return false;
 | 
					            if (configInstance.getToolModsEnabled() && LoadCustomTools.getInstance().customAxeIDs.contains(is.getTypeId())) {
 | 
				
			||||||
 | 
					                return true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -90,7 +114,7 @@ public class ItemChecks {
 | 
				
			|||||||
     * @param is Item to check
 | 
					     * @param is Item to check
 | 
				
			||||||
     * @return true if the item is a pickaxe, false otherwise
 | 
					     * @return true if the item is a pickaxe, false otherwise
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public static boolean isMiningPick(ItemStack is) {
 | 
					    public static boolean isPickaxe(ItemStack is) {
 | 
				
			||||||
        switch (is.getType()) {
 | 
					        switch (is.getType()) {
 | 
				
			||||||
        case DIAMOND_PICKAXE:
 | 
					        case DIAMOND_PICKAXE:
 | 
				
			||||||
        case GOLD_PICKAXE:
 | 
					        case GOLD_PICKAXE:
 | 
				
			||||||
@@ -100,7 +124,12 @@ public class ItemChecks {
 | 
				
			|||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        default:
 | 
					        default:
 | 
				
			||||||
            return false;
 | 
					            if (configInstance.getToolModsEnabled() && LoadCustomTools.getInstance().customPickaxeIDs.contains(is.getTypeId())) {
 | 
				
			||||||
 | 
					                return true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -395,4 +424,3 @@ public class ItemChecks {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
    
 | 
					 | 
				
			||||||
@@ -40,6 +40,13 @@ Hardcore:
 | 
				
			|||||||
    Vampirism: false
 | 
					    Vampirism: false
 | 
				
			||||||
    Vampirism_Stat_Leech_Percentage: 5
 | 
					    Vampirism_Stat_Leech_Percentage: 5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#  Settings for SMP Mods
 | 
				
			||||||
 | 
					###
 | 
				
			||||||
 | 
					Mods:
 | 
				
			||||||
 | 
					    Tool_Mods_Enabled: false
 | 
				
			||||||
 | 
					    Block_Mods_Enabled: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
#  Settings for mcMMO items
 | 
					#  Settings for mcMMO items
 | 
				
			||||||
###
 | 
					###
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										113
									
								
								src/main/resources/tools.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								src/main/resources/tools.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,113 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					#  Settings for Axes
 | 
				
			||||||
 | 
					###
 | 
				
			||||||
 | 
					Axes:
 | 
				
			||||||
 | 
					    Axe_1:
 | 
				
			||||||
 | 
					        ID: 999
 | 
				
			||||||
 | 
					        XP_Modifer: 1.0
 | 
				
			||||||
 | 
					        Repairable: true
 | 
				
			||||||
 | 
					        Repair_Material_ID: 99
 | 
				
			||||||
 | 
					        Repair_Material_Data_Value: 0
 | 
				
			||||||
 | 
					        Durability: 9999
 | 
				
			||||||
 | 
					    Axe_2:
 | 
				
			||||||
 | 
					        ID: 999
 | 
				
			||||||
 | 
					        XP_Modifer: 1.0
 | 
				
			||||||
 | 
					        Repairable: true
 | 
				
			||||||
 | 
					        Repair_Material_ID: 99
 | 
				
			||||||
 | 
					        Repair_Material_Data_Value: 0
 | 
				
			||||||
 | 
					        Durability: 9999
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#  Settings for Bows
 | 
				
			||||||
 | 
					###
 | 
				
			||||||
 | 
					Bows:
 | 
				
			||||||
 | 
					    Bow_1:
 | 
				
			||||||
 | 
					        ID: 999
 | 
				
			||||||
 | 
					        XP_Modifer: 1.0
 | 
				
			||||||
 | 
					        Repairable: true
 | 
				
			||||||
 | 
					        Repair_Material_ID: 99
 | 
				
			||||||
 | 
					        Repair_Material_Data_Value: 0
 | 
				
			||||||
 | 
					        Durability: 9999
 | 
				
			||||||
 | 
					    Bow_2:
 | 
				
			||||||
 | 
					        ID: 999
 | 
				
			||||||
 | 
					        XP_Modifer: 1.0
 | 
				
			||||||
 | 
					        Repairable: true
 | 
				
			||||||
 | 
					        Repair_Material_ID: 99
 | 
				
			||||||
 | 
					        Repair_Material_Data_Value: 0
 | 
				
			||||||
 | 
					        Durability: 9999
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#  Settings for Hoes
 | 
				
			||||||
 | 
					###
 | 
				
			||||||
 | 
					Hoes:
 | 
				
			||||||
 | 
					    Hoe_1:
 | 
				
			||||||
 | 
					        ID: 999
 | 
				
			||||||
 | 
					        XP_Modifer: 1.0
 | 
				
			||||||
 | 
					        Repairable: true
 | 
				
			||||||
 | 
					        Repair_Material_ID: 99
 | 
				
			||||||
 | 
					        Repair_Material_Data_Value: 0
 | 
				
			||||||
 | 
					        Durability: 9999
 | 
				
			||||||
 | 
					    Hoe_2:
 | 
				
			||||||
 | 
					        ID: 999
 | 
				
			||||||
 | 
					        XP_Modifer: 1.0
 | 
				
			||||||
 | 
					        Repairable: true
 | 
				
			||||||
 | 
					        Repair_Material_ID: 99
 | 
				
			||||||
 | 
					        Repair_Material_Data_Value: 0
 | 
				
			||||||
 | 
					        Durability: 9999
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#  Settings for Pickaxes
 | 
				
			||||||
 | 
					###
 | 
				
			||||||
 | 
					Pickaxes:
 | 
				
			||||||
 | 
					    Pickaxe_1:
 | 
				
			||||||
 | 
					        ID: 999
 | 
				
			||||||
 | 
					        XP_Modifer: 1.0
 | 
				
			||||||
 | 
					        Repairable: true
 | 
				
			||||||
 | 
					        Repair_Material_ID: 99
 | 
				
			||||||
 | 
					        Repair_Material_Data_Value: 0
 | 
				
			||||||
 | 
					        Durability: 9999
 | 
				
			||||||
 | 
					    Pickaxe_2:
 | 
				
			||||||
 | 
					        ID: 999
 | 
				
			||||||
 | 
					        XP_Modifer: 1.0
 | 
				
			||||||
 | 
					        Repairable: true
 | 
				
			||||||
 | 
					        Repair_Material_ID: 99
 | 
				
			||||||
 | 
					        Repair_Material_Data_Value: 0
 | 
				
			||||||
 | 
					        Durability: 9999
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#  Settings for Shovels
 | 
				
			||||||
 | 
					###
 | 
				
			||||||
 | 
					Shovels:
 | 
				
			||||||
 | 
					    Shovel_1:
 | 
				
			||||||
 | 
					        ID: 999
 | 
				
			||||||
 | 
					        XP_Modifer: 1.0
 | 
				
			||||||
 | 
					        Repairable: true
 | 
				
			||||||
 | 
					        Repair_Material_ID: 99
 | 
				
			||||||
 | 
					        Repair_Material_Data_Value: 0
 | 
				
			||||||
 | 
					        Durability: 9999
 | 
				
			||||||
 | 
					    Shovel_2:
 | 
				
			||||||
 | 
					        ID: 999
 | 
				
			||||||
 | 
					        XP_Modifer: 1.0
 | 
				
			||||||
 | 
					        Repairable: true
 | 
				
			||||||
 | 
					        Repair_Material_ID: 99
 | 
				
			||||||
 | 
					        Repair_Material_Data_Value: 0
 | 
				
			||||||
 | 
					        Durability: 9999
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#  Settings for Swords
 | 
				
			||||||
 | 
					###
 | 
				
			||||||
 | 
					Swords:
 | 
				
			||||||
 | 
					    Sword_1:
 | 
				
			||||||
 | 
					        ID: 999
 | 
				
			||||||
 | 
					        XP_Modifer: 1.0
 | 
				
			||||||
 | 
					        Repairable: true
 | 
				
			||||||
 | 
					        Repair_Material_ID: 99
 | 
				
			||||||
 | 
					        Repair_Material_Data_Value: 0
 | 
				
			||||||
 | 
					        Durability: 9999
 | 
				
			||||||
 | 
					    Sword_2:
 | 
				
			||||||
 | 
					        ID: 999
 | 
				
			||||||
 | 
					        XP_Modifer: 1.0
 | 
				
			||||||
 | 
					        Repairable: true
 | 
				
			||||||
 | 
					        Repair_Material_ID: 99
 | 
				
			||||||
 | 
					        Repair_Material_Data_Value: 0
 | 
				
			||||||
 | 
					        Durability: 9999
 | 
				
			||||||
		Reference in New Issue
	
	Block a user