Преглед изворни кода

Allow for configuration of custom Excavation drops (WIP) - Addresses
MCCORE-1

GJ пре 13 година
родитељ
комит
b23fa36543

+ 39 - 0
src/main/java/com/gmail/nossr50/config/LoadProperties.java

@@ -19,6 +19,9 @@ package com.gmail.nossr50.config;
 import com.gmail.nossr50.mcMMO;
 import java.io.File;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
 
 import org.bukkit.configuration.file.FileConfiguration;
 
@@ -86,6 +89,21 @@ public class LoadProperties {
 			sorceryxpmodifier, unarmedxpmodifier, herbalismxpmodifier,
 			excavationxpmodifier, archeryxpmodifier, swordsxpmodifier,
 			axesxpmodifier, acrobaticsxpmodifier;
+	
+	public static List<String> excavationTreasures = new ArrayList<String>();
+	public static List<Integer> excavationIDs = new ArrayList<Integer>();
+	public static List<Integer> excavationDatas = new ArrayList<Integer>();
+	public static List<Integer> excavationAmounts = new ArrayList<Integer>();
+	public static List<Integer> excavationXPs = new ArrayList<Integer>();
+	public static List<Double> excavationDropChances = new ArrayList<Double>();
+	public static List<Integer> excavationDropLevels = new ArrayList<Integer>();
+	public static List<Boolean> excavationFromDirt = new ArrayList<Boolean>();
+	public static List<Boolean> excavationFromGrass = new ArrayList<Boolean>();
+	public static List<Boolean> excavationFromSand = new ArrayList<Boolean>();
+	public static List<Boolean> excavationFromGravel = new ArrayList<Boolean>();
+	public static List<Boolean> excavationFromClay = new ArrayList<Boolean>();
+	public static List<Boolean> excavationFromMycel = new ArrayList<Boolean>();
+	public static List<Boolean> excavationFromSoulSand = new ArrayList<Boolean>();
 
 	public static HUDType defaulthud;
 	protected static File configFile;
@@ -438,5 +456,26 @@ public class LoadProperties {
 		
 		aDisplayNames = readBoolean("Commands.a.Display_Names", true);
 		pDisplayNames = readBoolean("Commands.p.Display_Names", true);
+		
+		//Custom Excavation Drops
+		excavationTreasures = config.getStringList("Excavation.Treasure");
+		Iterator<String> iterator = excavationTreasures.iterator();
+		while(iterator.hasNext())
+		{
+			String temp2 = iterator.next();
+			excavationIDs.add(config.getInt("Treasures." + temp2 + ".ID"));
+			excavationDatas.add(config.getInt("Treasures." + temp2 + ".Data"));
+			excavationXPs.add(config.getInt("Treasures." + temp2 + ".XP"));
+			excavationAmounts.add(config.getInt("Treasures." + temp2 + ".Amount"));
+			excavationDropChances.add(config.getDouble("Treasures." + temp2 + ".Drop_Chance"));
+			excavationDropLevels.add(config.getInt("Treasures." + temp2 + ".Drop_Level"));
+			excavationFromDirt.add(config.getBoolean("Treasures." + temp2 + ".Drops_From.Dirt"));
+			excavationFromGrass.add(config.getBoolean("Treasures." + temp2 + ".Drops_From.Grass"));
+			excavationFromSand.add(config.getBoolean("Treasures." + temp2 + ".Drops_From.Sand"));
+			excavationFromGravel.add(config.getBoolean("Treasures." + temp2 + ".Drops_From.Gravel"));
+			excavationFromClay.add(config.getBoolean("Treasures." + temp2 + ".Drops_From.Clay"));
+			excavationFromMycel.add(config.getBoolean("Treasures." + temp2 + ".Drops_From.Mycelium"));
+			excavationFromSoulSand.add(config.getBoolean("Treasures." + temp2 + ".Drops_From.Soul_Sand"));
+		}
 	}
 }

+ 263 - 130
src/main/java/com/gmail/nossr50/skills/Excavation.java

