mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-26 15:16:45 +01:00
Another WIP
This commit is contained in:
parent
b38dcbe785
commit
d1a7e5b661
@ -16,7 +16,9 @@ import org.bukkit.entity.Zombie;
|
|||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageByProjectileEvent;
|
import org.bukkit.event.entity.EntityDamageByProjectileEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent;
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
|
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.config.LoadProperties;
|
import com.gmail.nossr50.config.LoadProperties;
|
||||||
@ -26,17 +28,19 @@ import com.gmail.nossr50.skills.Acrobatics;
|
|||||||
import com.gmail.nossr50.skills.Axes;
|
import com.gmail.nossr50.skills.Axes;
|
||||||
import com.gmail.nossr50.skills.Skills;
|
import com.gmail.nossr50.skills.Skills;
|
||||||
import com.gmail.nossr50.skills.Swords;
|
import com.gmail.nossr50.skills.Swords;
|
||||||
|
import com.gmail.nossr50.skills.Taming;
|
||||||
|
import com.gmail.nossr50.skills.Unarmed;
|
||||||
|
|
||||||
public class Combat {
|
public class Combat {
|
||||||
private static mcMMO plugin;
|
private static mcMMO plugin;
|
||||||
public Combat(mcMMO instance) {
|
public Combat(mcMMO instance) {
|
||||||
plugin = instance;
|
plugin = instance;
|
||||||
}
|
}
|
||||||
public static void combatChecks(EntityDamageEvent event){
|
public static void combatChecks(EntityDamageEvent event, Plugin pluginx){
|
||||||
if(event.isCancelled() || event.getDamage() == 0)
|
if(event.isCancelled() || event.getDamage() == 0)
|
||||||
return;
|
return;
|
||||||
/*
|
/*
|
||||||
* OFFENSIVE CHECKS
|
* OFFENSIVE CHECKS FOR PLAYERS VERSUS ENTITIES
|
||||||
*/
|
*/
|
||||||
if(event instanceof EntityDamageByEntityEvent && ((EntityDamageByEntityEvent) event).getDamager() instanceof Player)
|
if(event instanceof EntityDamageByEntityEvent && ((EntityDamageByEntityEvent) event).getDamager() instanceof Player)
|
||||||
{
|
{
|
||||||
@ -45,27 +49,114 @@ public class Combat {
|
|||||||
Player attacker = (Player)((EntityDamageByEntityEvent) event).getDamager();
|
Player attacker = (Player)((EntityDamageByEntityEvent) event).getDamager();
|
||||||
PlayerProfile PPa = Users.getProfile(attacker);
|
PlayerProfile PPa = Users.getProfile(attacker);
|
||||||
|
|
||||||
|
//Damage modifiers
|
||||||
|
if(mcPermissions.getInstance().unarmed(attacker) && attacker.getItemInHand().getTypeId() == 0) //Unarmed
|
||||||
|
Unarmed.unarmedBonus(attacker, eventb);
|
||||||
|
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker) && PPa.getAxesInt() >= 500)
|
||||||
|
event.setDamage(event.getDamage()+4);
|
||||||
|
|
||||||
//If there are any abilities to activate
|
//If there are any abilities to activate
|
||||||
combatAbilityChecks(attacker, PPa);
|
combatAbilityChecks(attacker, PPa);
|
||||||
|
|
||||||
|
//Check for offensive procs
|
||||||
|
Axes.axeCriticalCheck(attacker, eventb); //Axe Criticals
|
||||||
|
if(!Config.getInstance().isBleedTracked(event.getEntity())) //Swords Bleed
|
||||||
|
Swords.bleedCheck(attacker, event.getEntity());
|
||||||
|
|
||||||
//Modify the event damage if Attacker is Berserk
|
//Modify the event damage if Attacker is Berserk
|
||||||
if(PPa.getBerserkMode())
|
if(PPa.getBerserkMode())
|
||||||
event.setDamage(event.getDamage() + (event.getDamage() / 2));
|
event.setDamage(event.getDamage() + (event.getDamage() / 2));
|
||||||
//Handle the combat interactions between the Player and the defending entity
|
|
||||||
if(event.getEntity() instanceof Player)
|
|
||||||
playerVersusPlayerChecks(eventb, attacker);
|
|
||||||
if(event.getEntity() instanceof Animals)
|
|
||||||
playerVersusAnimalsChecks(eventb, attacker);
|
|
||||||
if(event.getEntity() instanceof Monster)
|
|
||||||
playerVersusMonsterChecks(eventb, attacker);
|
|
||||||
if(event.getEntity() instanceof Squid)
|
|
||||||
playerVersusSquidChecks(eventb, attacker);
|
|
||||||
|
|
||||||
//Handle Ability Interactions
|
//Handle Ability Interactions
|
||||||
if(PPa.getSkullSplitterMode() && m.isAxes(attacker.getItemInHand()))
|
if(PPa.getSkullSplitterMode() && m.isAxes(attacker.getItemInHand()))
|
||||||
Axes.applyAoeDamage(attacker, eventb);
|
Axes.applyAoeDamage(attacker, eventb);
|
||||||
if(PPa.getSerratedStrikesMode() && m.isSwords(attacker.getItemInHand()))
|
if(PPa.getSerratedStrikesMode() && m.isSwords(attacker.getItemInHand()))
|
||||||
Swords.applySerratedStrikes(attacker, eventb);
|
Swords.applySerratedStrikes(attacker, eventb);
|
||||||
|
|
||||||
|
//Experience
|
||||||
|
if(event.getEntity() instanceof Player)
|
||||||
|
{
|
||||||
|
Player defender = (Player)event.getEntity();
|
||||||
|
PlayerProfile PPd = Users.getProfile(defender);
|
||||||
|
if(attacker != null && defender != null && LoadProperties.pvpxp)
|
||||||
|
{
|
||||||
|
if(System.currentTimeMillis() >= PPd.getRespawnATS() + 5000 && defender.getHealth() >= 1)
|
||||||
|
{
|
||||||
|
if(m.isAxes(attacker.getItemInHand()))
|
||||||
|
PPa.addAxesXP((event.getDamage() * 3) * LoadProperties.pvpxprewardmodifier);
|
||||||
|
if(m.isSwords(attacker.getItemInHand()))
|
||||||
|
PPa.addSwordsXP((event.getDamage() * 3) * LoadProperties.pvpxprewardmodifier);
|
||||||
|
if(attacker.getItemInHand().getTypeId() == 0)
|
||||||
|
PPa.addUnarmedXP((event.getDamage() * 3) * LoadProperties.pvpxprewardmodifier);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(event.getEntity() instanceof Monster)
|
||||||
|
{
|
||||||
|
int xp = 0;
|
||||||
|
if(event.getEntity() instanceof Creeper)
|
||||||
|
xp = (event.getDamage() * 4) * LoadProperties.xpGainMultiplier;
|
||||||
|
if(event.getEntity() instanceof Spider)
|
||||||
|
xp = (event.getDamage() * 3) * LoadProperties.xpGainMultiplier;
|
||||||
|
if(event.getEntity() instanceof Skeleton)
|
||||||
|
xp = (event.getDamage() * 2) * LoadProperties.xpGainMultiplier;
|
||||||
|
if(event.getEntity() instanceof Zombie)
|
||||||
|
xp = (event.getDamage() * 2) * LoadProperties.xpGainMultiplier;
|
||||||
|
if(event.getEntity() instanceof PigZombie)
|
||||||
|
xp = (event.getDamage() * 3) * LoadProperties.xpGainMultiplier;
|
||||||
|
|
||||||
|
if(m.isSwords(attacker.getItemInHand()) && mcPermissions.getInstance().swords(attacker))
|
||||||
|
PPa.addSwordsXP(xp);
|
||||||
|
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker))
|
||||||
|
PPa.addAxesXP(xp);
|
||||||
|
if(attacker.getItemInHand().getTypeId() == 0 && mcPermissions.getInstance().unarmed(attacker))
|
||||||
|
PPa.addUnarmedXP(xp);
|
||||||
|
}
|
||||||
|
Skills.XpCheck(attacker);
|
||||||
|
|
||||||
|
//Taming Debug Stuff
|
||||||
|
if(event.getEntity() instanceof Wolf)
|
||||||
|
{
|
||||||
|
attacker.sendMessage("mcMMO Debug: Wolf Owner Name "+Taming.getOwnerName(event.getEntity()));
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* OFFENSIVE CHECKS FOR WOLVES VERSUS ENTITIES
|
||||||
|
*/
|
||||||
|
if(event instanceof EntityDamageByEntityEvent && ((EntityDamageByEntityEvent) event).getDamager() instanceof Wolf){
|
||||||
|
EntityDamageByEntityEvent eventb = (EntityDamageByEntityEvent) event;
|
||||||
|
if(Taming.hasOwner(eventb.getDamager(), pluginx)){
|
||||||
|
Player master = Taming.getOwner(eventb.getDamager(), pluginx);
|
||||||
|
PlayerProfile PPo = Users.getProfile(master);
|
||||||
|
|
||||||
|
//Sharpened Claws
|
||||||
|
if(PPo.getTamingInt() >= 750)
|
||||||
|
{
|
||||||
|
event.setDamage(event.getDamage() + 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Gore
|
||||||
|
if(Math.random() * 1000 <= PPo.getTamingInt())
|
||||||
|
{
|
||||||
|
event.setDamage(event.getDamage() * 2);
|
||||||
|
|
||||||
|
if(event.getEntity() instanceof Player)
|
||||||
|
{
|
||||||
|
Player target = (Player)event.getEntity();
|
||||||
|
target.sendMessage(ChatColor.RED+"**STRUCK BY GORE**");
|
||||||
|
Users.getProfile(target).setBleedTicks(2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Config.getInstance().addToBleedQue(event.getEntity());
|
||||||
|
|
||||||
|
master.sendMessage(ChatColor.GREEN+"**GORE**");
|
||||||
|
}
|
||||||
|
PPo.addTamingXP(event.getDamage() * 4);
|
||||||
|
master.sendMessage("mcMMO Debug: Event Damage "+event.getDamage());
|
||||||
|
Skills.XpCheck(master);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//Another offensive check for Archery
|
//Another offensive check for Archery
|
||||||
if(event instanceof EntityDamageByProjectileEvent)
|
if(event instanceof EntityDamageByProjectileEvent)
|
||||||
@ -81,6 +172,27 @@ public class Combat {
|
|||||||
Swords.counterAttackChecks(event);
|
Swords.counterAttackChecks(event);
|
||||||
Acrobatics.dodgeChecks((EntityDamageByEntityEvent)event);
|
Acrobatics.dodgeChecks((EntityDamageByEntityEvent)event);
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* DEFENSIVE CHECKS FOR WOLVES
|
||||||
|
*/
|
||||||
|
if(event.getEntity() instanceof Wolf){
|
||||||
|
if(Taming.hasOwner(event.getEntity(), pluginx))
|
||||||
|
{
|
||||||
|
Player master = Taming.getOwner(event.getEntity(), pluginx);
|
||||||
|
PlayerProfile PPo = Users.getProfile(master);
|
||||||
|
|
||||||
|
//Shock-Proof
|
||||||
|
if((event.getCause() == DamageCause.ENTITY_EXPLOSION || event.getCause() == DamageCause.BLOCK_EXPLOSION) && PPo.getTamingInt() >= 500)
|
||||||
|
{
|
||||||
|
event.setDamage(event.getDamage() / 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Thick Fur
|
||||||
|
if(PPo.getTamingInt() >= 250)
|
||||||
|
event.setDamage(event.getDamage() / 2);
|
||||||
|
master.sendMessage("mcMMO Debug: Wolf Damage Taken "+event.getDamage());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void combatAbilityChecks(Player attacker, PlayerProfile PPa){
|
public static void combatAbilityChecks(Player attacker, PlayerProfile PPa){
|
||||||
@ -92,239 +204,6 @@ public class Combat {
|
|||||||
if(PPa.getFistsPreparationMode())
|
if(PPa.getFistsPreparationMode())
|
||||||
Skills.berserkActivationCheck(attacker, plugin);
|
Skills.berserkActivationCheck(attacker, plugin);
|
||||||
}
|
}
|
||||||
public static void playerVersusPlayerChecks(EntityDamageByEntityEvent event, Player attacker){
|
|
||||||
Entity x = event.getEntity();
|
|
||||||
if(x instanceof Player){
|
|
||||||
if(LoadProperties.pvp == false){
|
|
||||||
event.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerProfile PPa = Users.getProfile(attacker);
|
|
||||||
Player defender = (Player)x;
|
|
||||||
PlayerProfile PPd = Users.getProfile(defender);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* COMPATABILITY CHECKS (Stuff that wouldn't happen normally in basically...)
|
|
||||||
*/
|
|
||||||
if(Users.getProfile(defender) == null)
|
|
||||||
Users.addUser(defender);
|
|
||||||
if(attacker != null && defender != null && Users.getProfile(attacker).inParty() && Users.getProfile(defender).inParty()){
|
|
||||||
if(Party.getInstance().inSameParty(defender, attacker)){
|
|
||||||
event.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* AXE CRITICAL CHECK
|
|
||||||
*/
|
|
||||||
axeCriticalCheck(attacker, event, x);
|
|
||||||
if(!Config.getInstance().isBleedTracked(x)){
|
|
||||||
Swords.bleedCheck(attacker, x);
|
|
||||||
}
|
|
||||||
if(defender != null && mcPermissions.getInstance().unarmed(attacker) && attacker.getItemInHand().getTypeId() == 0){
|
|
||||||
|
|
||||||
//Bonus just for having unarmed
|
|
||||||
int bonus = 2;
|
|
||||||
if (PPa.getUnarmedInt() >= 250)
|
|
||||||
bonus++;
|
|
||||||
if (PPa.getUnarmedInt() >= 500)
|
|
||||||
bonus++;
|
|
||||||
event.setDamage(calculateDamage(event, bonus));
|
|
||||||
|
|
||||||
//PROC
|
|
||||||
if(simulateUnarmedProc(attacker)){
|
|
||||||
Location loc = defender.getLocation();
|
|
||||||
if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0){
|
|
||||||
attacker.sendMessage(ChatColor.DARK_RED+"You have hit with great force.");
|
|
||||||
defender.sendMessage(ChatColor.DARK_RED+"You have been disarmed!");
|
|
||||||
ItemStack item = defender.getItemInHand();
|
|
||||||
if(item != null){
|
|
||||||
loc.getWorld().dropItemNaturally(loc, item);
|
|
||||||
ItemStack itemx = null;
|
|
||||||
defender.setItemInHand(itemx);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* PVP XP
|
|
||||||
*/
|
|
||||||
if(attacker != null && defender != null && LoadProperties.pvpxp){
|
|
||||||
if(PPd.inParty() && PPa.inParty() && Party.getInstance().inSameParty(attacker, defender))
|
|
||||||
return;
|
|
||||||
if(System.currentTimeMillis() >= PPd.getRespawnATS() + 5000 && defender.getHealth() >= 1){
|
|
||||||
if(m.isAxes(attacker.getItemInHand()))
|
|
||||||
PPa.addAxesXP((event.getDamage() * 3) * LoadProperties.pvpxprewardmodifier);
|
|
||||||
if(m.isSwords(attacker.getItemInHand()))
|
|
||||||
PPa.addSwordsXP((event.getDamage() * 3) * LoadProperties.pvpxprewardmodifier);
|
|
||||||
if(attacker.getItemInHand().getTypeId() == 0)
|
|
||||||
PPa.addUnarmedXP((event.getDamage() * 3) * LoadProperties.pvpxprewardmodifier);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* CHECK FOR LEVEL UPS
|
|
||||||
*/
|
|
||||||
Skills.XpCheck(attacker);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static void playerVersusSquidChecks(EntityDamageByEntityEvent event, Player attacker){
|
|
||||||
Entity x = event.getEntity();
|
|
||||||
PlayerProfile PPa = Users.getProfile(attacker);
|
|
||||||
int type = attacker.getItemInHand().getTypeId();
|
|
||||||
if(x instanceof Squid){
|
|
||||||
if(!Config.getInstance().isBleedTracked(x)){
|
|
||||||
Swords.bleedCheck(attacker, x);
|
|
||||||
}
|
|
||||||
Squid defender = (Squid)event.getEntity();
|
|
||||||
if(m.isSwords(attacker.getItemInHand()) && defender.getHealth() > 0 && mcPermissions.getInstance().swords(attacker)){
|
|
||||||
PPa.addSwordsXP(10 * LoadProperties.xpGainMultiplier);
|
|
||||||
}
|
|
||||||
Skills.XpCheck(attacker);
|
|
||||||
if(m.isAxes(attacker.getItemInHand())
|
|
||||||
&& defender.getHealth() > 0
|
|
||||||
&& mcPermissions.getInstance().axes(attacker)){
|
|
||||||
PPa.addAxesXP(10 * LoadProperties.xpGainMultiplier);
|
|
||||||
Skills.XpCheck(attacker);
|
|
||||||
}
|
|
||||||
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){
|
|
||||||
if(PPa.getAxesInt() >= 500){
|
|
||||||
event.setDamage(calculateDamage(event, 4));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* UNARMED VS SQUID
|
|
||||||
*/
|
|
||||||
if(type == 0 && mcPermissions.getInstance().unarmed(attacker)){
|
|
||||||
if(defender.getHealth() <= 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Bonus just for having unarmed
|
|
||||||
int bonus = 2;
|
|
||||||
if (PPa.getUnarmedInt() >= 250)
|
|
||||||
bonus++;
|
|
||||||
if (PPa.getUnarmedInt() >= 500)
|
|
||||||
bonus++;
|
|
||||||
event.setDamage(calculateDamage(event, bonus));
|
|
||||||
|
|
||||||
//XP
|
|
||||||
if(defender.getHealth() != 0){
|
|
||||||
PPa.addUnarmedXP(10 * LoadProperties.xpGainMultiplier);
|
|
||||||
Skills.XpCheck(attacker);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static void playerVersusAnimalsChecks(EntityDamageByEntityEvent event, Player attacker){
|
|
||||||
int type = attacker.getItemInHand().getTypeId();
|
|
||||||
Entity x = event.getEntity();
|
|
||||||
PlayerProfile PPa = Users.getProfile(attacker);
|
|
||||||
if(x instanceof Animals){
|
|
||||||
if(!Config.getInstance().isBleedTracked(x)){
|
|
||||||
Swords.bleedCheck(attacker, x);
|
|
||||||
}
|
|
||||||
Animals defender = (Animals)event.getEntity();
|
|
||||||
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){
|
|
||||||
if(defender.getHealth() <= 0)
|
|
||||||
return;
|
|
||||||
if(PPa.getAxesInt() >= 500){
|
|
||||||
event.setDamage(calculateDamage(event, 4));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(type == 0 && mcPermissions.getInstance().unarmed(attacker)){
|
|
||||||
//Bonus just for having unarmed
|
|
||||||
int bonus = 2;
|
|
||||||
if (PPa.getUnarmedInt() >= 250)
|
|
||||||
bonus++;
|
|
||||||
if (PPa.getUnarmedInt() >= 500)
|
|
||||||
bonus++;
|
|
||||||
event.setDamage(calculateDamage(event, bonus));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static void playerVersusMonsterChecks(EntityDamageByEntityEvent event, Player attacker){
|
|
||||||
Entity x = event.getEntity();
|
|
||||||
int type = attacker.getItemInHand().getTypeId();
|
|
||||||
PlayerProfile PPa = Users.getProfile(attacker);
|
|
||||||
if(x instanceof Monster){
|
|
||||||
/*
|
|
||||||
* AXE PROC CHECKS
|
|
||||||
*/
|
|
||||||
axeCriticalCheck(attacker, event, x);
|
|
||||||
if(!Config.getInstance().isBleedTracked(x)){
|
|
||||||
Swords.bleedCheck(attacker, x);
|
|
||||||
}
|
|
||||||
Monster defender = (Monster)event.getEntity();
|
|
||||||
if(m.isSwords(attacker.getItemInHand())
|
|
||||||
&& defender.getHealth() > 0
|
|
||||||
&& mcPermissions.getInstance().swords(attacker)){
|
|
||||||
if(!Config.getInstance().isMobSpawnTracked(x)){
|
|
||||||
if(x instanceof Creeper)
|
|
||||||
PPa.addSwordsXP((event.getDamage() * 4) * LoadProperties.xpGainMultiplier);
|
|
||||||
if(x instanceof Spider)
|
|
||||||
PPa.addSwordsXP((event.getDamage() * 3) * LoadProperties.xpGainMultiplier);
|
|
||||||
if(x instanceof Skeleton)
|
|
||||||
PPa.addSwordsXP((event.getDamage() * 2) * LoadProperties.xpGainMultiplier);
|
|
||||||
if(x instanceof Zombie)
|
|
||||||
PPa.addSwordsXP((event.getDamage() * 2) * LoadProperties.xpGainMultiplier);
|
|
||||||
if(x instanceof PigZombie)
|
|
||||||
PPa.addSwordsXP((event.getDamage() * 3) * LoadProperties.xpGainMultiplier);
|
|
||||||
}
|
|
||||||
Skills.XpCheck(attacker);
|
|
||||||
}
|
|
||||||
if(m.isAxes(attacker.getItemInHand())
|
|
||||||
&& defender.getHealth() > 0
|
|
||||||
&& mcPermissions.getInstance().axes(attacker)){
|
|
||||||
if(!Config.getInstance().isMobSpawnTracked(x)){
|
|
||||||
if(x instanceof Creeper)
|
|
||||||
PPa.addAxesXP((event.getDamage() * 4) * LoadProperties.xpGainMultiplier);
|
|
||||||
if(x instanceof Spider)
|
|
||||||
PPa.addAxesXP((event.getDamage() * 3) * LoadProperties.xpGainMultiplier);
|
|
||||||
if(x instanceof Skeleton)
|
|
||||||
PPa.addAxesXP((event.getDamage() * 2) * LoadProperties.xpGainMultiplier);
|
|
||||||
if(x instanceof Zombie)
|
|
||||||
PPa.addAxesXP((event.getDamage() * 2) * LoadProperties.xpGainMultiplier);
|
|
||||||
if(x instanceof PigZombie)
|
|
||||||
PPa.addAxesXP((event.getDamage() * 3) * LoadProperties.xpGainMultiplier);
|
|
||||||
}
|
|
||||||
Skills.XpCheck(attacker);
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* AXE DAMAGE SCALING && LOOT CHECKS
|
|
||||||
*/
|
|
||||||
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){
|
|
||||||
if(PPa.getAxesInt() >= 500){
|
|
||||||
event.setDamage(calculateDamage(event, 4));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(type == 0 && mcPermissions.getInstance().unarmed(attacker)){
|
|
||||||
if(defender.getHealth() <= 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Bonus just for having unarmed
|
|
||||||
int bonus = 2;
|
|
||||||
if (PPa.getUnarmedInt() >= 250)
|
|
||||||
bonus++;
|
|
||||||
if (PPa.getUnarmedInt() >= 500)
|
|
||||||
bonus++;
|
|
||||||
event.setDamage(calculateDamage(event, bonus));
|
|
||||||
|
|
||||||
//XP
|
|
||||||
if(!Config.getInstance().isMobSpawnTracked(x)){
|
|
||||||
if(x instanceof Creeper)
|
|
||||||
PPa.addUnarmedXP((event.getDamage() * 4) * LoadProperties.xpGainMultiplier);
|
|
||||||
if(x instanceof Spider)
|
|
||||||
PPa.addUnarmedXP((event.getDamage() * 3) * LoadProperties.xpGainMultiplier);
|
|
||||||
if(x instanceof Skeleton)
|
|
||||||
PPa.addUnarmedXP((event.getDamage() * 2) * LoadProperties.xpGainMultiplier);
|
|
||||||
if(x instanceof Zombie)
|
|
||||||
PPa.addUnarmedXP((event.getDamage() * 2) * LoadProperties.xpGainMultiplier);
|
|
||||||
if(x instanceof PigZombie)
|
|
||||||
PPa.addUnarmedXP((event.getDamage() * 3) * LoadProperties.xpGainMultiplier);
|
|
||||||
}
|
|
||||||
Skills.XpCheck(attacker);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static void archeryCheck(EntityDamageByProjectileEvent event){
|
public static void archeryCheck(EntityDamageByProjectileEvent event){
|
||||||
Entity y = event.getDamager();
|
Entity y = event.getDamager();
|
||||||
Entity x = event.getEntity();
|
Entity x = event.getEntity();
|
||||||
@ -370,6 +249,20 @@ public class Combat {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* DAMAGE MODIFIER
|
||||||
|
*/
|
||||||
|
if(PPa.getArcheryInt() >= 50 && PPa.getArcheryInt() < 250)
|
||||||
|
event.setDamage(event.getDamage()+1);
|
||||||
|
if(PPa.getArcheryInt() >= 250 && PPa.getArcheryInt() < 575)
|
||||||
|
event.setDamage(event.getDamage()+2);
|
||||||
|
if(PPa.getArcheryInt() >= 575 && PPa.getArcheryInt() < 725)
|
||||||
|
event.setDamage(event.getDamage()+3);
|
||||||
|
if(PPa.getArcheryInt() >= 725 && PPa.getArcheryInt() < 1000)
|
||||||
|
event.setDamage(event.getDamage()+4);
|
||||||
|
if(PPa.getArcheryInt() >= 1000)
|
||||||
|
event.setDamage(event.getDamage()+5);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* IGNITION
|
* IGNITION
|
||||||
*/
|
*/
|
||||||
@ -403,19 +296,6 @@ public class Combat {
|
|||||||
* Defender is Monster
|
* Defender is Monster
|
||||||
*/
|
*/
|
||||||
if(x instanceof Monster){
|
if(x instanceof Monster){
|
||||||
/*
|
|
||||||
* TRACK ARROWS USED AGAINST THE ENTITY
|
|
||||||
*/
|
|
||||||
if(PPa.getArcheryInt() >= 50 && PPa.getArcheryInt() < 250)
|
|
||||||
event.setDamage(calculateDamage(event, 1));
|
|
||||||
if(PPa.getArcheryInt() >= 250 && PPa.getArcheryInt() < 575)
|
|
||||||
event.setDamage(calculateDamage(event, 2));
|
|
||||||
if(PPa.getArcheryInt() >= 575 && PPa.getArcheryInt() < 725)
|
|
||||||
event.setDamage(calculateDamage(event, 3));
|
|
||||||
if(PPa.getArcheryInt() >= 725 && PPa.getArcheryInt() < 1000)
|
|
||||||
event.setDamage(calculateDamage(event, 4));
|
|
||||||
if(PPa.getArcheryInt() >= 1000)
|
|
||||||
event.setDamage(calculateDamage(event, 5));
|
|
||||||
//XP
|
//XP
|
||||||
if(!Config.getInstance().isMobSpawnTracked(x)){
|
if(!Config.getInstance().isMobSpawnTracked(x)){
|
||||||
if(x instanceof Creeper)
|
if(x instanceof Creeper)
|
||||||
@ -430,36 +310,6 @@ public class Combat {
|
|||||||
PPa.addArcheryXP((event.getDamage() * 3) * LoadProperties.xpGainMultiplier);
|
PPa.addArcheryXP((event.getDamage() * 3) * LoadProperties.xpGainMultiplier);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
* Defender is Animals
|
|
||||||
*/
|
|
||||||
if(x instanceof Animals){
|
|
||||||
if(PPa.getArcheryInt() >= 50 && PPa.getArcheryInt() < 250)
|
|
||||||
event.setDamage(calculateDamage(event, 1));
|
|
||||||
if(PPa.getArcheryInt() >= 250 && PPa.getArcheryInt() < 575)
|
|
||||||
event.setDamage(calculateDamage(event, 2));
|
|
||||||
if(PPa.getArcheryInt() >= 575 && PPa.getArcheryInt() < 725)
|
|
||||||
event.setDamage(calculateDamage(event, 3));
|
|
||||||
if(PPa.getArcheryInt() >= 725 && PPa.getArcheryInt() < 1000)
|
|
||||||
event.setDamage(calculateDamage(event, 4));
|
|
||||||
if(PPa.getArcheryInt() >= 1000)
|
|
||||||
event.setDamage(calculateDamage(event, 5));
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* Defender is Squid
|
|
||||||
*/
|
|
||||||
if(x instanceof Squid){
|
|
||||||
if(PPa.getArcheryInt() >= 50 && PPa.getArcheryInt() < 250)
|
|
||||||
event.setDamage(calculateDamage(event, 1));
|
|
||||||
if(PPa.getArcheryInt() >= 250 && PPa.getArcheryInt() < 575)
|
|
||||||
event.setDamage(calculateDamage(event, 2));
|
|
||||||
if(PPa.getArcheryInt() >= 575 && PPa.getArcheryInt() < 725)
|
|
||||||
event.setDamage(calculateDamage(event, 3));
|
|
||||||
if(PPa.getArcheryInt() >= 725 && PPa.getArcheryInt() < 1000)
|
|
||||||
event.setDamage(calculateDamage(event, 4));
|
|
||||||
if(PPa.getArcheryInt() >= 1000)
|
|
||||||
event.setDamage(calculateDamage(event, 5));
|
|
||||||
}
|
|
||||||
/*
|
/*
|
||||||
* Attacker is Player
|
* Attacker is Player
|
||||||
*/
|
*/
|
||||||
@ -505,38 +355,10 @@ public class Combat {
|
|||||||
defender.sendMessage(ChatColor.DARK_RED+"Touched Fuzzy. Felt Dizzy.");
|
defender.sendMessage(ChatColor.DARK_RED+"Touched Fuzzy. Felt Dizzy.");
|
||||||
attacker.sendMessage("Target was "+ChatColor.DARK_RED+"Dazed");
|
attacker.sendMessage("Target was "+ChatColor.DARK_RED+"Dazed");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(PPa.getArcheryInt() >= 50 && PPa.getArcheryInt() < 250)
|
|
||||||
event.setDamage(calculateDamage(event, 1));
|
|
||||||
if(PPa.getArcheryInt() >= 250 && PPa.getArcheryInt() < 575)
|
|
||||||
event.setDamage(calculateDamage(event, 2));
|
|
||||||
if(PPa.getArcheryInt() >= 575 && PPa.getArcheryInt() < 725)
|
|
||||||
event.setDamage(calculateDamage(event, 3));
|
|
||||||
if(PPa.getArcheryInt() >= 725 && PPa.getArcheryInt() < 1000)
|
|
||||||
event.setDamage(calculateDamage(event, 4));
|
|
||||||
if(PPa.getArcheryInt() >= 1000)
|
|
||||||
event.setDamage(calculateDamage(event, 5));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Skills.XpCheck(attacker);
|
Skills.XpCheck(attacker);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
public static boolean simulateUnarmedProc(Player player){
|
|
||||||
PlayerProfile PP = Users.getProfile(player);
|
|
||||||
if(PP.getUnarmedInt() >= 1000){
|
|
||||||
if(Math.random() * 4000 <= 1000){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if(Math.random() * 4000 <= PP.getUnarmedInt()){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int calculateDamage(EntityDamageEvent event, int dmg){
|
|
||||||
return event.getDamage() + dmg;
|
|
||||||
}
|
}
|
||||||
public static void dealDamage(Entity target, int dmg){
|
public static void dealDamage(Entity target, int dmg){
|
||||||
if(target instanceof Player){
|
if(target instanceof Player){
|
||||||
@ -549,38 +371,4 @@ public class Combat {
|
|||||||
((Monster) target).damage(dmg);
|
((Monster) target).damage(dmg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static void axeCriticalCheck(Player attacker, EntityDamageByEntityEvent event, Entity x){
|
|
||||||
PlayerProfile PPa = Users.getProfile(attacker);
|
|
||||||
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){
|
|
||||||
if(PPa.getAxesInt() >= 750){
|
|
||||||
if(Math.random() * 1000 <= 750){
|
|
||||||
if(x instanceof Player){
|
|
||||||
Player player = (Player)x;
|
|
||||||
player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!");
|
|
||||||
}
|
|
||||||
if(x instanceof Player){
|
|
||||||
event.setDamage(event.getDamage() * 2 - event.getDamage() / 2);
|
|
||||||
} else {
|
|
||||||
event.setDamage(event.getDamage() * 2);
|
|
||||||
}
|
|
||||||
attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
|
|
||||||
}
|
|
||||||
} else if(Math.random() * 1000 <= PPa.getAxesInt()){
|
|
||||||
if(x instanceof Player){
|
|
||||||
Player player = (Player)x;
|
|
||||||
player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!");
|
|
||||||
}
|
|
||||||
if(x instanceof Player){
|
|
||||||
event.setDamage(event.getDamage() * 2 - event.getDamage() / 2);
|
|
||||||
} else {
|
|
||||||
event.setDamage(event.getDamage() * 2);
|
|
||||||
}
|
|
||||||
attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,47 @@ public class Database {
|
|||||||
System.out.println("VendorError: " + ex.getErrorCode());
|
System.out.println("VendorError: " + ex.getErrorCode());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//Create the DB structure
|
||||||
|
public void createStructure(){
|
||||||
|
Write("CREATE TABLE IF NOT EXISTS `users` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT," +
|
||||||
|
"`user` varchar(30) NOT NULL," +
|
||||||
|
"`lastlogin` int(10) unsigned NOT NULL," +
|
||||||
|
"`party` varchar(100) NOT NULL DEFAULT ''," +
|
||||||
|
"PRIMARY KEY (`id`)," +
|
||||||
|
"UNIQUE KEY `user` (`user`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;");
|
||||||
|
Write("CREATE TABLE IF NOT EXISTS `skills` (`user_id` int(10) unsigned NOT NULL," +
|
||||||
|
"`taming` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`mining` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`woodcutting` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`repair` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`unarmed` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`herbalism` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`excavation` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`archery` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`swords` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`axes` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`acrobatics` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
|
||||||
|
Write("CREATE TABLE IF NOT EXISTS `experience` (`user_id` int(10) unsigned NOT NULL," +
|
||||||
|
"`taming` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`mining` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`woodcutting` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`repair` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`unarmed` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`herbalism` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`excavation` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`archery` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`swords` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`axes` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"`acrobatics` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||||
|
"PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
|
||||||
|
Write("CREATE TABLE IF NOT EXISTS `spawn` (`user_id` int(10) NOT NULL," +
|
||||||
|
"`x` int(11) NOT NULL DEFAULT '0'," +
|
||||||
|
"`y` int(11) NOT NULL DEFAULT '0'," +
|
||||||
|
"`z` int(11) NOT NULL DEFAULT '0'," +
|
||||||
|
"`world` varchar(50) NOT NULL DEFAULT ''," +
|
||||||
|
"PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
|
||||||
|
}
|
||||||
// write query
|
// write query
|
||||||
public boolean Write(String sql) {
|
public boolean Write(String sql) {
|
||||||
try {
|
try {
|
||||||
|
@ -700,12 +700,12 @@ public class PlayerProfile
|
|||||||
public void skillUpTaming(int newskill){
|
public void skillUpTaming(int newskill){
|
||||||
int x = 0;
|
int x = 0;
|
||||||
if(taming != null){
|
if(taming != null){
|
||||||
if(isInt(taming)){
|
if(isInt(taming)){
|
||||||
x = Integer.parseInt(taming);
|
x = Integer.parseInt(taming);
|
||||||
}else {
|
}else {
|
||||||
taming = "0";
|
taming = "0";
|
||||||
x = Integer.parseInt(taming);
|
x = Integer.parseInt(taming);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
x += newskill;
|
x += newskill;
|
||||||
taming = Integer.toString(x);
|
taming = Integer.toString(x);
|
||||||
@ -1053,7 +1053,7 @@ public class PlayerProfile
|
|||||||
x = Integer.parseInt(tamingXP);
|
x = Integer.parseInt(tamingXP);
|
||||||
}
|
}
|
||||||
x += newXP;
|
x += newXP;
|
||||||
acrobaticsXP = String.valueOf(x);
|
tamingXP = String.valueOf(x);
|
||||||
save();
|
save();
|
||||||
}
|
}
|
||||||
public void addAcrobaticsXP(int newXP)
|
public void addAcrobaticsXP(int newXP)
|
||||||
|
@ -3,4 +3,4 @@ package com.gmail.nossr50.datatypes;
|
|||||||
public class PlayerStat {
|
public class PlayerStat {
|
||||||
public String name;
|
public String name;
|
||||||
public int statVal = 0;
|
public int statVal = 0;
|
||||||
}
|
}
|
@ -26,7 +26,6 @@ public class m {
|
|||||||
* I'm storing my functions/methods in here in an unorganized manner. Spheal with it.
|
* I'm storing my functions/methods in here in an unorganized manner. Spheal with it.
|
||||||
*/
|
*/
|
||||||
private static mcMMO plugin;
|
private static mcMMO plugin;
|
||||||
private static mcMMO pluginx;
|
|
||||||
public m(mcMMO instance) {
|
public m(mcMMO instance) {
|
||||||
plugin = instance;
|
plugin = instance;
|
||||||
}
|
}
|
||||||
@ -172,7 +171,6 @@ public class m {
|
|||||||
for (int cy = -radius; cy <= radius; cy++) {
|
for (int cy = -radius; cy <= radius; cy++) {
|
||||||
for (int cz = -radius; cz <= radius; cz++) {
|
for (int cz = -radius; cz <= radius; cz++) {
|
||||||
Block block = loc.getWorld().getBlockAt(ox + cx, oy + cy, oz + cz);
|
Block block = loc.getWorld().getBlockAt(ox + cx, oy + cy, oz + cz);
|
||||||
//If block is block
|
|
||||||
if (block.getTypeId() == typeid) {
|
if (block.getTypeId() == typeid) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -181,6 +179,7 @@ public class m {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isPvpEnabled(){
|
public static boolean isPvpEnabled(){
|
||||||
String propertyName = "pvp";
|
String propertyName = "pvp";
|
||||||
FileReader fr = null;
|
FileReader fr = null;
|
||||||
@ -304,6 +303,35 @@ public class m {
|
|||||||
}
|
}
|
||||||
public static void mmoHelpCheck(String[] split, Player player, PlayerChatEvent event){
|
public static void mmoHelpCheck(String[] split, Player player, PlayerChatEvent event){
|
||||||
PlayerProfile PP = Users.getProfile(player);
|
PlayerProfile PP = Users.getProfile(player);
|
||||||
|
if(split[0].equalsIgnoreCase("/taming")){
|
||||||
|
event.setCancelled(true);
|
||||||
|
float skillvalue = (float)PP.getTamingInt();
|
||||||
|
|
||||||
|
String percentage = String.valueOf((skillvalue / 1000) * 100);
|
||||||
|
player.sendMessage(ChatColor.RED+"-----[]"+ChatColor.GREEN+"TAMING"+ChatColor.RED+"[]-----");
|
||||||
|
player.sendMessage(ChatColor.DARK_GRAY+"XP GAIN: "+ChatColor.WHITE+"Fighting with your wolves");
|
||||||
|
player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"EFFECTS"+ChatColor.RED+"[]---");
|
||||||
|
//player.sendMessage(ChatColor.DARK_AQUA+"Tree Feller (ABILITY): "+ChatColor.GREEN+"Make trees explode");
|
||||||
|
player.sendMessage(ChatColor.DARK_AQUA+"Gore: "+ChatColor.YELLOW+ChatColor.GREEN+"Critical Strike that applies Bleed");
|
||||||
|
player.sendMessage(ChatColor.DARK_AQUA+"Sharpened Claws: "+ChatColor.YELLOW+ChatColor.GREEN+"Damage Bonus");
|
||||||
|
player.sendMessage(ChatColor.DARK_AQUA+"Thick Fur: "+ChatColor.YELLOW+ChatColor.GREEN+"Damage Reduction");
|
||||||
|
player.sendMessage(ChatColor.DARK_AQUA+"Shock Proof: "+ChatColor.YELLOW+ChatColor.GREEN+"Explosive Damage Reduction");
|
||||||
|
player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"YOUR STATS"+ChatColor.RED+"[]---");
|
||||||
|
if(PP.getTamingInt() < 250)
|
||||||
|
player.sendMessage(ChatColor.GRAY+"LOCKED UNTIL 250+ SKILL (THICK FUR)");
|
||||||
|
else
|
||||||
|
player.sendMessage(ChatColor.RED+"Thick Fur: "+ChatColor.YELLOW+"Halved Damage");
|
||||||
|
if(PP.getTamingInt() < 500)
|
||||||
|
player.sendMessage(ChatColor.GRAY+"LOCKED UNTIL 500+ SKILL (SHOCK PROOF)");
|
||||||
|
else
|
||||||
|
player.sendMessage(ChatColor.RED+"Shock Proof: "+ChatColor.YELLOW+"Explosives do 1/6 normal damage");
|
||||||
|
if(PP.getTamingInt() < 750)
|
||||||
|
player.sendMessage(ChatColor.GRAY+"LOCKED UNTIL 750+ SKILL (SHARPENED CLAWS)");
|
||||||
|
else
|
||||||
|
player.sendMessage(ChatColor.RED+"Sharpened Claws: "+ChatColor.YELLOW+"+2 Damage");
|
||||||
|
player.sendMessage(ChatColor.RED+"Gore Chance: "+ChatColor.YELLOW+percentage+"%");
|
||||||
|
//player.sendMessage(ChatColor.RED+"Tree Feller Length: "+ChatColor.YELLOW+ticks+"s");
|
||||||
|
}
|
||||||
if(split[0].equalsIgnoreCase("/woodcutting")){
|
if(split[0].equalsIgnoreCase("/woodcutting")){
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
float skillvalue = (float)PP.getWoodCuttingInt();
|
float skillvalue = (float)PP.getWoodCuttingInt();
|
||||||
|
@ -99,7 +99,7 @@ public class mcEntityListener extends EntityListener {
|
|||||||
if(Party.getInstance().inSameParty(defender, attacker))
|
if(Party.getInstance().inSameParty(defender, attacker))
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
Combat.combatChecks(event);
|
Combat.combatChecks(event, plugin);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Check to see if the defender took damage so we can apply recently hurt
|
* Check to see if the defender took damage so we can apply recently hurt
|
||||||
|
@ -100,7 +100,8 @@ public class mcMMO extends JavaPlugin {
|
|||||||
|
|
||||||
PluginDescriptionFile pdfFile = this.getDescription();
|
PluginDescriptionFile pdfFile = this.getDescription();
|
||||||
mcPermissions.initialize(getServer());
|
mcPermissions.initialize(getServer());
|
||||||
mcLoadMySQL();
|
mcLoadMySQL();
|
||||||
|
database.createStructure(); //Make Structure
|
||||||
|
|
||||||
Leaderboard.makeLeaderboards(); //Make the leaderboards
|
Leaderboard.makeLeaderboards(); //Make the leaderboards
|
||||||
System.out.println( pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" );
|
System.out.println( pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" );
|
||||||
|
@ -7,7 +7,9 @@ import org.bukkit.ChatColor;
|
|||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.entity.Wolf;
|
||||||
import org.bukkit.event.block.Action;
|
import org.bukkit.event.block.Action;
|
||||||
import org.bukkit.event.player.PlayerChatEvent;
|
import org.bukkit.event.player.PlayerChatEvent;
|
||||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||||
@ -26,6 +28,7 @@ import com.gmail.nossr50.party.Party;
|
|||||||
import com.gmail.nossr50.skills.Herbalism;
|
import com.gmail.nossr50.skills.Herbalism;
|
||||||
import com.gmail.nossr50.skills.Repair;
|
import com.gmail.nossr50.skills.Repair;
|
||||||
import com.gmail.nossr50.skills.Skills;
|
import com.gmail.nossr50.skills.Skills;
|
||||||
|
import com.gmail.nossr50.skills.Taming;
|
||||||
|
|
||||||
|
|
||||||
public class mcPlayerListener extends PlayerListener {
|
public class mcPlayerListener extends PlayerListener {
|
||||||
@ -82,7 +85,6 @@ public class mcPlayerListener extends PlayerListener {
|
|||||||
if(mcPermissions.getInstance().motd(player)){
|
if(mcPermissions.getInstance().motd(player)){
|
||||||
player.sendMessage(ChatColor.BLUE +"This server is running MMO "+plugin.getDescription().getVersion()+" type /"+ChatColor.YELLOW+LoadProperties.mcmmo+ChatColor.BLUE+ " for help.");
|
player.sendMessage(ChatColor.BLUE +"This server is running MMO "+plugin.getDescription().getVersion()+" type /"+ChatColor.YELLOW+LoadProperties.mcmmo+ChatColor.BLUE+ " for help.");
|
||||||
player.sendMessage(ChatColor.GREEN+"http://mmo.wikia.com"+ChatColor.BLUE+" - MMO Wiki");
|
player.sendMessage(ChatColor.GREEN+"http://mmo.wikia.com"+ChatColor.BLUE+" - MMO Wiki");
|
||||||
player.sendMessage(ChatColor.DARK_RED+"ATTN: YOUR STATS WILL BE BACK TO NORMAL SHORTLY, WE ARE USING MySQL NOW AND I HAVE TO WRITE A MYSQL QUERY TO UPDATE YOUR STATS!");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void onPlayerInteract(PlayerInteractEvent event) {
|
public void onPlayerInteract(PlayerInteractEvent event) {
|
||||||
@ -91,6 +93,14 @@ public class mcPlayerListener extends PlayerListener {
|
|||||||
Action action = event.getAction();
|
Action action = event.getAction();
|
||||||
Block block = event.getClickedBlock();
|
Block block = event.getClickedBlock();
|
||||||
//Archery Nerf
|
//Archery Nerf
|
||||||
|
if(action == Action.LEFT_CLICK_AIR)
|
||||||
|
{
|
||||||
|
if(player.getItemInHand().getTypeId() == 352)
|
||||||
|
{
|
||||||
|
Block targetBlock = player.getTargetBlock(null, 20);
|
||||||
|
player.sendMessage("Target Block TypeID = "+targetBlock.getTypeId());
|
||||||
|
}
|
||||||
|
}
|
||||||
if(player.getItemInHand().getTypeId() == 261 && LoadProperties.archeryFireRateLimit){
|
if(player.getItemInHand().getTypeId() == 261 && LoadProperties.archeryFireRateLimit){
|
||||||
if(System.currentTimeMillis() < PP.getArcheryShotATS() + 1000){
|
if(System.currentTimeMillis() < PP.getArcheryShotATS() + 1000){
|
||||||
/*
|
/*
|
||||||
|
@ -8,10 +8,46 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.entity.Wolf;
|
import org.bukkit.entity.Wolf;
|
||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.Users;
|
||||||
import com.gmail.nossr50.m;
|
import com.gmail.nossr50.m;
|
||||||
|
import com.gmail.nossr50.mcPermissions;
|
||||||
|
import com.gmail.nossr50.datatypes.PlayerProfile;
|
||||||
import com.gmail.nossr50.party.Party;
|
import com.gmail.nossr50.party.Party;
|
||||||
|
|
||||||
public class Axes {
|
public class Axes {
|
||||||
|
|
||||||
|
public static void axeCriticalCheck(Player attacker, EntityDamageByEntityEvent event){
|
||||||
|
Entity x = event.getEntity();
|
||||||
|
PlayerProfile PPa = Users.getProfile(attacker);
|
||||||
|
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){
|
||||||
|
if(PPa.getAxesInt() >= 750){
|
||||||
|
if(Math.random() * 1000 <= 750){
|
||||||
|
if(x instanceof Player){
|
||||||
|
Player player = (Player)x;
|
||||||
|
player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!");
|
||||||
|
}
|
||||||
|
if(x instanceof Player){
|
||||||
|
event.setDamage(event.getDamage() * 2 - event.getDamage() / 2);
|
||||||
|
} else {
|
||||||
|
event.setDamage(event.getDamage() * 2);
|
||||||
|
}
|
||||||
|
attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
|
||||||
|
}
|
||||||
|
} else if(Math.random() * 1000 <= PPa.getAxesInt()){
|
||||||
|
if(x instanceof Player){
|
||||||
|
Player player = (Player)x;
|
||||||
|
player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!");
|
||||||
|
}
|
||||||
|
if(x instanceof Player){
|
||||||
|
event.setDamage(event.getDamage() * 2 - event.getDamage() / 2);
|
||||||
|
} else {
|
||||||
|
event.setDamage(event.getDamage() * 2);
|
||||||
|
}
|
||||||
|
attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void applyAoeDamage(Player attacker, EntityDamageByEntityEvent event){
|
public static void applyAoeDamage(Player attacker, EntityDamageByEntityEvent event){
|
||||||
int targets = 0;
|
int targets = 0;
|
||||||
Entity x = event.getEntity();
|
Entity x = event.getEntity();
|
||||||
|
@ -121,6 +121,8 @@ public class Swords {
|
|||||||
{
|
{
|
||||||
Player defender = (Player)event.getEntity();
|
Player defender = (Player)event.getEntity();
|
||||||
PlayerProfile PPd = Users.getProfile(defender);
|
PlayerProfile PPd = Users.getProfile(defender);
|
||||||
|
if(m.isSwords(defender.getItemInHand())&& mcPermissions.getInstance().swords(defender))
|
||||||
|
{
|
||||||
if(PPd.getSwordsInt() >= 600)
|
if(PPd.getSwordsInt() >= 600)
|
||||||
{
|
{
|
||||||
if(Math.random() * 2000 <= 600)
|
if(Math.random() * 2000 <= 600)
|
||||||
@ -138,6 +140,7 @@ public class Swords {
|
|||||||
if(f instanceof Player)
|
if(f instanceof Player)
|
||||||
((Player) f).sendMessage(ChatColor.DARK_RED+"Hit with counterattack!");
|
((Player) f).sendMessage(ChatColor.DARK_RED+"Hit with counterattack!");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,8 +11,8 @@ public class Taming {
|
|||||||
public static String getOwnerName(Entity theWolf){
|
public static String getOwnerName(Entity theWolf){
|
||||||
CraftWolf cWolf = (CraftWolf)theWolf;
|
CraftWolf cWolf = (CraftWolf)theWolf;
|
||||||
EntityWolf eWolf = (EntityWolf)cWolf.getHandle();
|
EntityWolf eWolf = (EntityWolf)cWolf.getHandle();
|
||||||
|
|
||||||
String playerName = eWolf.v();
|
String playerName = eWolf.x();
|
||||||
return playerName;
|
return playerName;
|
||||||
}
|
}
|
||||||
public static boolean hasOwner(Entity theWolf, Plugin pluginx){
|
public static boolean hasOwner(Entity theWolf, Plugin pluginx){
|
||||||
@ -23,7 +23,7 @@ public class Taming {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
public Player getOwner(Entity theWolf, Plugin pluginx){
|
public static Player getOwner(Entity theWolf, Plugin pluginx){
|
||||||
for(Player x : pluginx.getServer().getOnlinePlayers()){
|
for(Player x : pluginx.getServer().getOnlinePlayers()){
|
||||||
if(x != null && x.getName().equals(getOwnerName(theWolf))){
|
if(x != null && x.getName().equals(getOwnerName(theWolf))){
|
||||||
return x;
|
return x;
|
||||||
@ -31,8 +31,4 @@ public class Taming {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
public static Taming getInstance() {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,60 @@
|
|||||||
package com.gmail.nossr50.skills;
|
package com.gmail.nossr50.skills;
|
||||||
|
|
||||||
public class Unarmed {
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.Users;
|
||||||
|
import com.gmail.nossr50.datatypes.PlayerProfile;
|
||||||
|
|
||||||
|
public class Unarmed {
|
||||||
|
public static void unarmedBonus(Player attacker, EntityDamageByEntityEvent event)
|
||||||
|
{
|
||||||
|
PlayerProfile PPa = Users.getProfile(attacker);
|
||||||
|
int bonus = 2;
|
||||||
|
if (PPa.getUnarmedInt() >= 250)
|
||||||
|
bonus++;
|
||||||
|
if (PPa.getUnarmedInt() >= 500)
|
||||||
|
bonus++;
|
||||||
|
event.setDamage(event.getDamage()+bonus);
|
||||||
|
}
|
||||||
|
public static void disarmProcCheck(Player attacker, Player defender)
|
||||||
|
{
|
||||||
|
PlayerProfile PP = Users.getProfile(attacker);
|
||||||
|
if(PP.getUnarmedInt() >= 1000){
|
||||||
|
if(Math.random() * 4000 <= 1000){
|
||||||
|
Location loc = defender.getLocation();
|
||||||
|
if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0)
|
||||||
|
{
|
||||||
|
attacker.sendMessage(ChatColor.DARK_RED+"You have hit with great force.");
|
||||||
|
defender.sendMessage(ChatColor.DARK_RED+"You have been disarmed!");
|
||||||
|
ItemStack item = defender.getItemInHand();
|
||||||
|
if(item != null)
|
||||||
|
{
|
||||||
|
loc.getWorld().dropItemNaturally(loc, item);
|
||||||
|
ItemStack itemx = null;
|
||||||
|
defender.setItemInHand(itemx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(Math.random() * 4000 <= PP.getUnarmedInt()){
|
||||||
|
Location loc = defender.getLocation();
|
||||||
|
if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0)
|
||||||
|
{
|
||||||
|
attacker.sendMessage(ChatColor.DARK_RED+"You have hit with great force.");
|
||||||
|
defender.sendMessage(ChatColor.DARK_RED+"You have been disarmed!");
|
||||||
|
ItemStack item = defender.getItemInHand();
|
||||||
|
if(item != null)
|
||||||
|
{
|
||||||
|
loc.getWorld().dropItemNaturally(loc, item);
|
||||||
|
ItemStack itemx = null;
|
||||||
|
defender.setItemInHand(itemx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user