mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-12-24 01:27:41 +01:00
Another mcMMO WIP, now with 100% more BukkitContrib stuff
This commit is contained in:
parent
6592b3db75
commit
463c044b5e
@ -1,9 +1,16 @@
|
||||
Changelog:
|
||||
#Versions without changelogs probably had very small misc fixes, like tweaks to the source code
|
||||
Version 1.0.37
|
||||
Berserk mode stops items from being collected
|
||||
Taming no longer receives xp from wolves being harmed
|
||||
Fixed bug where players with mcgod could be harmed by AoE
|
||||
Fixed bug where modifying a skill also modified the xp to the same amount (when it should be zero)
|
||||
|
||||
BukkitContrib Stuff
|
||||
Added 'notifications' on levelup (BukkitContrib)
|
||||
Added sound effects to abilities
|
||||
Added an extra cool sound for WoodCutting
|
||||
|
||||
Code Stuff
|
||||
Added getPlayerProfile() which returns a PlayerProfile object for plugin devs
|
||||
100% more enums
|
||||
|
263
mcMMO/com/gmail/nossr50/contrib/contribStuff.java
Normal file
263
mcMMO/com/gmail/nossr50/contrib/contribStuff.java
Normal file
@ -0,0 +1,263 @@
|
||||
package com.gmail.nossr50.contrib;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkitcontrib.BukkitContrib;
|
||||
import org.bukkitcontrib.player.ContribCraftPlayer;
|
||||
import org.bukkitcontrib.player.ContribPlayer;
|
||||
import org.bukkitcontrib.sound.SoundEffect;
|
||||
import org.bukkitcontrib.sound.SoundManager;
|
||||
|
||||
import com.gmail.nossr50.Users;
|
||||
import com.gmail.nossr50.m;
|
||||
import com.gmail.nossr50.datatypes.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.SkillType;
|
||||
|
||||
public class contribStuff
|
||||
{
|
||||
public static void playSoundForPlayer(SoundEffect effect, Player player, Location location)
|
||||
{
|
||||
//Contrib stuff
|
||||
ContribPlayer cPlayer = ContribCraftPlayer.getContribPlayer(player);
|
||||
if(cPlayer.isBukkitContribEnabled())
|
||||
{
|
||||
SoundManager SM = BukkitContrib.getSoundManager();
|
||||
SM.playSoundEffect(cPlayer, effect, location);
|
||||
}
|
||||
}
|
||||
public static void levelUpNotification(SkillType skillType, ContribPlayer cPlayer)
|
||||
{
|
||||
PlayerProfile PP = Users.getProfile(cPlayer);
|
||||
|
||||
Material mat = null;
|
||||
switch(skillType)
|
||||
{
|
||||
case SORCERY:
|
||||
mat = Material.PORTAL;
|
||||
break;
|
||||
case TAMING:
|
||||
switch(getNotificationTier(PP.getSkillLevel(skillType)))
|
||||
{
|
||||
case 1:
|
||||
mat = Material.PORK;
|
||||
break;
|
||||
case 2:
|
||||
mat = Material.PORK;
|
||||
break;
|
||||
case 3:
|
||||
mat = Material.GRILLED_PORK;
|
||||
break;
|
||||
case 4:
|
||||
mat = Material.GRILLED_PORK;
|
||||
break;
|
||||
case 5:
|
||||
mat = Material.BONE;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case MINING:
|
||||
switch(getNotificationTier(PP.getSkillLevel(skillType)))
|
||||
{
|
||||
case 1:
|
||||
mat = Material.COAL_ORE;
|
||||
break;
|
||||
case 2:
|
||||
mat = Material.IRON_ORE;
|
||||
break;
|
||||
case 3:
|
||||
mat = Material.GOLD_ORE;
|
||||
break;
|
||||
case 4:
|
||||
mat = Material.LAPIS_ORE;
|
||||
break;
|
||||
case 5:
|
||||
mat = Material.DIAMOND_ORE;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case WOODCUTTING:
|
||||
switch(getNotificationTier(PP.getSkillLevel(skillType)))
|
||||
{
|
||||
case 1:
|
||||
mat = Material.WOOD;
|
||||
break;
|
||||
case 2:
|
||||
mat = Material.WOOD;
|
||||
break;
|
||||
case 3:
|
||||
mat = Material.WOOD;
|
||||
break;
|
||||
case 4:
|
||||
mat = Material.LOG;
|
||||
break;
|
||||
case 5:
|
||||
mat = Material.LOG;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case REPAIR:
|
||||
switch(getNotificationTier(PP.getSkillLevel(skillType)))
|
||||
{
|
||||
case 1:
|
||||
mat = Material.COBBLESTONE;
|
||||
break;
|
||||
case 2:
|
||||
mat = Material.IRON_BLOCK;
|
||||
break;
|
||||
case 3:
|
||||
mat = Material.GOLD_BLOCK;
|
||||
break;
|
||||
case 4:
|
||||
mat = Material.LAPIS_BLOCK;
|
||||
break;
|
||||
case 5:
|
||||
mat = Material.DIAMOND_BLOCK;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case HERBALISM:
|
||||
switch(getNotificationTier(PP.getSkillLevel(skillType)))
|
||||
{
|
||||
case 1:
|
||||
mat = Material.YELLOW_FLOWER;
|
||||
break;
|
||||
case 2:
|
||||
mat = Material.RED_ROSE;
|
||||
break;
|
||||
case 3:
|
||||
mat = Material.BROWN_MUSHROOM;
|
||||
break;
|
||||
case 4:
|
||||
mat = Material.RED_MUSHROOM;
|
||||
break;
|
||||
case 5:
|
||||
mat = Material.PUMPKIN;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case ACROBATICS:
|
||||
switch(getNotificationTier(PP.getSkillLevel(skillType)))
|
||||
{
|
||||
case 1:
|
||||
mat = Material.LEATHER_BOOTS;
|
||||
break;
|
||||
case 2:
|
||||
mat = Material.CHAINMAIL_BOOTS;
|
||||
break;
|
||||
case 3:
|
||||
mat = Material.IRON_BOOTS;
|
||||
break;
|
||||
case 4:
|
||||
mat = Material.GOLD_BOOTS;
|
||||
break;
|
||||
case 5:
|
||||
mat = Material.DIAMOND_BOOTS;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SWORDS:
|
||||
switch(getNotificationTier(PP.getSkillLevel(skillType)))
|
||||
{
|
||||
case 1:
|
||||
mat = Material.WOOD_SWORD;
|
||||
break;
|
||||
case 2:
|
||||
mat = Material.STONE_SWORD;
|
||||
break;
|
||||
case 3:
|
||||
mat = Material.IRON_SWORD;
|
||||
break;
|
||||
case 4:
|
||||
mat = Material.GOLD_SWORD;
|
||||
break;
|
||||
case 5:
|
||||
mat = Material.DIAMOND_SWORD;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case ARCHERY:
|
||||
mat = Material.ARROW;
|
||||
break;
|
||||
case UNARMED:
|
||||
switch(getNotificationTier(PP.getSkillLevel(skillType)))
|
||||
{
|
||||
case 1:
|
||||
mat = Material.LEATHER_HELMET;
|
||||
break;
|
||||
case 2:
|
||||
mat = Material.CHAINMAIL_HELMET;
|
||||
break;
|
||||
case 3:
|
||||
mat = Material.IRON_HELMET;
|
||||
break;
|
||||
case 4:
|
||||
mat = Material.GOLD_HELMET;
|
||||
break;
|
||||
case 5:
|
||||
mat = Material.DIAMOND_HELMET;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case EXCAVATION:
|
||||
switch(getNotificationTier(PP.getSkillLevel(skillType)))
|
||||
{
|
||||
case 1:
|
||||
mat = Material.WOOD_SPADE;
|
||||
break;
|
||||
case 2:
|
||||
mat = Material.STONE_SPADE;
|
||||
break;
|
||||
case 3:
|
||||
mat = Material.IRON_SPADE;
|
||||
break;
|
||||
case 4:
|
||||
mat = Material.GOLD_SPADE;
|
||||
break;
|
||||
case 5:
|
||||
mat = Material.DIAMOND_SPADE;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case AXES:
|
||||
switch(getNotificationTier(PP.getSkillLevel(skillType)))
|
||||
{
|
||||
case 1:
|
||||
mat = Material.WOOD_AXE;
|
||||
break;
|
||||
case 2:
|
||||
mat = Material.STONE_AXE;
|
||||
break;
|
||||
case 3:
|
||||
mat = Material.IRON_AXE;
|
||||
break;
|
||||
case 4:
|
||||
mat = Material.GOLD_AXE;
|
||||
break;
|
||||
case 5:
|
||||
mat = Material.DIAMOND_AXE;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
mat = Material.WATCH;
|
||||
break;
|
||||
}
|
||||
cPlayer.sendNotification(ChatColor.GREEN+"Level Up!", ChatColor.YELLOW+m.getCapitalized(skillType.toString())+ChatColor.DARK_AQUA+" ("+ChatColor.GREEN+PP.getSkillLevel(skillType)+ChatColor.DARK_AQUA+")", mat);
|
||||
}
|
||||
|
||||
public static Integer getNotificationTier(Integer level)
|
||||
{
|
||||
if(level < 200)
|
||||
return 1;
|
||||
else if (level >= 200 && level < 400)
|
||||
return 2;
|
||||
else if (level >= 400 && level < 600)
|
||||
return 3;
|
||||
else if (level >= 600 && level < 800)
|
||||
return 4;
|
||||
else
|
||||
return 5;
|
||||
}
|
||||
}
|
@ -5,6 +5,7 @@ import com.gmail.nossr50.m;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.mcPermissions;
|
||||
import com.gmail.nossr50.config.LoadProperties;
|
||||
import com.gmail.nossr50.contrib.contribStuff;
|
||||
import com.gmail.nossr50.datatypes.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.SkillType;
|
||||
|
||||
@ -18,6 +19,7 @@ import org.bukkit.event.block.BlockFromToEvent;
|
||||
import org.bukkit.event.block.BlockListener;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkitcontrib.sound.SoundEffect;
|
||||
|
||||
import com.gmail.nossr50.locale.mcLocale;
|
||||
import com.gmail.nossr50.skills.*;
|
||||
@ -91,9 +93,18 @@ public class mcBlockListener extends BlockListener {
|
||||
if(LoadProperties.miningrequirespickaxe)
|
||||
{
|
||||
if(m.isMiningPick(inhand))
|
||||
Mining.miningBlockCheck(player, block, plugin);
|
||||
} else {
|
||||
Mining.miningBlockCheck(player, block, plugin);
|
||||
{
|
||||
if(PP.getSkillLevel(SkillType.MINING) >= 500)
|
||||
Mining.miningBlockCheck(false, player, block, plugin);
|
||||
else
|
||||
Mining.miningBlockCheck(true, player, block, plugin);
|
||||
}
|
||||
} else
|
||||
{
|
||||
if(PP.getSkillLevel(SkillType.MINING) >= 500)
|
||||
Mining.miningBlockCheck(false, player, block, plugin);
|
||||
else
|
||||
Mining.miningBlockCheck(true, player, block, plugin);
|
||||
}
|
||||
}
|
||||
/*
|
||||
@ -144,8 +155,9 @@ public class mcBlockListener extends BlockListener {
|
||||
if(mcPermissions.getInstance().woodCuttingAbility(player)
|
||||
&& PP.getTreeFellerMode()
|
||||
&& block.getTypeId() == 17
|
||||
&& m.blockBreakSimulate(block, player, plugin)){
|
||||
|
||||
&& m.blockBreakSimulate(block, player, plugin))
|
||||
{
|
||||
contribStuff.playSoundForPlayer(SoundEffect.EXPLODE, player, block.getLocation());
|
||||
WoodCutting.treeFeller(block, player, plugin);
|
||||
for(Block blockx : plugin.misc.treeFeller)
|
||||
{
|
||||
@ -187,7 +199,7 @@ public class mcBlockListener extends BlockListener {
|
||||
* EXCAVATION
|
||||
*/
|
||||
if(mcPermissions.getInstance().excavation(player) && block.getData() != (byte) 5)
|
||||
Excavation.excavationProcCheck(block, player);
|
||||
Excavation.excavationProcCheck(block.getTypeId(), block.getLocation(), player);
|
||||
/*
|
||||
* HERBALISM
|
||||
*/
|
||||
@ -237,6 +249,39 @@ public class mcBlockListener extends BlockListener {
|
||||
if(PP.getFistsPreparationMode() && (Excavation.canBeGigaDrillBroken(block) || block.getTypeId() == 78))
|
||||
Unarmed.berserkActivationCheck(player, plugin);
|
||||
|
||||
|
||||
if(mcPermissions.getInstance().mining(player) && Mining.canBeSuperBroken(block) &&
|
||||
m.blockBreakSimulate(block, player, plugin) && PP.getSkillLevel(SkillType.MINING) >= 250 && block.getType() != Material.STONE)
|
||||
{
|
||||
contribStuff.playSoundForPlayer(SoundEffect.FIZZ, player, block.getLocation());
|
||||
if(PP.getSkillLevel(SkillType.MINING) >= 500)
|
||||
{
|
||||
if(Math.random() * 100 > 99)
|
||||
{
|
||||
Mining.blockProcSmeltSimulate(block);
|
||||
Mining.miningBlockCheck(true, player, block, plugin); //PROC
|
||||
block.setType(Material.AIR);
|
||||
contribStuff.playSoundForPlayer(SoundEffect.POP, player, block.getLocation());
|
||||
}
|
||||
|
||||
} else
|
||||
{
|
||||
if(Math.random() * 100 > 97)
|
||||
{
|
||||
Mining.blockProcSmeltSimulate(block);
|
||||
Mining.miningBlockCheck(true, player, block, plugin); //PROC
|
||||
block.setType(Material.AIR);
|
||||
contribStuff.playSoundForPlayer(SoundEffect.POP, player, block.getLocation());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* TREE FELLAN STUFF
|
||||
*/
|
||||
if(block.getTypeId() == 17 && Users.getProfile(player).getTreeFellerMode())
|
||||
contribStuff.playSoundForPlayer(SoundEffect.FIZZ, player, block.getLocation());
|
||||
|
||||
/*
|
||||
* GREEN TERRA STUFF
|
||||
*/
|
||||
@ -247,14 +292,18 @@ public class mcBlockListener extends BlockListener {
|
||||
/*
|
||||
* GIGA DRILL BREAKER CHECKS
|
||||
*/
|
||||
if(PP.getGigaDrillBreakerMode() && m.blockBreakSimulate(block, player, plugin) && Excavation.canBeGigaDrillBroken(block) && m.isShovel(inhand)){
|
||||
if(PP.getGigaDrillBreakerMode() && m.blockBreakSimulate(block, player, plugin)
|
||||
&& Excavation.canBeGigaDrillBroken(block) && m.isShovel(inhand)
|
||||
&& block.getData() != (byte) 5){
|
||||
|
||||
int x = 1;
|
||||
|
||||
while(x < 4)
|
||||
{
|
||||
Excavation.excavationProcCheck(block.getTypeId(), block.getLocation(), player);
|
||||
x++;
|
||||
}
|
||||
|
||||
if(m.getTier(player) >= 2)
|
||||
Excavation.excavationProcCheck(block, player);
|
||||
if(m.getTier(player) >= 3)
|
||||
Excavation.excavationProcCheck(block, player);
|
||||
if(m.getTier(player) >= 4)
|
||||
Excavation.excavationProcCheck(block, player);
|
||||
Material mat = Material.getMaterial(block.getTypeId());
|
||||
if(block.getTypeId() == 2)
|
||||
mat = Material.DIRT;
|
||||
@ -265,6 +314,9 @@ public class mcBlockListener extends BlockListener {
|
||||
if(LoadProperties.toolsLoseDurabilityFromAbilities)
|
||||
m.damageTool(player, (short) LoadProperties.abilityDurabilityLoss);
|
||||
block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
|
||||
|
||||
//Contrib stuff
|
||||
contribStuff.playSoundForPlayer(SoundEffect.POP, player, block.getLocation());
|
||||
}
|
||||
/*
|
||||
* BERSERK MODE CHECKS
|
||||
@ -283,6 +335,8 @@ public class mcBlockListener extends BlockListener {
|
||||
player.incrementStatistic(Statistic.MINE_BLOCK, event.getBlock().getType());
|
||||
block.setType(Material.AIR);
|
||||
block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
|
||||
|
||||
contribStuff.playSoundForPlayer(SoundEffect.POP, player, block.getLocation());
|
||||
}
|
||||
|
||||
/*
|
||||
@ -315,6 +369,7 @@ public class mcBlockListener extends BlockListener {
|
||||
}
|
||||
block.setType(Material.AIR);
|
||||
player.incrementStatistic(Statistic.MINE_BLOCK, event.getBlock().getType());
|
||||
contribStuff.playSoundForPlayer(SoundEffect.POP, player, block.getLocation());
|
||||
}
|
||||
if(block.getType() == Material.AIR && plugin.misc.blockWatchList.contains(block))
|
||||
{
|
||||
|
@ -14,6 +14,7 @@ import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerListener;
|
||||
import org.bukkit.event.player.PlayerLoginEvent;
|
||||
import org.bukkit.event.player.PlayerPickupItemEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -44,6 +45,14 @@ public class mcPlayerListener extends PlayerListener
|
||||
plugin = instance;
|
||||
}
|
||||
|
||||
public void onPlayerPickupItem(PlayerPickupItemEvent event)
|
||||
{
|
||||
if(Users.getProfile(event.getPlayer()).getBerserkMode())
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void onPlayerRespawn(PlayerRespawnEvent event)
|
||||
{
|
||||
@ -78,7 +87,7 @@ public class mcPlayerListener extends PlayerListener
|
||||
* GARBAGE COLLECTION
|
||||
*/
|
||||
|
||||
//Discard the PlayerProfile object from players array in the Users object stored for this player as it is no longer needed
|
||||
//Discard the PlayerProfile object
|
||||
Users.removeUser(event.getPlayer());
|
||||
}
|
||||
|
||||
|
@ -27,6 +27,15 @@ public class m
|
||||
*/
|
||||
|
||||
//The lazy way to default to 0
|
||||
|
||||
public static String getCapitalized(String target)
|
||||
{
|
||||
String firstLetter = target.substring(0,1);
|
||||
String remainder = target.substring(1);
|
||||
String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase();
|
||||
|
||||
return capitalized;
|
||||
}
|
||||
public static int getInt(String string)
|
||||
{
|
||||
if(isInt(string))
|
||||
|
@ -90,6 +90,7 @@ public class mcMMO extends JavaPlugin
|
||||
pm.registerEvent(Event.Type.PLAYER_CHAT, playerListener, Priority.Lowest, this);
|
||||
pm.registerEvent(Event.Type.PLAYER_INTERACT, playerListener, Priority.Monitor, this);
|
||||
pm.registerEvent(Event.Type.PLAYER_RESPAWN, playerListener, Priority.Normal, this);
|
||||
pm.registerEvent(Event.Type.PLAYER_PICKUP_ITEM, playerListener, Priority.Normal, this);
|
||||
|
||||
//Block Stuff
|
||||
pm.registerEvent(Event.Type.BLOCK_DAMAGE, blockListener, Priority.Highest, this);
|
||||
@ -1133,18 +1134,23 @@ public class mcMMO extends JavaPlugin
|
||||
//Invite Command
|
||||
if(LoadProperties.inviteEnable && mcPermissions.getInstance().party(player) && split[0].equalsIgnoreCase(LoadProperties.invite)){
|
||||
|
||||
if(!PP.inParty()){
|
||||
if(!PP.inParty())
|
||||
{
|
||||
player.sendMessage(mcLocale.getString("mcPlayerListener.NotInParty"));
|
||||
return true;
|
||||
}
|
||||
if(split.length < 2){
|
||||
if(split.length < 2)
|
||||
{
|
||||
player.sendMessage(ChatColor.RED+"Usage is /"+LoadProperties.invite+" <playername>");
|
||||
return true;
|
||||
}
|
||||
if(PP.inParty() && split.length >= 2 && isPlayer(split[1])){
|
||||
if(PP.inParty() && split.length >= 2 && isPlayer(split[1]))
|
||||
{
|
||||
Player target = getPlayer(split[1]);
|
||||
PlayerProfile PPt = Users.getProfile(target);
|
||||
PPt.modifyInvite(PP.getParty());
|
||||
|
||||
|
||||
player.sendMessage(mcLocale.getString("mcPlayerListener.InviteSuccess"));
|
||||
//target.sendMessage(ChatColor.RED+"ALERT: "+ChatColor.GREEN+"You have received a party invite for "+PPt.getInvite()+" from "+player.getName());
|
||||
target.sendMessage(mcLocale.getString("mcPlayerListener.ReceivedInvite1", new Object[] {PPt.getInvite(), player.getName()}));
|
||||
|
@ -63,16 +63,12 @@ public class Excavation
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public static void excavationProcCheck(Block block, Player player)
|
||||
public static void excavationProcCheck(int type, Location loc, Player player)
|
||||
{
|
||||
PlayerProfile PP = Users.getProfile(player);
|
||||
int type = block.getTypeId();
|
||||
Location loc = block.getLocation();
|
||||
ItemStack is = null;
|
||||
Material mat = null;
|
||||
if(block.getData() == (byte) 5){
|
||||
return;
|
||||
}
|
||||
|
||||
if(type == 2)
|
||||
{
|
||||
if(PP.getSkillLevel(SkillType.EXCAVATION) >= 250)
|
||||
|
@ -7,11 +7,13 @@ import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkitcontrib.sound.SoundEffect;
|
||||
|
||||
import com.gmail.nossr50.Users;
|
||||
import com.gmail.nossr50.m;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.config.LoadProperties;
|
||||
import com.gmail.nossr50.contrib.contribStuff;
|
||||
import com.gmail.nossr50.datatypes.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.SkillType;
|
||||
import com.gmail.nossr50.locale.mcLocale;
|
||||
@ -58,9 +60,77 @@ public class Mining {
|
||||
Material mat = Material.getMaterial(block.getTypeId());
|
||||
byte damage = 0;
|
||||
ItemStack item = new ItemStack(mat, 1, (byte)0, damage);
|
||||
if(block.getTypeId() != 89 && block.getTypeId() != 73 && block.getTypeId() != 74 && block.getTypeId() != 56 && block.getTypeId() != 21 && block.getTypeId() != 1 && block.getTypeId() != 16)
|
||||
if(block.getTypeId() != 89 && block.getTypeId() != 73 && block.getTypeId() != 74 && block.getTypeId() != 56
|
||||
&& block.getTypeId() != 21 && block.getTypeId() != 1 && block.getTypeId() != 16)
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
if(block.getTypeId() == 89){
|
||||
if(block.getTypeId() == 89)
|
||||
{
|
||||
mat = Material.getMaterial(348);
|
||||
item = new ItemStack(mat, 1, (byte)0, damage);
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
}
|
||||
if(block.getTypeId() == 73 || block.getTypeId() == 74)
|
||||
{
|
||||
mat = Material.getMaterial(331);
|
||||
item = new ItemStack(mat, 1, (byte)0, damage);
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
if(Math.random() * 10 > 5){
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
}
|
||||
}
|
||||
if(block.getTypeId() == 21)
|
||||
{
|
||||
mat = Material.getMaterial(351);
|
||||
item = new ItemStack(mat, 1, (byte)0,(byte)0x4);
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
}
|
||||
if(block.getTypeId() == 56)
|
||||
{
|
||||
mat = Material.getMaterial(264);
|
||||
item = new ItemStack(mat, 1, (byte)0, damage);
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
}
|
||||
if(block.getTypeId() == 1)
|
||||
{
|
||||
mat = Material.getMaterial(4);
|
||||
item = new ItemStack(mat, 1, (byte)0, damage);
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
}
|
||||
if(block.getTypeId() == 16)
|
||||
{
|
||||
mat = Material.getMaterial(263);
|
||||
item = new ItemStack(mat, 1, (byte)0, damage);
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
}
|
||||
}
|
||||
public static void blockProcSmeltSimulate(Block block)
|
||||
{
|
||||
Location loc = block.getLocation();
|
||||
Material mat = Material.getMaterial(block.getTypeId());
|
||||
byte damage = 0;
|
||||
ItemStack item = new ItemStack(mat, 1, (byte)0, damage);
|
||||
if(block.getTypeId() != 14 && block.getTypeId() != 15 && block.getTypeId() != 89 && block.getTypeId() != 73 && block.getTypeId() != 74
|
||||
&& block.getTypeId() != 56 && block.getTypeId() != 21 && block.getTypeId() != 1 && block.getTypeId() != 16)
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
if(block.getTypeId() == 14)
|
||||
{
|
||||
mat = Material.getMaterial(266);
|
||||
item = new ItemStack(mat, 1, (byte)0, damage);
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
}
|
||||
if(block.getTypeId() == 15)
|
||||
{
|
||||
mat = Material.getMaterial(265);
|
||||
item = new ItemStack(mat, 1, (byte)0, damage);
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
}
|
||||
if(block.getTypeId() == 89)
|
||||
{
|
||||
mat = Material.getMaterial(348);
|
||||
item = new ItemStack(mat, 1, (byte)0, damage);
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
@ -102,14 +172,28 @@ public class Mining {
|
||||
public static void blockProcCheck(Block block, Player player)
|
||||
{
|
||||
PlayerProfile PP = Users.getProfile(player);
|
||||
if(player != null){
|
||||
if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.MINING)){
|
||||
if(player != null)
|
||||
{
|
||||
if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.MINING))
|
||||
{
|
||||
blockProcSimulate(block);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
public static void miningBlockCheck(Player player, Block block, mcMMO plugin)
|
||||
public static void blockProcSmeltCheck(Block block, Player player)
|
||||
{
|
||||
PlayerProfile PP = Users.getProfile(player);
|
||||
if(player != null)
|
||||
{
|
||||
if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.MINING))
|
||||
{
|
||||
blockProcSmeltSimulate(block);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
public static void miningBlockCheck(Boolean smelt, Player player, Block block, mcMMO plugin)
|
||||
{
|
||||
PlayerProfile PP = Users.getProfile(player);
|
||||
if(plugin.misc.blockWatchList.contains(block) || block.getData() == (byte) 5)
|
||||
@ -117,52 +201,90 @@ public class Mining {
|
||||
int xp = 0;
|
||||
if(block.getTypeId() == 1 || block.getTypeId() == 24){
|
||||
xp += LoadProperties.mstone;
|
||||
if(smelt = false)
|
||||
blockProcCheck(block, player);
|
||||
else
|
||||
blockProcSmeltCheck(block, player);
|
||||
}
|
||||
//OBSIDIAN
|
||||
if(block.getTypeId() == 49){
|
||||
if(block.getTypeId() == 49)
|
||||
{
|
||||
xp += LoadProperties.mobsidian;
|
||||
if(smelt = false)
|
||||
blockProcCheck(block, player);
|
||||
else
|
||||
blockProcSmeltCheck(block, player);
|
||||
}
|
||||
//NETHERRACK
|
||||
if(block.getTypeId() == 87){
|
||||
if(block.getTypeId() == 87)
|
||||
{
|
||||
xp += LoadProperties.mnetherrack;
|
||||
if(smelt = false)
|
||||
blockProcCheck(block, player);
|
||||
else
|
||||
blockProcSmeltCheck(block, player);
|
||||
}
|
||||
//GLOWSTONE
|
||||
if(block.getTypeId() == 89){
|
||||
if(block.getTypeId() == 89)
|
||||
{
|
||||
xp += LoadProperties.mglowstone;
|
||||
if(smelt = false)
|
||||
blockProcCheck(block, player);
|
||||
else
|
||||
blockProcSmeltCheck(block, player);
|
||||
}
|
||||
//COAL
|
||||
if(block.getTypeId() == 16){
|
||||
if(block.getTypeId() == 16)
|
||||
{
|
||||
xp += LoadProperties.mcoal;
|
||||
if(smelt = false)
|
||||
blockProcCheck(block, player);
|
||||
else
|
||||
blockProcSmeltCheck(block, player);
|
||||
}
|
||||
//GOLD
|
||||
if(block.getTypeId() == 14){
|
||||
if(block.getTypeId() == 14)
|
||||
{
|
||||
xp += LoadProperties.mgold;
|
||||
if(smelt = false)
|
||||
blockProcCheck(block, player);
|
||||
else
|
||||
blockProcSmeltCheck(block, player);
|
||||
}
|
||||
//DIAMOND
|
||||
if(block.getTypeId() == 56){
|
||||
xp += LoadProperties.mdiamond;
|
||||
if(smelt = false)
|
||||
blockProcCheck(block, player);
|
||||
else
|
||||
blockProcSmeltCheck(block, player);
|
||||
}
|
||||
//IRON
|
||||
if(block.getTypeId() == 15){
|
||||
if(block.getTypeId() == 15)
|
||||
{
|
||||
xp += LoadProperties.miron;
|
||||
if(smelt = false)
|
||||
blockProcCheck(block, player);
|
||||
else
|
||||
blockProcSmeltCheck(block, player);
|
||||
}
|
||||
//REDSTONE
|
||||
if(block.getTypeId() == 73 || block.getTypeId() == 74){
|
||||
if(block.getTypeId() == 73 || block.getTypeId() == 74)
|
||||
{
|
||||
xp += LoadProperties.mredstone;
|
||||
if(smelt = false)
|
||||
blockProcCheck(block, player);
|
||||
else
|
||||
blockProcSmeltCheck(block, player);
|
||||
}
|
||||
//LAPUS
|
||||
if(block.getTypeId() == 21){
|
||||
if(block.getTypeId() == 21)
|
||||
{
|
||||
xp += LoadProperties.mlapus;
|
||||
if(smelt = false)
|
||||
blockProcCheck(block, player);
|
||||
else
|
||||
blockProcSmeltCheck(block, player);
|
||||
}
|
||||
PP.addXP(SkillType.MINING, xp * LoadProperties.xpGainMultiplier);
|
||||
Skills.XpCheckSkill(SkillType.MINING, player);
|
||||
@ -351,6 +473,9 @@ public class Mining {
|
||||
}
|
||||
if(block.getData() != (byte) 5)
|
||||
PP.addXP(SkillType.MINING, xp * LoadProperties.xpGainMultiplier);
|
||||
|
||||
contribStuff.playSoundForPlayer(SoundEffect.POP, player, block.getLocation());
|
||||
|
||||
Skills.XpCheckSkill(SkillType.MINING, player);
|
||||
}
|
||||
}
|
||||
|
@ -6,12 +6,16 @@ import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkitcontrib.player.ContribCraftPlayer;
|
||||
import org.bukkitcontrib.player.ContribPlayer;
|
||||
|
||||
import com.gmail.nossr50.Leaderboard;
|
||||
import com.gmail.nossr50.Users;
|
||||
import com.gmail.nossr50.m;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.mcPermissions;
|
||||
import com.gmail.nossr50.config.LoadProperties;
|
||||
import com.gmail.nossr50.contrib.contribStuff;
|
||||
import com.gmail.nossr50.datatypes.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.PlayerStat;
|
||||
import com.gmail.nossr50.datatypes.SkillType;
|
||||
@ -55,22 +59,6 @@ public class Skills {
|
||||
return (int) (((deactivatedTimeStamp + (cooldown * 1000)) - System.currentTimeMillis())/1000);
|
||||
}
|
||||
|
||||
public static boolean isAllCooldownsOver(PlayerProfile PP)
|
||||
{
|
||||
long t = System.currentTimeMillis();
|
||||
if(t - PP.getGreenTerraDeactivatedTimeStamp() >= (LoadProperties.greenTerraCooldown * 1000) &&
|
||||
t - PP.getTreeFellerDeactivatedTimeStamp() >= (LoadProperties.treeFellerCooldown * 1000) &&
|
||||
t - PP.getSuperBreakerDeactivatedTimeStamp() >= (LoadProperties.superBreakerCooldown * 1000) &&
|
||||
t - PP.getSerratedStrikesDeactivatedTimeStamp() >= (LoadProperties.serratedStrikeCooldown * 1000) &&
|
||||
t - PP.getBerserkDeactivatedTimeStamp() >= (LoadProperties.berserkCooldown * 1000) &&
|
||||
t - PP.getSkullSplitterDeactivatedTimeStamp() >= (LoadProperties.skullSplitterCooldown * 1000) &&
|
||||
t - PP.getGigaDrillBreakerDeactivatedTimeStamp() >= (LoadProperties.gigaDrillBreakerCooldown * 1000))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
public static void watchCooldowns(Player player){
|
||||
PlayerProfile PP = Users.getProfile(player);
|
||||
if(!PP.getGreenTerraInformed() && System.currentTimeMillis() - PP.getGreenTerraDeactivatedTimeStamp() >= (LoadProperties.greenTerraCooldown * 1000)){
|
||||
@ -216,13 +204,17 @@ public class Skills {
|
||||
}
|
||||
}
|
||||
}
|
||||
public static void abilityActivationCheck(Player player){
|
||||
public static void abilityActivationCheck(Player player)
|
||||
{
|
||||
PlayerProfile PP = Users.getProfile(player);
|
||||
if(PP != null){
|
||||
if(PP != null)
|
||||
{
|
||||
if(!PP.getAbilityUse())
|
||||
return;
|
||||
if(mcPermissions.getInstance().miningAbility(player) && m.isMiningPick(player.getItemInHand()) && !PP.getPickaxePreparationMode()){
|
||||
if(!PP.getSuperBreakerMode() && !cooldownOver(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown)){
|
||||
if(mcPermissions.getInstance().miningAbility(player) && m.isMiningPick(player.getItemInHand()) && !PP.getPickaxePreparationMode())
|
||||
{
|
||||
if(!PP.getSuperBreakerMode() && !cooldownOver(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown))
|
||||
{
|
||||
player.sendMessage(mcLocale.getString("Skills.TooTired")
|
||||
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown)+"s)");
|
||||
return;
|
||||
@ -231,8 +223,10 @@ public class Skills {
|
||||
PP.setPickaxePreparationATS(System.currentTimeMillis());
|
||||
PP.setPickaxePreparationMode(true);
|
||||
}
|
||||
if(mcPermissions.getInstance().excavationAbility(player) && m.isShovel(player.getItemInHand()) && !PP.getShovelPreparationMode()){
|
||||
if(!PP.getGigaDrillBreakerMode() && !cooldownOver(player, PP.getGigaDrillBreakerDeactivatedTimeStamp(), LoadProperties.gigaDrillBreakerCooldown)){
|
||||
if(mcPermissions.getInstance().excavationAbility(player) && m.isShovel(player.getItemInHand()) && !PP.getShovelPreparationMode())
|
||||
{
|
||||
if(!PP.getGigaDrillBreakerMode() && !cooldownOver(player, PP.getGigaDrillBreakerDeactivatedTimeStamp(), LoadProperties.gigaDrillBreakerCooldown))
|
||||
{
|
||||
player.sendMessage(mcLocale.getString("Skills.TooTired")
|
||||
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getGigaDrillBreakerDeactivatedTimeStamp(), LoadProperties.gigaDrillBreakerCooldown)+"s)");
|
||||
return;
|
||||
@ -241,8 +235,10 @@ public class Skills {
|
||||
PP.setShovelPreparationATS(System.currentTimeMillis());
|
||||
PP.setShovelPreparationMode(true);
|
||||
}
|
||||
if(mcPermissions.getInstance().swordsAbility(player) && m.isSwords(player.getItemInHand()) && !PP.getSwordsPreparationMode()){
|
||||
if(!PP.getSerratedStrikesMode() && !cooldownOver(player, PP.getSerratedStrikesDeactivatedTimeStamp(), LoadProperties.serratedStrikeCooldown)){
|
||||
if(mcPermissions.getInstance().swordsAbility(player) && m.isSwords(player.getItemInHand()) && !PP.getSwordsPreparationMode())
|
||||
{
|
||||
if(!PP.getSerratedStrikesMode() && !cooldownOver(player, PP.getSerratedStrikesDeactivatedTimeStamp(), LoadProperties.serratedStrikeCooldown))
|
||||
{
|
||||
player.sendMessage(mcLocale.getString("Skills.TooTired")
|
||||
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getSerratedStrikesDeactivatedTimeStamp(), LoadProperties.serratedStrikeCooldown)+"s)");
|
||||
return;
|
||||
@ -251,8 +247,10 @@ public class Skills {
|
||||
PP.setSwordsPreparationATS(System.currentTimeMillis());
|
||||
PP.setSwordsPreparationMode(true);
|
||||
}
|
||||
if(mcPermissions.getInstance().unarmedAbility(player) && player.getItemInHand().getTypeId() == 0 && !PP.getFistsPreparationMode()){
|
||||
if(!PP.getBerserkMode() && !cooldownOver(player, PP.getBerserkDeactivatedTimeStamp(), LoadProperties.berserkCooldown)){
|
||||
if(mcPermissions.getInstance().unarmedAbility(player) && player.getItemInHand().getTypeId() == 0 && !PP.getFistsPreparationMode())
|
||||
{
|
||||
if(!PP.getBerserkMode() && !cooldownOver(player, PP.getBerserkDeactivatedTimeStamp(), LoadProperties.berserkCooldown))
|
||||
{
|
||||
player.sendMessage(mcLocale.getString("Skills.TooTired")
|
||||
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getBerserkDeactivatedTimeStamp(), LoadProperties.berserkCooldown)+"s)");
|
||||
return;
|
||||
@ -261,8 +259,10 @@ public class Skills {
|
||||
PP.setFistsPreparationATS(System.currentTimeMillis());
|
||||
PP.setFistsPreparationMode(true);
|
||||
}
|
||||
if((mcPermissions.getInstance().axes(player) || mcPermissions.getInstance().woodcutting(player)) && !PP.getAxePreparationMode()){
|
||||
if(m.isAxes(player.getItemInHand())){
|
||||
if((mcPermissions.getInstance().axes(player) || mcPermissions.getInstance().woodcutting(player)) && !PP.getAxePreparationMode())
|
||||
{
|
||||
if(m.isAxes(player.getItemInHand()))
|
||||
{
|
||||
player.sendMessage(mcLocale.getString("Skills.ReadyAxe"));
|
||||
PP.setAxePreparationATS(System.currentTimeMillis());
|
||||
PP.setAxePreparationMode(true);
|
||||
@ -276,7 +276,10 @@ public class Skills {
|
||||
PlayerProfile PP = Users.getProfile(player);
|
||||
|
||||
PlayerStat ps = new PlayerStat();
|
||||
if(skillType != SkillType.ALL)
|
||||
ps.statVal = PP.getSkillLevel(skillType);
|
||||
else
|
||||
ps.statVal = m.getPowerLevel(player);
|
||||
ps.name = player.getName();
|
||||
Leaderboard.updateLeaderboard(ps, skillType);
|
||||
}
|
||||
@ -297,15 +300,24 @@ public class Skills {
|
||||
}
|
||||
|
||||
if(!LoadProperties.useMySQL)
|
||||
{
|
||||
ProcessLeaderboardUpdate(skillType, player);
|
||||
ProcessLeaderboardUpdate(SkillType.ALL, player);
|
||||
}
|
||||
|
||||
String firstLetter = skillType.toString().substring(0,1);
|
||||
String remainder = skillType.toString().substring(1);
|
||||
String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase();
|
||||
String capitalized = m.getCapitalized(skillType.toString());
|
||||
|
||||
//Contrib stuff
|
||||
|
||||
ContribPlayer cPlayer = ContribCraftPlayer.getContribPlayer(player);
|
||||
if(cPlayer.isBukkitContribEnabled())
|
||||
{
|
||||
contribStuff.levelUpNotification(skillType, cPlayer);
|
||||
} else {
|
||||
player.sendMessage(mcLocale.getString("Skills."+capitalized+"Up", new Object[] {String.valueOf(skillups), PP.getSkillLevel(skillType)}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void XpCheckAll(Player player)
|
||||
{
|
||||
@ -328,50 +340,14 @@ public class Skills {
|
||||
return null;
|
||||
}
|
||||
public static boolean isSkill(String skillname){
|
||||
skillname = skillname.toLowerCase();
|
||||
if(skillname.equals("all")){
|
||||
skillname = skillname.toUpperCase();
|
||||
for(SkillType x : SkillType.values())
|
||||
{
|
||||
if(x.toString().equals(skillname))
|
||||
return true;
|
||||
}
|
||||
else if(skillname.equals("sorcery")){
|
||||
return true;
|
||||
}
|
||||
else if(skillname.equals("taming")){
|
||||
return true;
|
||||
}
|
||||
else if(skillname.equals("mining")){
|
||||
return true;
|
||||
}
|
||||
else if(skillname.equals("woodcutting")){
|
||||
return true;
|
||||
}
|
||||
else if(skillname.equals("excavation")){
|
||||
return true;
|
||||
}
|
||||
else if(skillname.equals("repair")){
|
||||
return true;
|
||||
}
|
||||
else if(skillname.equals("herbalism")){
|
||||
return true;
|
||||
}
|
||||
else if(skillname.equals("acrobatics")){
|
||||
return true;
|
||||
}
|
||||
else if(skillname.equals("swords")){
|
||||
return true;
|
||||
}
|
||||
else if(skillname.equals("archery")){
|
||||
return true;
|
||||
}
|
||||
else if(skillname.equals("unarmed")){
|
||||
return true;
|
||||
}
|
||||
else if(skillname.equals("axes")){
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public static void arrowRetrievalCheck(Entity entity, mcMMO plugin)
|
||||
{
|
||||
if(plugin.misc.arrowTracker.containsKey(entity))
|
||||
|
Loading…
Reference in New Issue
Block a user