@@ -17,6 +17,7 @@
 package com.gmail.nossr50.skills;
 
 import java.util.ArrayList;
+import java.util.List;
 
 import org.bukkit.Bukkit;
 import org.bukkit.Location;
@@ -89,165 +90,297 @@ public class Excavation
 		int skillLevel = PP.getSkillLevel(SkillType.EXCAVATION);
     	ArrayList<ItemStack> is = new ArrayList<ItemStack>();
     	int xp = 0;
+    	   	
+    	//Custom Excavation Drops
+    	List<Integer> idValues = LoadProperties.excavationIDs;
+    	List<Integer> dataValues = LoadProperties.excavationDatas;
+    	List<Integer> xpValues = LoadProperties.excavationXPs;
+    	List<Integer> amounts = LoadProperties.excavationAmounts;
+    	List<Double> dropChances = LoadProperties.excavationDropChances;
+    	List<Integer> dropLevels = LoadProperties.excavationDropLevels;
+    	List<Boolean> dirt = LoadProperties.excavationFromDirt;
+    	List<Boolean> grass = LoadProperties.excavationFromGrass;
+    	List<Boolean> sand = LoadProperties.excavationFromSand;
+    	List<Boolean> gravel = LoadProperties.excavationFromGravel;
+    	List<Boolean> clay = LoadProperties.excavationFromClay;
+    	List<Boolean> mycel = LoadProperties.excavationFromMycel;
+    	List<Boolean> soulSand = LoadProperties.excavationFromSoulSand;
     	
     	switch(type)
     	{
-    	case GRASS:
-    		if(skillLevel >= 250)
+    	case DIRT:
+    		for(int i = 0; i < dirt.size(); i++)
     		{
-	    		//CHANCE TO GET EGGS
-	    		if(LoadProperties.eggs && Math.random() * 100 > 99)
-	    		{
-	    			xp+= LoadProperties.meggs;
-					is.add(new ItemStack(Material.EGG, 1, (byte)0, (byte)0));
-	    		}
-	    		//CHANCE TO GET APPLES
-	    		if(LoadProperties.apples && Math.random() * 100 > 99)
-	    		{
-	    			xp+= LoadProperties.mapple;
-					is.add(new ItemStack(Material.APPLE, 1, (byte)0, (byte)0));
-	    		}
+    			if(dirt.get(i))
+    			{
+    				if(skillLevel >= dropLevels.get(i))
+    				{
+    					if(Math.random() * 100 > (100.00 - dropChances.get(i)))
+    					{
+    						xp += xpValues.get(i);
+    						is.add(new ItemStack(idValues.get(i), amounts.get(i),  (byte)0, dataValues.get(i).byteValue()));
+    					}
+    				}
+    			}
     		}
     		break;
-    	case GRAVEL:
-    		//CHANCE TO GET NETHERRACK
-    		if(LoadProperties.netherrack && skillLevel >= 850 && Math.random() * 200 > 199)
-    		{
-    			xp+= LoadProperties.mnetherrack;
-				is.add(new ItemStack(Material.NETHERRACK, 1, (byte)0, (byte)0));
-				
-    		}
-    		//CHANCE TO GET SULPHUR
-    		if(LoadProperties.sulphur && skillLevel >= 75 && Math.random() * 10 > 9)
+    	case GRASS:
+    		for(int i = 0; i < grass.size(); i++)
     		{
-    			xp+= LoadProperties.msulphur;
-				is.add(new ItemStack(Material.SULPHUR, 1, (byte)0, (byte)0));
+    			if(grass.get(i))
+    			{
+    				if(skillLevel >= dropLevels.get(i))
+    				{
+    					if(Math.random() * 100 > (100.00 - dropChances.get(i)))
+    					{
+    						xp += xpValues.get(i);
+    						is.add(new ItemStack(idValues.get(i), amounts.get(i),  (byte)0, dataValues.get(i).byteValue()));
+    					}
+    				}
+    			}
     		}
-    		//CHANCE TO GET BONES
-    		if(LoadProperties.bones && skillLevel >= 175 && Math.random() * 10 > 9)
-    		{
-        		xp+= LoadProperties.mbones;
-    			is.add(new ItemStack(Material.BONE, 1, (byte)0, (byte)0));
-        	}
     		break;
     	case SAND:
-    		//CHANCE TO GET GLOWSTONE
-    		if(LoadProperties.glowstone && skillLevel >= 50 && Math.random() * 100 > 95)
+    		for(int i = 0; i < sand.size(); i++)
     		{
-    			xp+= LoadProperties.mglowstone2;
-				is.add(new ItemStack(Material.GLOWSTONE_DUST, 1, (byte)0, (byte)0));
-				
+    			if(sand.get(i))
+    			{
+    				if(skillLevel >= dropLevels.get(i))
+    				{
+    					if(Math.random() * 100 > (100.00 - dropChances.get(i)))
+    					{
+    						xp += xpValues.get(i);
+    						is.add(new ItemStack(idValues.get(i), amounts.get(i),  (byte)0, dataValues.get(i).byteValue()));
+    					}
+    				}
+    			}
     		}
-    		//CHANCE TO GET SOUL SAND
-    		if(LoadProperties.slowsand && skillLevel >= 650 && Math.random() * 200 > 199)
+    		break;
+    	case GRAVEL:
+    		for(int i = 0; i < gravel.size(); i++)
     		{
-    			xp+= LoadProperties.mslowsand;
-				is.add(new ItemStack(Material.SOUL_SAND, 1, (byte)0, (byte)0));
+    			if(gravel.get(i))
+    			{
+    				if(skillLevel >= dropLevels.get(i))
+    				{
+    					if(Math.random() * 100 > (100.00 - dropChances.get(i)))
+    					{
+    						xp += xpValues.get(i);
+    						is.add(new ItemStack(idValues.get(i), amounts.get(i),  (byte)0, dataValues.get(i).byteValue()));
+    					}
+    				}
+    			}
     		}
     		break;
     	case CLAY:
-    		//CHANCE TO GET SLIMEBALLS
-    		if(LoadProperties.slimeballs && skillLevel >= 50 && Math.random() * 20 > 19)
+    		for(int i = 0; i < clay.size(); i++)
     		{
-   				xp+= LoadProperties.mslimeballs;
-   				is.add(new ItemStack(Material.SLIME_BALL, 1, (byte)0, (byte)0));
-      		}
-    		//CHANCE TO GET STRING
-    		if(LoadProperties.string && skillLevel >= 250 && Math.random() * 20 > 19)
-    		{
-    			xp+= LoadProperties.mstring;
-    			is.add(new ItemStack(Material.STRING, 1, (byte)0, (byte)0));
-    		}
-    		if(skillLevel >= 500)
-    		{
-    			//CHANCE TO GET CLOCK
-        		if(LoadProperties.watch && Math.random() * 100 > 99)
-        		{
-        			xp+= LoadProperties.mwatch;
-        			is.add(new ItemStack(Material.WATCH, 1, (byte)0));
-        		
-        		}
-        		//CHANCE TO GET BUCKET
-        		if(LoadProperties.bucket && Math.random() * 100 > 99)
-        		{
-       				xp+= LoadProperties.mbucket;
-       				is.add(new ItemStack(Material.BUCKET, 1, (byte)0, (byte)0));
-        		}
-    		}
-    		//CHANCE TO GET COBWEB
-    		if(LoadProperties.web && skillLevel >= 750 && Math.random() * 20 > 19)
-    		{
-   				xp+= LoadProperties.mweb;
-   				is.add(new ItemStack(Material.WEB, 1, (byte)0, (byte)0));
+    			if(clay.get(i))
+    			{
+    				if(skillLevel >= dropLevels.get(i))
+    				{
+    					if(Math.random() * 100 > (100.00 - dropChances.get(i)))
+    					{
+    						xp += xpValues.get(i);
+    						is.add(new ItemStack(idValues.get(i), amounts.get(i),  (byte)0, dataValues.get(i).byteValue()));
+    					}
+    				}
+    			}
     		}
     		break;
-    	}
-    	
-    	//ALL MATERIALS
-    	if(type == Material.GRASS || type == Material.DIRT || type == Material.GRAVEL || type == Material.SAND || type == Material.CLAY || type == Material.MYCEL || type == Material.SOUL_SAND)
-    	{
-    		xp+= LoadProperties.mbase;
-			//CHANCE TO GET CAKE
-			if(LoadProperties.cake && skillLevel >= 750 && Math.random() * 2000 > 1999)
-			{
-				xp+= LoadProperties.mcake;
-				is.add(new ItemStack(Material.CAKE, 1, (byte)0, (byte)0));
-			}
-    		if(skillLevel >= 350)
+    	case MYCEL:
+    		for(int i = 0; i < mycel.size(); i++)
     		{
-    			//CHANCE TO GET DIAMOND
-    			if(LoadProperties.diamond && Math.random() * 750 > 749)
+    			if(mycel.get(i))
     			{
-    				xp+= LoadProperties.mdiamond2;
-        			is.add(new ItemStack(Material.DIAMOND, 1, (byte)0, (byte)0));
-    			}
-    			//CHANCE TO GET GREEN MUSIC
-    			if(LoadProperties.music && Math.random() * 2000 > 1999)
-    			{
-    				xp+= LoadProperties.mmusic;
-    				is.add(new ItemStack(Material.GREEN_RECORD, 1, (byte)0, (byte)0));
+    				if(skillLevel >= dropLevels.get(i))
+    				{
+    					if(Math.random() * 100 > (100.00 - dropChances.get(i)))
+    					{
+    						xp += xpValues.get(i);
+    						is.add(new ItemStack(idValues.get(i), amounts.get(i),  (byte)0, dataValues.get(i).byteValue()));
+    					}
+    				}
     			}
     		}
-			//CHANCE TO GET YELLOW MUSIC
-			if(LoadProperties.music && skillLevel >= 250 && Math.random() * 2000 > 1999)
-			{
-				xp+= LoadProperties.mmusic;
-				is.add(new ItemStack(Material.GOLD_RECORD, 1, (byte)0, (byte)0));
-			}
-    	}
-    	
-    	//GRASS OR DIRT OR MYCEL
-    	if(type == Material.DIRT || type == Material.GRASS || type == Material.MYCEL)
-    	{
-    		//CHANCE FOR COCOA BEANS
-    		if(LoadProperties.cocoabeans && skillLevel >= 50 && Math.random() * 75 > 74)
-    		{
-    			xp+= LoadProperties.mcocoa;
-				is.add(new ItemStack(Material.getMaterial(351), 1, (byte)0, (byte)3));
-    		}
-    		//CHANCE FOR SHROOMS
-    		if(LoadProperties.mushrooms && skillLevel >= 500 && Math.random() * 200 > 199)
+    		break;
+    	case SOUL_SAND:
+    		for(int i = 0; i < soulSand.size(); i++)
     		{
-    			xp+= LoadProperties.mmushroom2;
-    			switch((int)(Math.random() * 2))
+    			if(soulSand.get(i))
     			{
-    			case 0:
-    				is.add(new ItemStack(Material.BROWN_MUSHROOM, 1, (byte)0, (byte)0));
-    				break;
-    			case 1:
-    				is.add(new ItemStack(Material.RED_MUSHROOM, 1, (byte)0, (byte)0));
-    				break;
+    				if(skillLevel >= dropLevels.get(i))
+    				{
+    					if(Math.random() * 100 > (100.00 - dropChances.get(i)))
+    					{
+    						xp += xpValues.get(i);
+    						is.add(new ItemStack(idValues.get(i), amounts.get(i),  (byte)0, dataValues.get(i).byteValue()));
+    					}
+    				}
     			}
-				
-    		}
-    		//CHANCE TO GET GLOWSTONE
-    		if(LoadProperties.glowstone && skillLevel >= 25 && Math.random() * 100 > 95)
-    		{
-    			xp+= LoadProperties.mglowstone2;
-				is.add(new ItemStack(Material.GLOWSTONE_DUST, 1, (byte)0, (byte)0));
     		}
+    		break;
     	}
     	
