mirror of
				https://github.com/mcMMO-Dev/mcMMO.git
				synced 2025-11-03 18:43:43 +01:00 
			
		
		
		
	All changes up to 0.8.17
This commit is contained in:
		@@ -1,5 +1,11 @@
 | 
			
		||||
Changelog:
 | 
			
		||||
#Versions without changelogs probably had very small misc fixes, like tweaks to the source code#
 | 
			
		||||
Version 0.8.17
 | 
			
		||||
	mcmmo.users moved to plugins/mcMMO/
 | 
			
		||||
	Snowballs and Eggs will no longer trigger Ignition
 | 
			
		||||
	Loot tables for excavation adjusted
 | 
			
		||||
	Mining benefits now require the player to be holding a mining pick
 | 
			
		||||
	Woodcutting benefits now require the player to be holding an axe
 | 
			
		||||
Version 0.8.16
 | 
			
		||||
	Moved configuration file to /plugins/mcMMO
 | 
			
		||||
	Arrows now have a chance to Ignite enemiesw
 | 
			
		||||
 
 | 
			
		||||
@@ -22,17 +22,14 @@ public class mcBlockListener extends BlockListener {
 | 
			
		||||
    }
 | 
			
		||||
    public void onBlockPlace(BlockPlaceEvent event) {
 | 
			
		||||
    	Block block;
 | 
			
		||||
    	Player player = event.getPlayer();
 | 
			
		||||
    	if (event.getBlockReplacedState().getTypeId() == 78) {
 | 
			
		||||
    		block = event.getBlockAgainst();
 | 
			
		||||
    		}
 | 
			
		||||
    		else {
 | 
			
		||||
    		block = event.getBlock();
 | 
			
		||||
    		}
 | 
			
		||||
    	int x = block.getX();
 | 
			
		||||
    	int y = block.getY();
 | 
			
		||||
    	int z = block.getZ();
 | 
			
		||||
    	String xyz = x+","+y+","+z;
 | 
			
		||||
    	if(mcm.getInstance().shouldBeWatched(block))
 | 
			
		||||
    	if(player != null && mcm.getInstance().shouldBeWatched(block))
 | 
			
		||||
    	mcConfig.getInstance().addBlockWatch(block);
 | 
			
		||||
    	if(block.getTypeId() == 42 && mcLoadProperties.anvilmessages)
 | 
			
		||||
    		event.getPlayer().sendMessage(ChatColor.DARK_RED+"You have placed an anvil, anvils can repair tools and armor.");
 | 
			
		||||
@@ -41,12 +38,9 @@ public class mcBlockListener extends BlockListener {
 | 
			
		||||
    public void onBlockDamage(BlockDamageEvent event) {
 | 
			
		||||
    		//STARTED(0), DIGGING(1), BROKEN(3), STOPPED(2);
 | 
			
		||||
    		Player player = event.getPlayer();
 | 
			
		||||
    		ItemStack inhand = player.getItemInHand();
 | 
			
		||||
    		//player.sendMessage("mcMMO DEBUG: EVENT-OK DMG LEVEL ("+event.getDamageLevel().getLevel()+")");
 | 
			
		||||
    		Block block = event.getBlock();
 | 
			
		||||
    		int x = block.getX();
 | 
			
		||||
        	int y = block.getY();
 | 
			
		||||
        	int z = block.getZ();
 | 
			
		||||
        	String xyz = x+","+y+","+z;
 | 
			
		||||
    		Location loc = block.getLocation();
 | 
			
		||||
    		int dmg = event.getDamageLevel().getLevel();
 | 
			
		||||
    		/*
 | 
			
		||||
@@ -60,64 +54,64 @@ public class mcBlockListener extends BlockListener {
 | 
			
		||||
    		 * MINING
 | 
			
		||||
    		 */
 | 
			
		||||
    		if(player != null && dmg == 2 && !mcConfig.getInstance().isBlockWatched(block)){
 | 
			
		||||
    		if(mcPermissions.getInstance().mining(player))
 | 
			
		||||
    		mcMining.getInstance().miningBlockCheck(player, block);
 | 
			
		||||
    		/*
 | 
			
		||||
    		 * WOOD CUTTING
 | 
			
		||||
    		 */
 | 
			
		||||
    		if(player != null && block.getTypeId() == 17 && mcPermissions.getInstance().woodcutting(player)){    		
 | 
			
		||||
    				mcWoodCutting.getInstance().woodCuttingProcCheck(player, block, loc);
 | 
			
		||||
    				mcUsers.getProfile(player).addWoodcuttingGather(7);
 | 
			
		||||
    				/*
 | 
			
		||||
    				 * IF PLAYER IS USING TREEFELLER
 | 
			
		||||
    				 */
 | 
			
		||||
    				if(mcPermissions.getInstance().woodcuttingability(player) && mcUsers.getProfile(player).getTreeFellerMode() && block.getTypeId() == 17){
 | 
			
		||||
    					mcWoodCutting.getInstance().treeFeller(block, player);
 | 
			
		||||
    					for(Block blockx : mcConfig.getInstance().getTreeFeller()){
 | 
			
		||||
    						if(blockx != null){
 | 
			
		||||
    							Material mat = Material.getMaterial(blockx.getTypeId());
 | 
			
		||||
    							byte damage = 0;
 | 
			
		||||
    							ItemStack item = new ItemStack(mat, 1, (byte)0, damage);
 | 
			
		||||
    							blockx.setTypeId(0);
 | 
			
		||||
    							if(item.getTypeId() == 17){
 | 
			
		||||
    							blockx.getLocation().getWorld().dropItemNaturally(blockx.getLocation(), item);
 | 
			
		||||
    							mcWoodCutting.getInstance().woodCuttingProcCheck(player, blockx, blockx.getLocation());
 | 
			
		||||
    							mcUsers.getProfile(player).addWoodcuttingGather(7);
 | 
			
		||||
    							}
 | 
			
		||||
    							if(item.getTypeId() == 18){
 | 
			
		||||
    								mat = Material.getMaterial(6);
 | 
			
		||||
    								item = new ItemStack(mat, 1, (byte)0, damage);
 | 
			
		||||
    								if(Math.random() * 10 > 8)
 | 
			
		||||
    								blockx.getLocation().getWorld().dropItemNaturally(blockx.getLocation(), item);
 | 
			
		||||
    							}
 | 
			
		||||
    						}
 | 
			
		||||
    					}
 | 
			
		||||
    					/*
 | 
			
		||||
    					 * NOTE TO SELF
 | 
			
		||||
    					 * I NEED TO REMOVE TREE FELL BLOCKS FROM BEING WATCHED AFTER THIS CODE IS EXECUTED
 | 
			
		||||
    					 * OR ELSE IT COULD BE A MEMORY LEAK SITUATION
 | 
			
		||||
    					 */
 | 
			
		||||
    					mcConfig.getInstance().clearTreeFeller();
 | 
			
		||||
    				}
 | 
			
		||||
    		}
 | 
			
		||||
    		/*
 | 
			
		||||
    		 * EXCAVATION
 | 
			
		||||
    		 */
 | 
			
		||||
    		if(mcPermissions.getInstance().excavation(player) && block != null && player != null)
 | 
			
		||||
    		mcExcavation.getInstance().excavationProcCheck(block, player);
 | 
			
		||||
    		/*
 | 
			
		||||
    		 * EXPLOIT COUNTERMEASURES
 | 
			
		||||
    		 */
 | 
			
		||||
    		mcConfig.getInstance().addBlockWatch(block);
 | 
			
		||||
    		if(player != null && mcUsers.getProfile(player).getWoodCuttingGatherInt() >= mcUsers.getProfile(player).getXpToLevel("woodcutting")){
 | 
			
		||||
    			int skillups = 0;
 | 
			
		||||
    			while(mcUsers.getProfile(player).getWoodCuttingGatherInt() >= mcUsers.getProfile(player).getXpToLevel("woodcutting")){
 | 
			
		||||
    				skillups++;
 | 
			
		||||
    				mcUsers.getProfile(player).removeWoodCuttingGather(mcUsers.getProfile(player).getXpToLevel("woodcutting"));
 | 
			
		||||
    				mcUsers.getProfile(player).skillUpWoodCutting(1);
 | 
			
		||||
    			}
 | 
			
		||||
    			player.sendMessage(ChatColor.YELLOW+"WoodCutting skill increased by "+skillups+"."+" Total ("+mcUsers.getProfile(player).getWoodCutting()+")");	
 | 
			
		||||
    		}
 | 
			
		||||
	    		if(mcm.getInstance().isMiningPick(inhand) && mcPermissions.getInstance().mining(player))
 | 
			
		||||
		    			mcMining.getInstance().miningBlockCheck(player, block);
 | 
			
		||||
	    		/*
 | 
			
		||||
	    		 * WOOD CUTTING
 | 
			
		||||
	    		 */
 | 
			
		||||
	    		if(player != null && mcm.getInstance().isAxes(inhand) && block.getTypeId() == 17 && mcPermissions.getInstance().woodcutting(player)){
 | 
			
		||||
	    				mcWoodCutting.getInstance().woodCuttingProcCheck(player, block, loc);
 | 
			
		||||
	    				mcUsers.getProfile(player).addWoodcuttingGather(7);
 | 
			
		||||
	    				/*
 | 
			
		||||
	    				 * IF PLAYER IS USING TREEFELLER
 | 
			
		||||
	    				 */
 | 
			
		||||
	    				if(mcPermissions.getInstance().woodcuttingability(player) && mcUsers.getProfile(player).getTreeFellerMode() && block.getTypeId() == 17){
 | 
			
		||||
	    					mcWoodCutting.getInstance().treeFeller(block, player);
 | 
			
		||||
	    					for(Block blockx : mcConfig.getInstance().getTreeFeller()){
 | 
			
		||||
	    						if(blockx != null){
 | 
			
		||||
	    							Material mat = Material.getMaterial(blockx.getTypeId());
 | 
			
		||||
	    							byte damage = 0;
 | 
			
		||||
	    							ItemStack item = new ItemStack(mat, 1, (byte)0, damage);
 | 
			
		||||
	    							blockx.setTypeId(0);
 | 
			
		||||
	    							if(item.getTypeId() == 17){
 | 
			
		||||
	    							blockx.getLocation().getWorld().dropItemNaturally(blockx.getLocation(), item);
 | 
			
		||||
	    							mcWoodCutting.getInstance().woodCuttingProcCheck(player, blockx, blockx.getLocation());
 | 
			
		||||
	    							mcUsers.getProfile(player).addWoodcuttingGather(7);
 | 
			
		||||
	    							}
 | 
			
		||||
	    							if(item.getTypeId() == 18){
 | 
			
		||||
	    								mat = Material.getMaterial(6);
 | 
			
		||||
	    								item = new ItemStack(mat, 1, (byte)0, damage);
 | 
			
		||||
	    								if(Math.random() * 10 > 8)
 | 
			
		||||
	    								blockx.getLocation().getWorld().dropItemNaturally(blockx.getLocation(), item);
 | 
			
		||||
	    							}
 | 
			
		||||
	    						}
 | 
			
		||||
	    					}
 | 
			
		||||
	    					/*
 | 
			
		||||
	    					 * NOTE TO SELF
 | 
			
		||||
	    					 * I NEED TO REMOVE TREE FELL BLOCKS FROM BEING WATCHED AFTER THIS CODE IS EXECUTED
 | 
			
		||||
	    					 * OR ELSE IT COULD BE A MEMORY LEAK SITUATION
 | 
			
		||||
	    					 */
 | 
			
		||||
	    					mcConfig.getInstance().clearTreeFeller();
 | 
			
		||||
	    				}
 | 
			
		||||
	    		}
 | 
			
		||||
	    		/*
 | 
			
		||||
	    		 * EXCAVATION
 | 
			
		||||
	    		 */
 | 
			
		||||
	    		if(mcPermissions.getInstance().excavation(player) && block != null && player != null)
 | 
			
		||||
	    		mcExcavation.getInstance().excavationProcCheck(block, player);
 | 
			
		||||
	    		/*
 | 
			
		||||
	    		 * EXPLOIT COUNTERMEASURES
 | 
			
		||||
	    		 */
 | 
			
		||||
	    		mcConfig.getInstance().addBlockWatch(block);
 | 
			
		||||
	    		if(player != null && mcUsers.getProfile(player).getWoodCuttingGatherInt() >= mcUsers.getProfile(player).getXpToLevel("woodcutting")){
 | 
			
		||||
	    			int skillups = 0;
 | 
			
		||||
	    			while(mcUsers.getProfile(player).getWoodCuttingGatherInt() >= mcUsers.getProfile(player).getXpToLevel("woodcutting")){
 | 
			
		||||
	    				skillups++;
 | 
			
		||||
	    				mcUsers.getProfile(player).removeWoodCuttingGather(mcUsers.getProfile(player).getXpToLevel("woodcutting"));
 | 
			
		||||
	    				mcUsers.getProfile(player).skillUpWoodCutting(1);
 | 
			
		||||
	    			}
 | 
			
		||||
	    			player.sendMessage(ChatColor.YELLOW+"WoodCutting skill increased by "+skillups+"."+" Total ("+mcUsers.getProfile(player).getWoodCutting()+")");	
 | 
			
		||||
	    		}
 | 
			
		||||
    		}
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 
 | 
			
		||||
@@ -332,19 +332,6 @@ public class mcCombat {
 | 
			
		||||
    	 */
 | 
			
		||||
    	if(y instanceof Player){
 | 
			
		||||
    		Player attacker = (Player)y;
 | 
			
		||||
    		if(Math.random() * 1500 <= mcUsers.getProfile(attacker).getArcheryInt()){
 | 
			
		||||
    			if(x instanceof Player){
 | 
			
		||||
    				Player Defender = (Player)x;
 | 
			
		||||
    				if(!mcParty.getInstance().inSameParty(attacker, Defender)){
 | 
			
		||||
    					event.getEntity().setFireTicks(120);
 | 
			
		||||
    					attacker.sendMessage(ChatColor.RED+"**IGNITION**");
 | 
			
		||||
    					Defender.sendMessage(ChatColor.DARK_RED+"You were struck by a burning arrow!");
 | 
			
		||||
    				}
 | 
			
		||||
    			} else {
 | 
			
		||||
    			event.getEntity().setFireTicks(160);
 | 
			
		||||
    			attacker.sendMessage(ChatColor.RED+"**IGNITION**");
 | 
			
		||||
    			}
 | 
			
		||||
    		}
 | 
			
		||||
    		if(event.getProjectile().toString().equals("CraftArrow") && mcPermissions.getInstance().archery(attacker)){
 | 
			
		||||
    			if(!mcConfig.getInstance().isTracked(x) && event.getDamage() > 0){
 | 
			
		||||
    				mcConfig.getInstance().addArrowTrack(x, 0);
 | 
			
		||||
@@ -362,6 +349,19 @@ public class mcCombat {
 | 
			
		||||
        				}
 | 
			
		||||
    				}
 | 
			
		||||
    			}
 | 
			
		||||
    			if(event.getDamage() > 0 && Math.random() * 1500 <= mcUsers.getProfile(attacker).getArcheryInt()){
 | 
			
		||||
        			if(x instanceof Player){
 | 
			
		||||
        				Player Defender = (Player)x;
 | 
			
		||||
        				if(!mcParty.getInstance().inSameParty(attacker, Defender)){
 | 
			
		||||
        					event.getEntity().setFireTicks(120);
 | 
			
		||||
        					attacker.sendMessage(ChatColor.RED+"**IGNITION**");
 | 
			
		||||
        					Defender.sendMessage(ChatColor.DARK_RED+"You were struck by a burning arrow!");
 | 
			
		||||
        				}
 | 
			
		||||
        			} else {
 | 
			
		||||
        			event.getEntity().setFireTicks(160);
 | 
			
		||||
        			attacker.sendMessage(ChatColor.RED+"**IGNITION**");
 | 
			
		||||
        			}
 | 
			
		||||
        		}
 | 
			
		||||
    		/*
 | 
			
		||||
    		 * Defender is Monster
 | 
			
		||||
    		 */
 | 
			
		||||
 
 | 
			
		||||
@@ -53,8 +53,17 @@ public class mcExcavation {
 | 
			
		||||
    				loc.getWorld().dropItemNaturally(loc, is);
 | 
			
		||||
    			}
 | 
			
		||||
    		}
 | 
			
		||||
    		if(mcUsers.getProfile(player).getExcavationInt() > 150){
 | 
			
		||||
    			//CHANCE TO GET MUSIC
 | 
			
		||||
    		if(mcUsers.getProfile(player).getExcavationInt() > 350){
 | 
			
		||||
    			//CHANCE TO GET DIAMOND
 | 
			
		||||
    			if(mcLoadProperties.diamond == true && Math.random() * 750 > 749){
 | 
			
		||||
    				mcUsers.getProfile(player).addExcavationGather(100);
 | 
			
		||||
        				mat = Material.getMaterial(264);
 | 
			
		||||
        				is = new ItemStack(mat, 1, (byte)0, (byte)0);
 | 
			
		||||
        				loc.getWorld().dropItemNaturally(loc, is);
 | 
			
		||||
    			}
 | 
			
		||||
    		}
 | 
			
		||||
    		if(mcUsers.getProfile(player).getExcavationInt() > 250){
 | 
			
		||||
    			//CHANCE TO GET YELLOW MUSIC
 | 
			
		||||
    			if(mcLoadProperties.music == true && Math.random() * 2000 > 1999){
 | 
			
		||||
    				mcUsers.getProfile(player).addExcavationGather(300);
 | 
			
		||||
    				mat = Material.getMaterial(2256);
 | 
			
		||||
@@ -64,16 +73,7 @@ public class mcExcavation {
 | 
			
		||||
    			
 | 
			
		||||
    		}
 | 
			
		||||
    		if(mcUsers.getProfile(player).getExcavationInt() > 350){
 | 
			
		||||
    			//CHANCE TO GET DIAMOND
 | 
			
		||||
    			if(mcLoadProperties.diamond == true && Math.random() * 500 > 499){
 | 
			
		||||
    				mcUsers.getProfile(player).addExcavationGather(100);
 | 
			
		||||
        				mat = Material.getMaterial(264);
 | 
			
		||||
        				is = new ItemStack(mat, 1, (byte)0, (byte)0);
 | 
			
		||||
        				loc.getWorld().dropItemNaturally(loc, is);
 | 
			
		||||
    			}
 | 
			
		||||
    		}
 | 
			
		||||
    		if(mcUsers.getProfile(player).getExcavationInt() > 250){
 | 
			
		||||
    			//CHANCE TO GET MUSIC
 | 
			
		||||
    			//CHANCE TO GET GREEN MUSIC
 | 
			
		||||
    			if(mcLoadProperties.music == true && Math.random() * 2000 > 1999){
 | 
			
		||||
    				mcUsers.getProfile(player).addExcavationGather(300);
 | 
			
		||||
    				mat = Material.getMaterial(2257);
 | 
			
		||||
@@ -136,7 +136,7 @@ public class mcExcavation {
 | 
			
		||||
    		}
 | 
			
		||||
    		//CHANCE TO GET BONES
 | 
			
		||||
    		if(mcLoadProperties.bones == true && mcUsers.getProfile(player).getExcavationInt() > 175){
 | 
			
		||||
        		if(Math.random() * 10 > 6){
 | 
			
		||||
        		if(Math.random() * 10 > 9){
 | 
			
		||||
        			mcUsers.getProfile(player).addExcavationGather(3);
 | 
			
		||||
        			mat = Material.getMaterial(352);
 | 
			
		||||
    				is = new ItemStack(mat, 1, (byte)0, (byte)0);
 | 
			
		||||
 
 | 
			
		||||
@@ -32,7 +32,7 @@ public class mcMMO extends JavaPlugin {
 | 
			
		||||
    
 | 
			
		||||
    //herp
 | 
			
		||||
    public void onEnable() {
 | 
			
		||||
    	mcMMO_Timer.schedule(new mcTimer(this), 0, (long)(2000));
 | 
			
		||||
    	//mcMMO_Timer.schedule(new mcTimer(this), 0, (long)(2000));
 | 
			
		||||
    	//Make the directory if it does not exist
 | 
			
		||||
    	new File(maindirectory).mkdir();
 | 
			
		||||
    	//Make the file if it does not exist
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,6 @@ public class mcMining {
 | 
			
		||||
		ItemStack item = new ItemStack(mat, 1, (byte)0, damage);
 | 
			
		||||
		if(block.getTypeId() != 73 && block.getTypeId() != 74 && block.getTypeId() != 56 && block.getTypeId() != 21 && block.getTypeId() != 1 && block.getTypeId() != 16)
 | 
			
		||||
		loc.getWorld().dropItemNaturally(loc, item);
 | 
			
		||||
		//hurrdurr
 | 
			
		||||
		if(block.getTypeId() == 73 || block.getTypeId() == 74){
 | 
			
		||||
			mat = Material.getMaterial(331);
 | 
			
		||||
			item = new ItemStack(mat, 1, (byte)0, damage);
 | 
			
		||||
 
 | 
			
		||||
@@ -69,6 +69,7 @@ public class mcPlayerListener extends PlayerListener {
 | 
			
		||||
    	Block block = event.getBlockClicked();
 | 
			
		||||
    	Player player = event.getPlayer();
 | 
			
		||||
    	ItemStack is = player.getItemInHand();
 | 
			
		||||
    	/*
 | 
			
		||||
    	if(mcPermissions.getInstance().woodcuttingability(player) && mcm.getInstance().isAxes(is)){
 | 
			
		||||
    		if(block != null){
 | 
			
		||||
    		if(!mcm.getInstance().abilityBlockCheck(block))
 | 
			
		||||
@@ -83,6 +84,7 @@ public class mcPlayerListener extends PlayerListener {
 | 
			
		||||
    			player.sendMessage(ChatColor.RED+"You are too tired to use that ability again.");
 | 
			
		||||
    		}
 | 
			
		||||
    	}
 | 
			
		||||
    	*/
 | 
			
		||||
    	if(mcPermissions.getInstance().herbalism(player)){
 | 
			
		||||
    	//BREADCHECK, CHECKS HERBALISM SKILL FOR BREAD HP MODIFIERS
 | 
			
		||||
    	mcHerbalism.getInstance().breadCheck(player, is);
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ import org.bukkit.plugin.Plugin;
 | 
			
		||||
public class mcUsers {
 | 
			
		||||
    private static volatile mcUsers instance;
 | 
			
		||||
    protected static final Logger log = Logger.getLogger("Minecraft");
 | 
			
		||||
    String location = "mcmmo.users";
 | 
			
		||||
    String location = "plugins/mcMMO/mcmmo.users";
 | 
			
		||||
    public static PlayerList players = new PlayerList();
 | 
			
		||||
    private Properties properties = new Properties();
 | 
			
		||||
    
 | 
			
		||||
@@ -161,7 +161,7 @@ class PlayerList
 | 
			
		||||
		Player thisplayer;
 | 
			
		||||
		char defaultColor;
 | 
			
		||||
 | 
			
		||||
        String location = "mcmmo.users";
 | 
			
		||||
        String location = "plugins/mcMMO/mcmmo.users";
 | 
			
		||||
		
 | 
			
		||||
		
 | 
			
		||||
		//=====================================================================
 | 
			
		||||
 
 | 
			
		||||
@@ -224,7 +224,13 @@ public class mcm {
 | 
			
		||||
    		return false;
 | 
			
		||||
    	}
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public boolean isMiningPick(ItemStack is){
 | 
			
		||||
    	if(is.getTypeId() == 270 || is.getTypeId() == 274 || is.getTypeId() == 285 || is.getTypeId() == 257 || is.getTypeId() == 278){
 | 
			
		||||
    		return true;
 | 
			
		||||
    	} else {
 | 
			
		||||
    		return false;
 | 
			
		||||
    	}
 | 
			
		||||
    }
 | 
			
		||||
    public void mcmmoHelpCheck(String[] split, Player player, PlayerChatEvent event){
 | 
			
		||||
    	if(split[0].equalsIgnoreCase("/woodcutting")){
 | 
			
		||||
			event.setCancelled(true);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,3 @@
 | 
			
		||||
name: mcMMO
 | 
			
		||||
main: com.gmail.nossr50.mcMMO
 | 
			
		||||
version: 0.9 WIP
 | 
			
		||||
version: 0.8.17
 | 
			
		||||
		Reference in New Issue
	
	Block a user