+    	
+//    	switch(type)
+//    	{
+//    	case GRASS:
+//    		if(skillLevel >= 250)
+//    		{
+//	    		//CHANCE TO GET EGGS
+//	    		if(LoadProperties.eggs && Math.random() * 100 > 99)
+//	    		{
+//	    			xp+= LoadProperties.meggs;
+//					is.add(new ItemStack(Material.EGG, 1, (byte)0, (byte)0));
+//	    		}
+//	    		//CHANCE TO GET APPLES
+//	    		if(LoadProperties.apples && Math.random() * 100 > 99)
+//	    		{
+//	    			xp+= LoadProperties.mapple;
+//					is.add(new ItemStack(Material.APPLE, 1, (byte)0, (byte)0));
+//	    		}
+//    		}
+//    		break;
+//    	case GRAVEL:
+//    		//CHANCE TO GET NETHERRACK
+//    		if(LoadProperties.netherrack && skillLevel >= 850 && Math.random() * 200 > 199)
+//    		{
+//    			xp+= LoadProperties.mnetherrack;
+//				is.add(new ItemStack(Material.NETHERRACK, 1, (byte)0, (byte)0));
+//				
+//    		}
+//    		//CHANCE TO GET SULPHUR
+//    		if(LoadProperties.sulphur && skillLevel >= 75 && Math.random() * 10 > 9)
+//    		{
+//    			xp+= LoadProperties.msulphur;
+//				is.add(new ItemStack(Material.SULPHUR, 1, (byte)0, (byte)0));
+//    		}
+//    		//CHANCE TO GET BONES
+//    		if(LoadProperties.bones && skillLevel >= 175 && Math.random() * 10 > 9)
+//    		{
+//        		xp+= LoadProperties.mbones;
+//    			is.add(new ItemStack(Material.BONE, 1, (byte)0, (byte)0));
+//        	}
+//    		break;
+//    	case SAND:
+//    		//CHANCE TO GET GLOWSTONE
+//    		if(LoadProperties.glowstone && skillLevel >= 50 && Math.random() * 100 > 95)
+//    		{
+//    			xp+= LoadProperties.mglowstone2;
+//				is.add(new ItemStack(Material.GLOWSTONE_DUST, 1, (byte)0, (byte)0));
+//				
+//    		}
+//    		//CHANCE TO GET SOUL SAND
+//    		if(LoadProperties.slowsand && skillLevel >= 650 && Math.random() * 200 > 199)
+//    		{
+//    			xp+= LoadProperties.mslowsand;
+//				is.add(new ItemStack(Material.SOUL_SAND, 1, (byte)0, (byte)0));
+//    		}
+//    		break;
+//    	case CLAY:
+//    		//CHANCE TO GET SLIMEBALLS
+//    		if(LoadProperties.slimeballs && skillLevel >= 50 && Math.random() * 20 > 19)
+//    		{
+//   				xp+= LoadProperties.mslimeballs;
+//   				is.add(new ItemStack(Material.SLIME_BALL, 1, (byte)0, (byte)0));
+//      		}
+//    		//CHANCE TO GET STRING
+//    		if(LoadProperties.string && skillLevel >= 250 && Math.random() * 20 > 19)
+//    		{
+//    			xp+= LoadProperties.mstring;
+//    			is.add(new ItemStack(Material.STRING, 1, (byte)0, (byte)0));
+//    		}
+//    		if(skillLevel >= 500)
+//    		{
+//    			//CHANCE TO GET CLOCK
+//        		if(LoadProperties.watch && Math.random() * 100 > 99)
+//        		{
+//        			xp+= LoadProperties.mwatch;
+//        			is.add(new ItemStack(Material.WATCH, 1, (byte)0));
+//        		
+//        		}
+//        		//CHANCE TO GET BUCKET
+//        		if(LoadProperties.bucket && Math.random() * 100 > 99)
+//        		{
+//       				xp+= LoadProperties.mbucket;
+//       				is.add(new ItemStack(Material.BUCKET, 1, (byte)0, (byte)0));
+//        		}
+//    		}
+//    		//CHANCE TO GET COBWEB
+//    		if(LoadProperties.web && skillLevel >= 750 && Math.random() * 20 > 19)
+//    		{
+//   				xp+= LoadProperties.mweb;
+//   				is.add(new ItemStack(Material.WEB, 1, (byte)0, (byte)0));
+//    		}
+//    		break;
+//    	}
+//    	
+//    	//ALL MATERIALS
+//    	if(type == Material.GRASS || type == Material.DIRT || type == Material.GRAVEL || type == Material.SAND || type == Material.CLAY || type == Material.MYCEL || type == Material.SOUL_SAND)
+//    	{
+//    		xp+= LoadProperties.mbase;
+//			//CHANCE TO GET CAKE
+//			if(LoadProperties.cake && skillLevel >= 750 && Math.random() * 2000 > 1999)
+//			{
+//				xp+= LoadProperties.mcake;
+//				is.add(new ItemStack(Material.CAKE, 1, (byte)0, (byte)0));
+//			}
+//    		if(skillLevel >= 350)
+//    		{
+//    			//CHANCE TO GET DIAMOND
+//    			if(LoadProperties.diamond && Math.random() * 750 > 749)
+//    			{
+//    				xp+= LoadProperties.mdiamond2;
+//        			is.add(new ItemStack(Material.DIAMOND, 1, (byte)0, (byte)0));
+//    			}
+//    			//CHANCE TO GET GREEN MUSIC
+//    			if(LoadProperties.music && Math.random() * 2000 > 1999)
+//    			{
+//    				xp+= LoadProperties.mmusic;
+//    				is.add(new ItemStack(Material.GREEN_RECORD, 1, (byte)0, (byte)0));
+//    			}
+//    		}
+//			//CHANCE TO GET YELLOW MUSIC
+//			if(LoadProperties.music && skillLevel >= 250 && Math.random() * 2000 > 1999)
+//			{
+//				xp+= LoadProperties.mmusic;
+//				is.add(new ItemStack(Material.GOLD_RECORD, 1, (byte)0, (byte)0));
+//			}
+//    	}
+//    	
+//    	//GRASS OR DIRT OR MYCEL
+//    	if(type == Material.DIRT || type == Material.GRASS || type == Material.MYCEL)
+//    	{
+//    		//CHANCE FOR COCOA BEANS
+//    		if(LoadProperties.cocoabeans && skillLevel >= 50 && Math.random() * 75 > 74)
+//    		{
+//    			xp+= LoadProperties.mcocoa;
+//				is.add(new ItemStack(Material.getMaterial(351), 1, (byte)0, (byte)3));
+//    		}
+//    		//CHANCE FOR SHROOMS
+//    		if(LoadProperties.mushrooms && skillLevel >= 500 && Math.random() * 200 > 199)
+//    		{
+//    			xp+= LoadProperties.mmushroom2;
+//    			switch((int)(Math.random() * 2))
+//    			{
+//    			case 0:
+//    				is.add(new ItemStack(Material.BROWN_MUSHROOM, 1, (byte)0, (byte)0));
+//    				break;
+//    			case 1:
+//    				is.add(new ItemStack(Material.RED_MUSHROOM, 1, (byte)0, (byte)0));
+//    				break;
+//    			}
+//				
+//    		}
+//    		//CHANCE TO GET GLOWSTONE
+//    		if(LoadProperties.glowstone && skillLevel >= 25 && Math.random() * 100 > 95)
+//    		{
+//    			xp+= LoadProperties.mglowstone2;
+//				is.add(new ItemStack(Material.GLOWSTONE_DUST, 1, (byte)0, (byte)0));
+//    		}
+//    	}
+    	
     	//Drop items
     	for(ItemStack x : is)
     	{

+ 307 - 2
src/main/resources/config.yml

@@ -264,7 +264,6 @@ Excavation:
         Sulphur: true
         Bones: true
         Apples: true
-        Map: true
         Slimeballs: true
         Bucket: true
         Netherrack: true
@@ -278,7 +277,313 @@ Excavation:
         Music: true
         Diamond: true
         Cocoa_Beans: true
-
+    Treasure:
+        - Cake
+        - Gunpowder
+        - Bone
+        - Apple
+        - Slimeball
+        - Bucket
+        - Netherrack
+        - Red_Mushroom
+        - Brown_Mushroom
+        - Egg
+        - Soul_Sand
+        - Clock
+        - Cobweb
+        - String
+        - Glowstone_Dust
+        - Gold_Music
+        - Green_Music
+        - Diamond
+        - Cocoa_Beans
+        
+Treasures:
+    Cake:
+        ID: 354
+        Data: 0
+        Amount: 1
+        XP: 3000
+        Drop_Chance: 0.05
+        Drop_Level: 750
+        Drops_From:
+            Dirt: true
+            Grass: true
+            Sand: true
+            Gravel: true
+            Clay: true
+            Mycelium: true
+            Soul_Sand: true
+    Gunpowder:
+        ID: 289
+        Data: 0
+        Amount: 1
+        XP: 30
+        Drop_Chance: 10.0
+        Drop_Level: 75
+        Drops_From:
+            Dirt: false
+            Grass: false
+            Sand: false
+            Gravel: true
+            Clay: false
+            Mycelium: false
+            Soul_Sand: false
+    Bone:
+        ID: 352
+        Data: 0
+        Amount: 1
+        XP: 30
+        Drop_Chance: 10.0
+        Drop_Level: 175
+        Drops_From:
+            Dirt: false
+            Grass: false
+            Sand: false
+            Gravel: true
+            Clay: false
+            Mycelium: false
+            Soul_Sand: false            
+    Apple:
+        ID: 260
+        Data: 0
+        Amount: 1
+        XP: 100
+        Drop_Chance: 0.1
+        Drop_Level: 250
+        Drops_From:
+            Dirt: false
+            Grass: true
+            Sand: false
+            Gravel: false
+            Clay: false
+            Mycelium: true
+            Soul_Sand: false
+    Slimeball:
+        ID: 341
+        Data: 0
+        Amount: 1
+        XP: 100
+        Drop_Chance: 5.0
+        Drop_Level: 150
+        Drops_From:
+            Dirt: false
+            Grass: false
+            Sand: false
+            Gravel: false
+            Clay: true
+            Mycelium: false
+            Soul_Sand: false
+    Bucket:
+        ID: 325
+        Data: 0
+        Amount: 1
+        XP: 100
+        Drop_Chance: 0.1
+        Drop_Level: 500
+        Drops_From:
+            Dirt: false
+            Grass: false
+            Sand: false
+            Gravel: false
+            Clay: true
+            Mycelium: false
+            Soul_Sand: false
+    Netherrack:
+        ID: 87
+        Data: 0
+        Amount: 1
+        XP: 30
+        Drop_Chance: 0.5
+        Drop_Level: 850
+        Drops_From:
+            Dirt: false
+            Grass: false
+            Sand: false
+            Gravel: true
+            Clay: false
+            Mycelium: false
+            Soul_Sand: false
+    Red_Mushroom:
+        ID: 40
+        Data: 0
+        Amount: 1
+        XP: 80
+        Drop_Chance: 0.5
+        Drop_Level: 500
+        Drops_From:
+            Dirt: true
+            Grass: true
+            Sand: false
+            Gravel: false
+            Clay: false
+            Mycelium: true
+            Soul_Sand: false
+    Brown_Mushroom:
+        ID: 39
+        Data: 0
+        Amount: 1
+        XP: 80
+        Drop_Chance: 0.5
+        Drop_Level: 500
+        Drops_From:
+            Dirt: true
+            Grass: true
+            Sand: false
+            Gravel: false
+            Clay: false
+            Mycelium: true
+            Soul_Sand: false
+    Egg:
+        ID: 344
+        Data: 0
+        Amount: 1
+        XP: 100
+        Drop_Chance: 1.0
+        Drop_Level: 250
+        Drops_From:
+            Dirt: false
+            Grass: true
+            Sand: false
+            Gravel: false
+            Clay: false
+            Mycelium: false
+            Soul_Sand: false
+    Soul_Sand:
+        ID: 88
+        Data: 0
+        Amount: 1
+        XP: 80
+        Drop_Chance: 0.5
+        Drop_Level: 650
+        Drops_From:
+            Dirt: false
+            Grass: false
+            Sand: true
+            Gravel: false
+            Clay: false
+            Mycelium: false
+            Soul_Sand: false
+    Clock:
+        ID: 347
+        Data: 0
+        Amount: 1
+        XP: 100
+        Drop_Chance: 0.1
+        Drop_Level: 500
+        Drops_From:
+            Dirt: false
+            Grass: false
+            Sand: false
+            Gravel: false
+            Clay: true
+            Mycelium: false
+            Soul_Sand: false
+    Cobweb:
+        ID: 30
+        Data: 0
+        Amount: 1
+        XP: 150
+        Drop_Chance: 5.0
+        Drop_Level: 750
+        Drops_From:
+            Dirt: false
+            Grass: false
+            Sand: false
+            Gravel: false
+            Clay: true
+            Mycelium: false
+            Soul_Sand: false
+    String:
+        ID: 287
+        Data: 0
+        Amount: 1
+        XP: 200
+        Drop_Chance: 5.0
+        Drop_Level: 250
+        Drops_From:
+            Dirt: false
+            Grass: false
+            Sand: false
+            Gravel: false
+            Clay: true
+            Mycelium: false
+            Soul_Sand: false
+    Glowstone_Dust:
+        ID: 348
+        Data: 0
+        Amount: 1
+        XP: 80
+        Drop_Chance: 5.0
+        Drop_Level: 25
+        Drops_From:
+            Dirt: true
+            Grass: true
+            Sand: true
+            Gravel: false
+            Clay: false
+            Mycelium: true
+            Soul_Sand: false
+    Gold_Music:
+        ID: 2256
+        Data: 0
+        Amount: 1
+        XP: 3000
+        Drop_Chance: 0.05
+        Drop_Level: 250
+        Drops_From:
+            Dirt: true
+            Grass: true
+            Sand: true
+            Gravel: true
+            Clay: true
+            Mycelium: true
+            Soul_Sand: true
+    Green_Music:
+        ID: 2257
+        Data: 0
+        Amount: 1
+        XP: 3000
+        Drop_Chance: 0.05
+        Drop_Level: 250
+        Drops_From:
+            Dirt: true
+            Grass: true
+            Sand: true
+            Gravel: true
+            Clay: true
+            Mycelium: true
+            Soul_Sand: true
+    Diamond:
+        ID: 264
+        Data: 0
+        Amount: 1
+        XP: 1000
+        Drop_Chance: 0.13
+        Drop_Level: 350
+        Drops_From:
+            Dirt: true
+            Grass: true
+            Sand: true
+            Gravel: true
+            Clay: true
+            Mycelium: true
+            Soul_Sand: true
+    Cocoa_Beans:
+        ID: 351
+        Data: 3
+        Amount: 1
+        XP: 100
+        Drop_Chance: 1.33
+        Drop_Level: 350
+        Drops_From:
+            Dirt: true
+            Grass: true
+            Sand: true
+            Gravel: true
+            Clay: true
+            Mycelium: true
+            Soul_Sand: true
 #
 #  Settings for commands
 ###