Updates to PVP, team PVP clarity, bugfixes, balance changes.
This commit is contained in:
parent
15e872803f
commit
7a87c6ce4f
Binary file not shown.
@ -1,6 +1,6 @@
|
|||||||
name: TwosideKeeper
|
name: TwosideKeeper
|
||||||
main: sig.plugin.TwosideKeeper.TwosideKeeper
|
main: sig.plugin.TwosideKeeper.TwosideKeeper
|
||||||
version: 3.12.1
|
version: 3.12.1a
|
||||||
loadbefore: [aPlugin]
|
loadbefore: [aPlugin]
|
||||||
commands:
|
commands:
|
||||||
money:
|
money:
|
||||||
|
@ -739,8 +739,8 @@ public class CustomDamage {
|
|||||||
}
|
}
|
||||||
if (getDamagerEntity(damager) instanceof Enderman) {
|
if (getDamagerEntity(damager) instanceof Enderman) {
|
||||||
if (MonsterController.getMonsterDifficulty(((Monster)getDamagerEntity(damager)))==MonsterDifficulty.HELLFIRE) {
|
if (MonsterController.getMonsterDifficulty(((Monster)getDamagerEntity(damager)))==MonsterDifficulty.HELLFIRE) {
|
||||||
for (int i=0;i<4;i++) {
|
for (int i=0;i<4;i++) {
|
||||||
if (Math.random()<=0.2) {
|
if (Math.random()<=0.2) {
|
||||||
LivingEntity mm = MonsterController.spawnAdjustedMonster(MonsterType.ENDERMITE, getDamagerEntity(damager).getLocation().add(0,1,0));
|
LivingEntity mm = MonsterController.spawnAdjustedMonster(MonsterType.ENDERMITE, getDamagerEntity(damager).getLocation().add(0,1,0));
|
||||||
mm.addPotionEffect(new PotionEffect(PotionEffectType.SPEED,Integer.MAX_VALUE,2));
|
mm.addPotionEffect(new PotionEffect(PotionEffectType.SPEED,Integer.MAX_VALUE,2));
|
||||||
}
|
}
|
||||||
@ -2796,6 +2796,13 @@ public class CustomDamage {
|
|||||||
case CHAINMAIL_LEGGINGS:
|
case CHAINMAIL_LEGGINGS:
|
||||||
case CHAINMAIL_CHESTPLATE:
|
case CHAINMAIL_CHESTPLATE:
|
||||||
case CHAINMAIL_HELMET: {
|
case CHAINMAIL_HELMET: {
|
||||||
|
if (target instanceof Player) {
|
||||||
|
Player p = (Player)target;
|
||||||
|
if (PVP.isPvPing(p)) {
|
||||||
|
dmgreduction+=10*((isBlockArmor)?2:1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
dmgreduction+=6*((isBlockArmor)?2:1);
|
dmgreduction+=6*((isBlockArmor)?2:1);
|
||||||
}break;
|
}break;
|
||||||
case IRON_BOOTS:
|
case IRON_BOOTS:
|
||||||
@ -3276,7 +3283,11 @@ public class CustomDamage {
|
|||||||
LivingEntity shooter = getDamagerEntity(damager);
|
LivingEntity shooter = getDamagerEntity(damager);
|
||||||
if (shooter instanceof Player) {
|
if (shooter instanceof Player) {
|
||||||
if (PlayerMode.isRanger((Player)shooter)) {
|
if (PlayerMode.isRanger((Player)shooter)) {
|
||||||
return 4.0;
|
if (PVP.isPvPing((Player)shooter)) {
|
||||||
|
return 0.0;
|
||||||
|
} else {
|
||||||
|
return 3.0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0.0;
|
return 0.0;
|
||||||
@ -4191,7 +4202,7 @@ public class CustomDamage {
|
|||||||
mult+=2.0;
|
mult+=2.0;
|
||||||
}
|
}
|
||||||
if (PVP.isPvPing((Player)shooter)) {
|
if (PVP.isPvPing((Player)shooter)) {
|
||||||
mult /= 4.0;
|
mult /= 3.0;
|
||||||
}
|
}
|
||||||
if (ItemSet.meetsSlayerSwordConditions(ItemSet.ASSASSIN, 18, 2, (Player)shooter)) {
|
if (ItemSet.meetsSlayerSwordConditions(ItemSet.ASSASSIN, 18, 2, (Player)shooter)) {
|
||||||
Material name = ((Player)shooter).getEquipment().getItemInMainHand().getType();
|
Material name = ((Player)shooter).getEquipment().getItemInMainHand().getType();
|
||||||
|
@ -30,7 +30,7 @@ public enum ArtifactAbility {
|
|||||||
|
|
||||||
//Weapon Abilities
|
//Weapon Abilities
|
||||||
DAMAGE("Strike","Improves Base Damage by [VAL]",new double[]{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
|
DAMAGE("Strike","Improves Base Damage by [VAL]",new double[]{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
|
||||||
new PVPValue(30,1.0),10000,1,UpgradePath.BASIC,1),
|
new PVPValue(15,1.0),10000,1,UpgradePath.BASIC,1),
|
||||||
ARMOR_PEN("Piercing","[VAL]% of your damage is ignored by resistances. ([PENDMG] damage)",new double[]{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
|
ARMOR_PEN("Piercing","[VAL]% of your damage is ignored by resistances. ([PENDMG] damage)",new double[]{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
|
||||||
new PVPValue(30,1.0),100,1,UpgradePath.BASIC,1),
|
new PVPValue(30,1.0),100,1,UpgradePath.BASIC,1),
|
||||||
EXECUTION("Execute","Deals [VAL] extra damage for every 20% of target's missing health.",new double[]{0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3},
|
EXECUTION("Execute","Deals [VAL] extra damage for every 20% of target's missing health.",new double[]{0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3},
|
||||||
@ -59,9 +59,9 @@ public enum ArtifactAbility {
|
|||||||
|
|
||||||
//Armor abilities
|
//Armor abilities
|
||||||
DAMAGE_REDUCTION("Defense","Increases Base Damage reduction by [VAL]%\n\n"+PlayerMode.RANGER.getColor()+PlayerMode.RANGER.getName()+" Mode "+ChatColor.WHITE+" only receives half the effect.",new double[]{0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245},
|
DAMAGE_REDUCTION("Defense","Increases Base Damage reduction by [VAL]%\n\n"+PlayerMode.RANGER.getColor()+PlayerMode.RANGER.getName()+" Mode "+ChatColor.WHITE+" only receives half the effect.",new double[]{0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245,0.245},
|
||||||
new PVPValue(80,0.245),100,1,UpgradePath.ARMOR,1),
|
new PVPValue(50,0.245),100,1,UpgradePath.ARMOR,1),
|
||||||
HEALTH("Health","Increases Maximum Health by [VAL].\n\n"+PlayerMode.RANGER.getColor()+PlayerMode.RANGER.getName()+" Mode "+ChatColor.WHITE+" only receives half the effect.",new double[]{0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25},
|
HEALTH("Health","Increases Maximum Health by [VAL].\n\n"+PlayerMode.RANGER.getColor()+PlayerMode.RANGER.getName()+" Mode "+ChatColor.WHITE+" only receives half the effect.",new double[]{0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25},
|
||||||
new PVPValue(40,0.25),10000,1,UpgradePath.ARMOR,1),
|
new PVPValue(30,0.25),10000,1,UpgradePath.ARMOR,1),
|
||||||
HEALTH_REGEN("Regeneration","Regenerates an extra [VAL] health every 5 seconds.",new double[]{0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125},
|
HEALTH_REGEN("Regeneration","Regenerates an extra [VAL] health every 5 seconds.",new double[]{0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125},
|
||||||
new PVPValue(1,0.125),10000,1,UpgradePath.ARMOR,1),
|
new PVPValue(1,0.125),10000,1,UpgradePath.ARMOR,1),
|
||||||
STATUS_EFFECT_RESISTANCE("Resistance","When a debuff is applied, there is a [VAL]% chance to remove it.",new double[]{0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25},
|
STATUS_EFFECT_RESISTANCE("Resistance","When a debuff is applied, there is a [VAL]% chance to remove it.",new double[]{0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25},
|
||||||
@ -100,9 +100,9 @@ public enum ArtifactAbility {
|
|||||||
+ "Suppression prevents movement, attacking, exploding, and teleportation."+LevelCost(10),new double[]{0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02},
|
+ "Suppression prevents movement, attacking, exploding, and teleportation."+LevelCost(10),new double[]{0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02},
|
||||||
new PVPValue(10,0.02),100,10,UpgradePath.SHOVEL,10),
|
new PVPValue(10,0.02),100,10,UpgradePath.SHOVEL,10),
|
||||||
ERUPTION("Eruption","Sneak while Left-clicking a mob to damage mobs for [ERUPTIONVAL] damage and knock them up. The eruption also destroys the ground beneath you.",new double[]{3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0},
|
ERUPTION("Eruption","Sneak while Left-clicking a mob to damage mobs for [ERUPTIONVAL] damage and knock them up. The eruption also destroys the ground beneath you.",new double[]{3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0},
|
||||||
new PVPValue(30,3.0),10000,40,UpgradePath.SHOVEL,1),
|
new PVPValue(15,3.0),10000,40,UpgradePath.SHOVEL,1),
|
||||||
EARTHWAVE("Earth Wave","While in mid-air, right-click to instantly slam into the ground and launch soft blocks. This attack ignores fall damage. The larger the fall, the larger the wave.\n\nDeals [EARTHWAVEVAL] damage to every enemy hit by the wave. Deals double damage and knocks up on soft blocks.",new double[]{2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0},
|
EARTHWAVE("Earth Wave","While in mid-air, right-click to instantly slam into the ground and launch soft blocks. This attack ignores fall damage. The larger the fall, the larger the wave.\n\nDeals [EARTHWAVEVAL] damage to every enemy hit by the wave. Deals double damage and knocks up on soft blocks.",new double[]{2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0},
|
||||||
new PVPValue(30,2.0),10000,100,UpgradePath.SHOVEL,1),
|
new PVPValue(15,2.0),10000,100,UpgradePath.SHOVEL,1),
|
||||||
|
|
||||||
//Axe abilities
|
//Axe abilities
|
||||||
/*BREAKDOWN("Break Down",ChatColor.GRAY+"[Unimplemented] Breaks down armor on mobs. Each hit has a [VAL]% chance to remove a piece of armor from a mob.",new double[]{3,3,3,3,3,3,3,3,3,3},
|
/*BREAKDOWN("Break Down",ChatColor.GRAY+"[Unimplemented] Breaks down armor on mobs. Each hit has a [VAL]% chance to remove a piece of armor from a mob.",new double[]{3,3,3,3,3,3,3,3,3,3},
|
||||||
@ -124,9 +124,9 @@ public enum ArtifactAbility {
|
|||||||
|
|
||||||
//Scythe abilities
|
//Scythe abilities
|
||||||
AOE("Area of Effect","Deals damage to targets up to [AOEVAL]m from the main target hit.",new double[]{0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1},
|
AOE("Area of Effect","Deals damage to targets up to [AOEVAL]m from the main target hit.",new double[]{0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1},
|
||||||
new PVPValue(3,1.0),10000,1,UpgradePath.SCYTHE,1),
|
new PVPValue(5,1.0),10000,1,UpgradePath.SCYTHE,1),
|
||||||
DEATHMARK("Death Mark","Applies a Death Mark stack to enemies hit. Death mark stacks last for 5 seconds, and refresh on each hit.\n\nMarks can be detonated at any time by right-clicking. Targets killed with Death Mark resets the cooldown. Targets not killed lose half their Death Mark stacks.\n\n Each death mark stack applied deals [VAL] true damage.",new double[]{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
|
DEATHMARK("Death Mark","Applies a Death Mark stack to enemies hit. Death mark stacks last for 5 seconds, and refresh on each hit.\n\nMarks can be detonated at any time by right-clicking. Targets killed with Death Mark resets the cooldown. Targets not killed lose half their Death Mark stacks.\n\n Each death mark stack applied deals [VAL] true damage.",new double[]{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
|
||||||
new PVPValue(3,1.0),10000,10,UpgradePath.SCYTHE,1),
|
new PVPValue(10,1.0),10000,10,UpgradePath.SCYTHE,1),
|
||||||
CRIPPLE("Cripple","Every 10 death marks applied on a monster increases damage dealt from all damage sources by [VAL]%.",new double[]{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
|
CRIPPLE("Cripple","Every 10 death marks applied on a monster increases damage dealt from all damage sources by [VAL]%.",new double[]{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
|
||||||
new PVPValue(1,1.0),100,1000,UpgradePath.SCYTHE,1),
|
new PVPValue(1,1.0),100,1000,UpgradePath.SCYTHE,1),
|
||||||
|
|
||||||
|
@ -134,7 +134,6 @@ public class GenericFunctions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static ItemStack breakHardenedItem(ItemStack item, Player p) {
|
public static ItemStack breakHardenedItem(ItemStack item, Player p) {
|
||||||
|
|
||||||
showStackTrace();
|
showStackTrace();
|
||||||
int break_count = getHardenedItemBreaks(item);
|
int break_count = getHardenedItemBreaks(item);
|
||||||
if (break_count>0) {
|
if (break_count>0) {
|
||||||
@ -2253,6 +2252,11 @@ public class GenericFunctions {
|
|||||||
leather=false;
|
leather=false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
ItemSet set = ItemSet.GetItemSet(equip);
|
||||||
|
if (!ItemSet.isRangerSet(set) && !GenericFunctions.isArtifactArmor(equip)) {
|
||||||
|
leather=false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return leather;
|
return leather;
|
||||||
}
|
}
|
||||||
@ -3728,6 +3732,8 @@ public class GenericFunctions {
|
|||||||
if (!revived) {
|
if (!revived) {
|
||||||
if (PVP.isPvPing(p)) {
|
if (PVP.isPvPing(p)) {
|
||||||
revived=true;
|
revived=true;
|
||||||
|
pd.lastPVPHitReason = reason;
|
||||||
|
pd.lastPVPHitDamage = dmg;
|
||||||
RevivePlayer(p, p.getMaxHealth());
|
RevivePlayer(p, p.getMaxHealth());
|
||||||
PVP session = PVP.getMatch(p);
|
PVP session = PVP.getMatch(p);
|
||||||
session.onDeathEvent(p);
|
session.onDeathEvent(p);
|
||||||
|
@ -87,6 +87,17 @@ public enum ItemSet {
|
|||||||
//ItemSet.SHARD,
|
//ItemSet.SHARD,
|
||||||
//ItemSet.TOXIN,
|
//ItemSet.TOXIN,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public static final ItemSet[] SLAYER= new ItemSet[]{
|
||||||
|
ItemSet.ASSASSIN,
|
||||||
|
ItemSet.LORASYS,
|
||||||
|
ItemSet.STEALTH,
|
||||||
|
};
|
||||||
|
|
||||||
|
public static final ItemSet[] RANGER2 = new ItemSet[]{
|
||||||
|
ItemSet.SHARD,
|
||||||
|
ItemSet.TOXIN,
|
||||||
|
};
|
||||||
public static final ItemSet[] MELEE = new ItemSet[]{
|
public static final ItemSet[] MELEE = new ItemSet[]{
|
||||||
ItemSet.DAWNTRACKER,
|
ItemSet.DAWNTRACKER,
|
||||||
ItemSet.PANROS,
|
ItemSet.PANROS,
|
||||||
@ -1236,17 +1247,39 @@ public enum ItemSet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isTrinketSet(ItemSet is) {
|
public static boolean isTrinketSet(ItemSet is) {
|
||||||
for (ItemSet tr : TRINKET) {
|
if (is!=null) {
|
||||||
if (is == tr) {
|
for (ItemSet tr : TRINKET) {
|
||||||
return true;
|
if (is == tr) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isAssassinSet(ItemSet is) {
|
public static boolean isAssassinSet(ItemSet is) {
|
||||||
if (is == ItemSet.ASSASSIN || is == ItemSet.LORASYS || is == ItemSet.STEALTH) {
|
if (is!=null) {
|
||||||
return true;
|
for (ItemSet set : SLAYER) {
|
||||||
|
if (is==set) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isRangerSet(ItemSet is) {
|
||||||
|
if (is!=null) {
|
||||||
|
for (ItemSet set : RANGER) {
|
||||||
|
if (is==set) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (ItemSet set : RANGER2) {
|
||||||
|
if (is==set) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -10,16 +10,22 @@ import org.bukkit.Bukkit;
|
|||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
import org.bukkit.ChunkSnapshot;
|
import org.bukkit.ChunkSnapshot;
|
||||||
|
import org.bukkit.Color;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.boss.BarColor;
|
import org.bukkit.boss.BarColor;
|
||||||
import org.bukkit.boss.BarFlag;
|
import org.bukkit.boss.BarFlag;
|
||||||
import org.bukkit.boss.BarStyle;
|
import org.bukkit.boss.BarStyle;
|
||||||
import org.bukkit.boss.BossBar;
|
import org.bukkit.boss.BossBar;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.InventoryView;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.LeatherArmorMeta;
|
||||||
|
import org.bukkit.inventory.meta.PotionMeta;
|
||||||
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
@ -167,6 +173,78 @@ public class PVP {
|
|||||||
for (int i=9;i<36;i++) {
|
for (int i=9;i<36;i++) {
|
||||||
p.getInventory().setItem(i, new ItemStack(Material.AIR));
|
p.getInventory().setItem(i, new ItemStack(Material.AIR));
|
||||||
}
|
}
|
||||||
|
ReplaceGearWithLeatherVersionAndFilterItems(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ReplaceGearWithLeatherVersionAndFilterItems(Player p) {
|
||||||
|
for (int i=0;i<p.getInventory().getSize();i++) {
|
||||||
|
ItemStack item = p.getInventory().getItem(i);
|
||||||
|
if (ItemUtils.isValidItem(item) &&
|
||||||
|
GenericFunctions.isArmor(item)) {
|
||||||
|
String[] split = item.getType().name().split("_");
|
||||||
|
if (split.length==2) {
|
||||||
|
Material newtype = Material.valueOf("LEATHER_"+split[1]);
|
||||||
|
ItemStack newitem = new ItemStack(newtype);
|
||||||
|
newitem.setItemMeta(item.getItemMeta());
|
||||||
|
newitem = GenericFunctions.addHardenedItemBreaks(newitem, 100).clone();
|
||||||
|
p.getInventory().setItem(i, newitem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ItemUtils.isValidItem(item) &&
|
||||||
|
item.hasItemMeta() && item.getItemMeta() instanceof PotionMeta) {
|
||||||
|
PotionMeta meta = (PotionMeta)item.getItemMeta();
|
||||||
|
for (PotionEffect pe : meta.getCustomEffects()) {
|
||||||
|
if (pe.getAmplifier()>4) { //This potion is too strong, and cannot be used in a PvP match.
|
||||||
|
p.getInventory().setItem(i, new ItemStack(Material.AIR));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Use of scrolls should also be forbidden.
|
||||||
|
if (ItemUtils.isValidItem(item) &&
|
||||||
|
item.getType()==Material.PAPER &&
|
||||||
|
item.hasItemMeta() && item.getEnchantments().size()>0) {
|
||||||
|
//This means it's magical paper and is not allowed.
|
||||||
|
p.getInventory().setItem(i, new ItemStack(Material.AIR));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
RemoveAllPlayerBuffs(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RemoveAllPlayerBuffs(Player p) {
|
||||||
|
for (PotionEffect pe : p.getActivePotionEffects()) {
|
||||||
|
GenericFunctions.logAndRemovePotionEffectFromEntity(pe.getType(), p);
|
||||||
|
}
|
||||||
|
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||||
|
pd.vendetta_amt=0;
|
||||||
|
pd.weaponcharges=0;
|
||||||
|
pd.damagepool=0;
|
||||||
|
HashMap<String,Buff> buffs = Buff.getBuffData(p);
|
||||||
|
for (String s : buffs.keySet()) {
|
||||||
|
Buff b = buffs.get(s);
|
||||||
|
Bukkit.getScheduler().runTaskLater(TwosideKeeper.plugin, ()->{
|
||||||
|
b.removeBuff(p, s);
|
||||||
|
}, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ColorGearBasedOnTeam(Player p, int team) {
|
||||||
|
for (int i=0;i<p.getInventory().getSize();i++) {
|
||||||
|
ItemStack item = p.getInventory().getItem(i);
|
||||||
|
if (ItemUtils.isValidItem(item) &&
|
||||||
|
GenericFunctions.isArmor(item) &&
|
||||||
|
item.getType().name().startsWith("LEATHER_")) {
|
||||||
|
Color col = Bukkit.getServer().getItemFactory().getDefaultLeatherColor();
|
||||||
|
if (team==1) {
|
||||||
|
col = Color.fromRGB(66, 134, 244);
|
||||||
|
} else {
|
||||||
|
col = Color.fromRGB(244, 65, 65);
|
||||||
|
}
|
||||||
|
LeatherArmorMeta meta = (LeatherArmorMeta)item.getItemMeta();
|
||||||
|
meta.setColor(col);
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
p.getInventory().setItem(i, item);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void leaveMatch(String s) {
|
private void leaveMatch(String s) {
|
||||||
@ -175,6 +253,11 @@ public class PVP {
|
|||||||
Player p = Bukkit.getPlayer(s);
|
Player p = Bukkit.getPlayer(s);
|
||||||
if (p!=null && p.isOnline()) {
|
if (p!=null && p.isOnline()) {
|
||||||
p.sendMessage(ChatColor.YELLOW+s+" has left the match.");
|
p.sendMessage(ChatColor.YELLOW+s+" has left the match.");
|
||||||
|
PVPPlayer pp = players.get(p.getName());
|
||||||
|
for (int i=0;i<p.getInventory().getSize();i++) {
|
||||||
|
p.getInventory().setItem(i, pp.original_inv.getItem(i));
|
||||||
|
}
|
||||||
|
RemoveAllPlayerBuffs(p);
|
||||||
}
|
}
|
||||||
players.remove(s);
|
players.remove(s);
|
||||||
Bukkit.getScheduler().runTaskLater(TwosideKeeper.plugin,()->{
|
Bukkit.getScheduler().runTaskLater(TwosideKeeper.plugin,()->{
|
||||||
@ -183,6 +266,7 @@ public class PVP {
|
|||||||
if (pl!=null && pl.isValid() && pl.isOnline() && !s.equalsIgnoreCase(ss)) {
|
if (pl!=null && pl.isValid() && pl.isOnline() && !s.equalsIgnoreCase(ss)) {
|
||||||
pl.sendMessage(ChatColor.YELLOW+s+" has left the match. Current Participants: "+ChatColor.YELLOW+getParticipants());
|
pl.sendMessage(ChatColor.YELLOW+s+" has left the match. Current Participants: "+ChatColor.YELLOW+getParticipants());
|
||||||
}
|
}
|
||||||
|
RemoveAllPlayerBuffs(pl);
|
||||||
}
|
}
|
||||||
},2);
|
},2);
|
||||||
}
|
}
|
||||||
@ -240,13 +324,7 @@ public class PVP {
|
|||||||
resetPlayerChoices();
|
resetPlayerChoices();
|
||||||
DisplayRoundChoices();
|
DisplayRoundChoices();
|
||||||
} else {
|
} else {
|
||||||
for (String s : players.keySet()) {
|
return DisbandMatch(ChatColor.YELLOW+"Not enough participants!"+ChatColor.GREEN+" The PVP Match has been disbanded.");
|
||||||
Player pl = Bukkit.getPlayer(s);
|
|
||||||
if (pl!=null && pl.isValid() && pl.isOnline()) {
|
|
||||||
pl.sendMessage(ChatColor.YELLOW+"Not enough participants!"+ChatColor.GREEN+" The PVP Match has been disbanded.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false; //Cancelled.
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//}
|
//}
|
||||||
@ -277,7 +355,7 @@ public class PVP {
|
|||||||
p.sendMessage(ChatColor.YELLOW+style.getTitle()+ChatColor.GREEN+" has been voted as the style for this PVP match!");
|
p.sendMessage(ChatColor.YELLOW+style.getTitle()+ChatColor.GREEN+" has been voted as the style for this PVP match!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (players.size()>=2 && style.name().contains("ROUNDS")) {
|
if (players.size()>2 && style.name().contains("ROUNDS")) {
|
||||||
state = CHOICEENGINE.WAITFORTEAMCHOICES;
|
state = CHOICEENGINE.WAITFORTEAMCHOICES;
|
||||||
isTeamMatch=true;
|
isTeamMatch=true;
|
||||||
lastSelected=TwosideKeeper.getServerTickTime();
|
lastSelected=TwosideKeeper.getServerTickTime();
|
||||||
@ -290,13 +368,7 @@ public class PVP {
|
|||||||
}
|
}
|
||||||
timer=TwosideKeeper.getServerTickTime();
|
timer=TwosideKeeper.getServerTickTime();
|
||||||
} else {
|
} else {
|
||||||
for (String s : players.keySet()) {
|
return DisbandMatch(ChatColor.YELLOW+"Not enough participants!"+ChatColor.GREEN+" The PVP Match has been disbanded.");
|
||||||
Player pl = Bukkit.getPlayer(s);
|
|
||||||
if (pl!=null && pl.isValid() && pl.isOnline()) {
|
|
||||||
pl.sendMessage(ChatColor.YELLOW+"Not enough participants!"+ChatColor.GREEN+" The PVP Match has been disbanded.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false; //Cancelled.
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
@ -305,13 +377,7 @@ public class PVP {
|
|||||||
if (allPlayersHaveChosenATeam() || lastSelected+4000<=TwosideKeeper.getServerTickTime()) {
|
if (allPlayersHaveChosenATeam() || lastSelected+4000<=TwosideKeeper.getServerTickTime()) {
|
||||||
randomlyPickTeams();
|
randomlyPickTeams();
|
||||||
if (teamsAreInvalid()) {
|
if (teamsAreInvalid()) {
|
||||||
for (String s : players.keySet()) {
|
return DisbandMatch("Not enough players in both teams to begin a PvP Match! The match has been cancelled.");
|
||||||
Player p = Bukkit.getPlayer(s);
|
|
||||||
if (p!=null) {
|
|
||||||
p.sendMessage("Not enough players in both teams to begin a PvP Match! The match has been cancelled.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
SendTeamList();
|
SendTeamList();
|
||||||
resetPlayerChoices();
|
resetPlayerChoices();
|
||||||
@ -367,13 +433,7 @@ public class PVP {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (String s : players.keySet()) {
|
return DisbandMatch(ChatColor.YELLOW+"Not enough participants!"+ChatColor.GREEN+" The PVP Match has been disbanded.");
|
||||||
Player pl = Bukkit.getPlayer(s);
|
|
||||||
if (pl!=null && pl.isValid() && pl.isOnline()) {
|
|
||||||
pl.sendMessage(ChatColor.YELLOW+"Not enough participants!"+ChatColor.GREEN+" The PVP Match has been disbanded.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false; //Cancelled.
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
@ -416,6 +476,18 @@ public class PVP {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean DisbandMatch(String msg) {
|
||||||
|
giveBackInventories();
|
||||||
|
for (String s : players.keySet()) {
|
||||||
|
Player pl = Bukkit.getPlayer(s);
|
||||||
|
if (pl!=null && pl.isValid() && pl.isOnline()) {
|
||||||
|
pl.sendMessage(msg);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false; //Cancelled.
|
||||||
|
}
|
||||||
|
|
||||||
private void giveBackInventories() {
|
private void giveBackInventories() {
|
||||||
for (String s : players.keySet()) {
|
for (String s : players.keySet()) {
|
||||||
PVPPlayer pp = players.get(s);
|
PVPPlayer pp = players.get(s);
|
||||||
@ -424,6 +496,10 @@ public class PVP {
|
|||||||
for (int i=0;i<p.getInventory().getSize();i++) {
|
for (int i=0;i<p.getInventory().getSize();i++) {
|
||||||
p.getInventory().setItem(i, pp.original_inv.getItem(i));
|
p.getInventory().setItem(i, pp.original_inv.getItem(i));
|
||||||
}
|
}
|
||||||
|
InventoryView view = p.getOpenInventory();
|
||||||
|
if (view!=null) {
|
||||||
|
view.setCursor(new ItemStack(Material.AIR));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -551,6 +627,7 @@ public class PVP {
|
|||||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||||
p.setHealth(p.getMaxHealth());
|
p.setHealth(p.getMaxHealth());
|
||||||
p.sendMessage(sb.toString());
|
p.sendMessage(sb.toString());
|
||||||
|
RemoveAllPlayerBuffs(p);
|
||||||
pd.customtitle.modifySmallCenterTitle(ChatColor.GREEN+"Next match starting...", 100);
|
pd.customtitle.modifySmallCenterTitle(ChatColor.GREEN+"Next match starting...", 100);
|
||||||
for (int i=0;i<5;i++) {
|
for (int i=0;i<5;i++) {
|
||||||
final int counter = i;
|
final int counter = i;
|
||||||
@ -722,11 +799,15 @@ public class PVP {
|
|||||||
Bukkit.getPlayer(s).setGameMode(GameMode.SURVIVAL);
|
Bukkit.getPlayer(s).setGameMode(GameMode.SURVIVAL);
|
||||||
Player p = Bukkit.getPlayer(s);
|
Player p = Bukkit.getPlayer(s);
|
||||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||||
TwosideKeeper.setPlayerMaxHealth(p, p.getHealth()/p.getMaxHealth(), true);
|
if (p!=null && p.isOnline()) {
|
||||||
p.teleport(pd.locBeforeInstance);
|
TwosideKeeper.setPlayerMaxHealth(p, p.getHealth()/p.getMaxHealth(), true);
|
||||||
pd.lastplayerHitBy=null;
|
if (pd.locBeforeInstance!=null) {
|
||||||
pd.locBeforeInstance=null;
|
p.teleport(pd.locBeforeInstance);
|
||||||
GenericFunctions.RevivePlayer(p, p.getMaxHealth());
|
}
|
||||||
|
pd.lastplayerHitBy=null;
|
||||||
|
pd.locBeforeInstance=null;
|
||||||
|
GenericFunctions.RevivePlayer(p, p.getMaxHealth());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, 5);
|
}, 5);
|
||||||
}
|
}
|
||||||
@ -979,17 +1060,17 @@ public class PVP {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeInactivePlayers() {
|
public void removeInactivePlayers() {
|
||||||
String removedPlayer = null;
|
String removedPlayer = null;
|
||||||
for (String s : players.keySet()) {
|
for (String s : players.keySet()) {
|
||||||
Player p = Bukkit.getPlayer(s);
|
Player p = Bukkit.getPlayer(s);
|
||||||
if (p==null || !p.isOnline()) {
|
if (p==null || !p.isOnline()) {
|
||||||
PVPPlayer pp = players.get(removedPlayer);
|
PVPPlayer pp = players.get(removedPlayer);
|
||||||
for (int i=0;i<p.getInventory().getSize();i++) {
|
/*for (int i=0;i<p.getInventory().getSize();i++) {
|
||||||
if (ItemUtils.isValidItem(pp.original_inv.getItem(i))) {
|
if (ItemUtils.isValidItem(pp.original_inv.getItem(i))) {
|
||||||
p.getInventory().setItem(i, pp.original_inv.getItem(i));
|
p.getInventory().setItem(i, pp.original_inv.getItem(i));
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
removedPlayer = s;
|
removedPlayer = s;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1233,8 +1314,10 @@ public class PVP {
|
|||||||
sb.append("\n");
|
sb.append("\n");
|
||||||
for (String s : players.keySet()) {
|
for (String s : players.keySet()) {
|
||||||
Player p = Bukkit.getPlayer(s);
|
Player p = Bukkit.getPlayer(s);
|
||||||
|
PVPPlayer pp = players.get(s);
|
||||||
if (p!=null) {
|
if (p!=null) {
|
||||||
p.sendMessage(sb.toString());
|
p.sendMessage(sb.toString());
|
||||||
|
ColorGearBasedOnTeam(p,pp.team);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1443,6 +1526,7 @@ public class PVP {
|
|||||||
myself.isAlive=true;
|
myself.isAlive=true;
|
||||||
p.setGameMode(GameMode.SURVIVAL);
|
p.setGameMode(GameMode.SURVIVAL);
|
||||||
Location myLoc = p.getLocation().clone();
|
Location myLoc = p.getLocation().clone();
|
||||||
|
RemoveAllPlayerBuffs(p);
|
||||||
//myLoc.setY(p.getLocation().getChunk().getChunkSnapshot().getHighestBlockYAt(Math.floorMod(p.getLocation().getBlockX(),16), Math.floorMod(p.getLocation().getBlockZ(),16)));
|
//myLoc.setY(p.getLocation().getChunk().getChunkSnapshot().getHighestBlockYAt(Math.floorMod(p.getLocation().getBlockX(),16), Math.floorMod(p.getLocation().getBlockZ(),16)));
|
||||||
if (currentArena==null) {
|
if (currentArena==null) {
|
||||||
p.teleport(myself.startingLoc.add(Math.random()*32-16,0,Math.random()*32-16));
|
p.teleport(myself.startingLoc.add(Math.random()*32-16,0,Math.random()*32-16));
|
||||||
@ -1467,10 +1551,45 @@ public class PVP {
|
|||||||
p.setGameMode(GameMode.SPECTATOR);
|
p.setGameMode(GameMode.SPECTATOR);
|
||||||
p.setFallDistance(0.0f);
|
p.setFallDistance(0.0f);
|
||||||
p.setSpectatorTarget(Bukkit.getPlayer(killedByPlayer));
|
p.setSpectatorTarget(Bukkit.getPlayer(killedByPlayer));
|
||||||
p.sendMessage(" Killed by "+ChatColor.RED+killedByPlayer+ChatColor.RESET+".");
|
StringBuilder sb = new StringBuilder(" Killed by ");
|
||||||
|
StringBuilder sb2 = new StringBuilder(" Killed ");
|
||||||
|
sb.append(ChatColor.RED);
|
||||||
|
sb.append(killedByPlayer);
|
||||||
|
sb.append(ChatColor.RESET);
|
||||||
|
sb2.append(ChatColor.GREEN);
|
||||||
|
sb2.append(p.getName());
|
||||||
|
sb2.append(ChatColor.RESET);
|
||||||
|
if (pd.lastPVPHitDamage>0) {
|
||||||
|
DecimalFormat df = new DecimalFormat("0.00");
|
||||||
|
sb.append(" for ");
|
||||||
|
sb.append(ChatColor.RED);
|
||||||
|
sb.append(df.format(pd.lastPVPHitDamage));
|
||||||
|
sb.append(ChatColor.RESET);
|
||||||
|
sb.append(" damage");
|
||||||
|
sb2.append(" for ");
|
||||||
|
sb2.append(ChatColor.RED);
|
||||||
|
sb2.append(df.format(pd.lastPVPHitDamage));
|
||||||
|
sb2.append(ChatColor.RESET);
|
||||||
|
sb2.append(" damage");
|
||||||
|
}
|
||||||
|
if (pd.lastPVPHitReason!=null) {
|
||||||
|
sb.append(" (");
|
||||||
|
sb.append(pd.lastPVPHitReason);
|
||||||
|
sb.append(").");
|
||||||
|
sb2.append(" (");
|
||||||
|
sb2.append(pd.lastPVPHitReason);
|
||||||
|
sb2.append(").");
|
||||||
|
} else {
|
||||||
|
sb.append(".");
|
||||||
|
sb2.append(".");
|
||||||
|
}
|
||||||
|
p.sendMessage(sb.toString());
|
||||||
Player killerp = Bukkit.getPlayer(pd.lastplayerHitBy);
|
Player killerp = Bukkit.getPlayer(pd.lastplayerHitBy);
|
||||||
if (killerp!=null) {
|
if (killerp!=null) {
|
||||||
killerp.sendMessage(" Killed "+ChatColor.GREEN+p.getName()+ChatColor.RESET+".");
|
killerp.sendMessage(sb2.toString());
|
||||||
|
PlayerStructure killerpd = PlayerStructure.GetPlayerStructure(killerp);
|
||||||
|
killerpd.damagepool=0;
|
||||||
|
killerpd.customtitle.update();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (players.containsKey(p.getName())) {
|
if (players.containsKey(p.getName())) {
|
||||||
|
@ -178,6 +178,8 @@ public class PlayerStructure {
|
|||||||
public Location playerLocRef=null;
|
public Location playerLocRef=null;
|
||||||
public boolean freshBlood=true;
|
public boolean freshBlood=true;
|
||||||
public boolean firstPVPMatch=true;
|
public boolean firstPVPMatch=true;
|
||||||
|
public String lastPVPHitReason="";
|
||||||
|
public double lastPVPHitDamage=0;
|
||||||
/*State 1
|
/*State 1
|
||||||
* 1: Best of 3 Rounds
|
* 1: Best of 3 Rounds
|
||||||
* 2: Best of 5 Rounds
|
* 2: Best of 5 Rounds
|
||||||
|
@ -173,6 +173,7 @@ import org.bukkit.event.world.WorldSaveEvent;
|
|||||||
import org.bukkit.generator.ChunkGenerator;
|
import org.bukkit.generator.ChunkGenerator;
|
||||||
import org.bukkit.inventory.EquipmentSlot;
|
import org.bukkit.inventory.EquipmentSlot;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.InventoryView;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.Recipe;
|
import org.bukkit.inventory.Recipe;
|
||||||
import org.bukkit.inventory.ShapedRecipe;
|
import org.bukkit.inventory.ShapedRecipe;
|
||||||
@ -3546,12 +3547,15 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
|
|
||||||
PVP session = PVP.getMatch(p);
|
PVP session = PVP.getMatch(p);
|
||||||
if (session!=null) {
|
if (session!=null) {
|
||||||
PVPPlayer pp = session.players.get(p);
|
PVPPlayer pp = session.players.get(p.getName());
|
||||||
for (int i=0;i<p.getInventory().getSize();i++) {
|
for (int i=0;i<p.getInventory().getSize();i++) {
|
||||||
if (ItemUtils.isValidItem(pp.original_inv.getItem(i))) {
|
p.getInventory().setItem(i, pp.original_inv.getItem(i));
|
||||||
p.getInventory().setItem(i, pp.original_inv.getItem(i));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
InventoryView view = p.getOpenInventory();
|
||||||
|
if (view!=null) {
|
||||||
|
view.setCursor(new ItemStack(Material.AIR));
|
||||||
|
}
|
||||||
|
//session.removeInactivePlayers();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Bukkit.getScheduler().scheduleSyncDelayedTask(this, new ShutdownServerForUpdate(),5);
|
//Bukkit.getScheduler().scheduleSyncDelayedTask(this, new ShutdownServerForUpdate(),5);
|
||||||
@ -4859,7 +4863,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ev.getAction()==Action.RIGHT_CLICK_AIR || (ev.getPlayer().isSneaking() && ev.getAction()==Action.RIGHT_CLICK_AIR) || (ev.getPlayer().isSneaking() && ev.getAction()==Action.RIGHT_CLICK_BLOCK && !GenericFunctions.isDumpableContainer(ev.getClickedBlock().getType()))) {
|
if ((ev.getAction()==Action.RIGHT_CLICK_AIR || (ev.getPlayer().isSneaking() && ev.getAction()==Action.RIGHT_CLICK_AIR) || (ev.getPlayer().isSneaking() && ev.getAction()==Action.RIGHT_CLICK_BLOCK && !GenericFunctions.isDumpableContainer(ev.getClickedBlock().getType()))) && !PVP.isPvPing(ev.getPlayer())) {
|
||||||
if (ev.getPlayer().getInventory().getItemInMainHand().hasItemMeta() &&
|
if (ev.getPlayer().getInventory().getItemInMainHand().hasItemMeta() &&
|
||||||
ev.getPlayer().getInventory().getItemInMainHand().getItemMeta().hasLore() &&
|
ev.getPlayer().getInventory().getItemInMainHand().getItemMeta().hasLore() &&
|
||||||
ev.getPlayer().getInventory().getItemInMainHand().getItemMeta().getLore().size()>=4 &&
|
ev.getPlayer().getInventory().getItemInMainHand().getItemMeta().getLore().size()>=4 &&
|
||||||
@ -4895,7 +4899,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
if (ev.getPlayer().isSneaking() && ev.getAction()==Action.RIGHT_CLICK_BLOCK && GenericFunctions.isDumpableContainer(ev.getClickedBlock().getType())) {
|
if (ev.getPlayer().isSneaking() && ev.getAction()==Action.RIGHT_CLICK_BLOCK && GenericFunctions.isDumpableContainer(ev.getClickedBlock().getType()) && !PVP.isPvPing(ev.getPlayer())) {
|
||||||
//This is an attempt to insert an item cube into a container. See what item cube we're holding.
|
//This is an attempt to insert an item cube into a container. See what item cube we're holding.
|
||||||
if (ev.getPlayer().getInventory().getItemInMainHand().hasItemMeta() &&
|
if (ev.getPlayer().getInventory().getItemInMainHand().hasItemMeta() &&
|
||||||
ev.getPlayer().getInventory().getItemInMainHand().getItemMeta().hasLore() &&
|
ev.getPlayer().getInventory().getItemInMainHand().getItemMeta().hasLore() &&
|
||||||
@ -5699,7 +5703,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
public void onPlayerDeath(PlayerDeathEvent ev) {
|
public void onPlayerDeath(PlayerDeathEvent ev) {
|
||||||
//Modify the death message. This is a fix for getting rid of the healthbar from the player name.
|
//Modify the death message. This is a fix for getting rid of the healthbar from the player name.
|
||||||
final Player p = ev.getEntity();
|
final Player p = ev.getEntity();
|
||||||
if (!p.getWorld().getName().contains("Instance")) {
|
if (!p.getWorld().getName().contains("Instance") && !PVP.isPvPing(p)) {
|
||||||
if (!DeathManager.deathStructureExists(p)) {
|
if (!DeathManager.deathStructureExists(p)) {
|
||||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||||
pd.playermode_on_death=pd.lastmode;
|
pd.playermode_on_death=pd.lastmode;
|
||||||
@ -6471,6 +6475,10 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
|
if (PVP.isPvPing(ev.getPlayer())) {
|
||||||
|
ev.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
ItemSet.updateItemSets(ev.getPlayer());
|
ItemSet.updateItemSets(ev.getPlayer());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -6868,7 +6876,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
|
|
||||||
//Check for a right-click for a Bauble Pouch.
|
//Check for a right-click for a Bauble Pouch.
|
||||||
if (ev.getClick()==ClickType.RIGHT && ((ev.getInventory().getType()!=InventoryType.WORKBENCH && ev.getRawSlot()>=0) ||
|
if (ev.getClick()==ClickType.RIGHT && ((ev.getInventory().getType()!=InventoryType.WORKBENCH && ev.getRawSlot()>=0) ||
|
||||||
(ev.getInventory().getType()==InventoryType.WORKBENCH && ev.getRawSlot()>9))) {
|
(ev.getInventory().getType()==InventoryType.WORKBENCH && ev.getRawSlot()>9)) && !PVP.isPvPing((Player)ev.getWhoClicked())) {
|
||||||
ItemStack item = ev.getCurrentItem();
|
ItemStack item = ev.getCurrentItem();
|
||||||
if (BaublePouch.isBaublePouch(item)) {
|
if (BaublePouch.isBaublePouch(item)) {
|
||||||
BaublePouch.openBaublePouch((Player)ev.getWhoClicked(), item);
|
BaublePouch.openBaublePouch((Player)ev.getWhoClicked(), item);
|
||||||
@ -7316,7 +7324,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
log("Inventory click.",5);
|
log("Inventory click.",5);
|
||||||
//WARNING! This only happens for ITEM CUBES! Do not add other items in here!
|
//WARNING! This only happens for ITEM CUBES! Do not add other items in here!
|
||||||
if (((ev.getInventory().getType()!=InventoryType.WORKBENCH && ev.getRawSlot()>=0) ||
|
if (((ev.getInventory().getType()!=InventoryType.WORKBENCH && ev.getRawSlot()>=0) ||
|
||||||
(ev.getInventory().getType()==InventoryType.WORKBENCH && ev.getRawSlot()>9)) && ev.isRightClick() && ev.getCurrentItem()!=null && ev.getCurrentItem().getAmount()==1) {
|
(ev.getInventory().getType()==InventoryType.WORKBENCH && ev.getRawSlot()>9)) && ev.isRightClick() && ev.getCurrentItem()!=null && ev.getCurrentItem().getAmount()==1 &&
|
||||||
|
!PVP.isPvPing((Player)ev.getWhoClicked())) {
|
||||||
log("Clicked Item: "+ev.getCurrentItem().toString(),5);
|
log("Clicked Item: "+ev.getCurrentItem().toString(),5);
|
||||||
if (ev.getCurrentItem().hasItemMeta()) {
|
if (ev.getCurrentItem().hasItemMeta()) {
|
||||||
log("Item Meta: "+ev.getCurrentItem().getItemMeta().toString(),5);
|
log("Item Meta: "+ev.getCurrentItem().getItemMeta().toString(),5);
|
||||||
@ -9834,6 +9843,10 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Player p = ev.getPlayer();
|
Player p = ev.getPlayer();
|
||||||
|
if (PVP.isPvPing(p)) {
|
||||||
|
ev.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
//log("Item Right now: "+ev.getItem().getItemStack(),0);
|
//log("Item Right now: "+ev.getItem().getItemStack(),0);
|
||||||
long time = System.nanoTime();
|
long time = System.nanoTime();
|
||||||
long totaltime = System.nanoTime();
|
long totaltime = System.nanoTime();
|
||||||
@ -9846,6 +9859,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
//TwosideKeeper.log(" New Stack is: "+newstack,0);
|
//TwosideKeeper.log(" New Stack is: "+newstack,0);
|
||||||
if (newstack==null || newstack.getType()==Material.AIR) {
|
if (newstack==null || newstack.getType()==Material.AIR) {
|
||||||
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(ev.getItem().getItemStack()));
|
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(ev.getItem().getItemStack()));
|
||||||
|
PlayPickupParticle(ev.getPlayer(),ev.getItem());
|
||||||
if (ev.getRemaining()>0) {
|
if (ev.getRemaining()>0) {
|
||||||
Item it = ev.getItem();
|
Item it = ev.getItem();
|
||||||
it.getItemStack().setAmount(ev.getRemaining());
|
it.getItemStack().setAmount(ev.getRemaining());
|
||||||
|
@ -826,8 +826,14 @@ final public class runServerHeartbeat implements Runnable {
|
|||||||
} else {
|
} else {
|
||||||
p.getScoreboard().getTeam(p.getName().toLowerCase()).setPrefix(ChatColor.RED+ChatColor.stripColor(GenericFunctions.PlayerModePrefix(p)));
|
p.getScoreboard().getTeam(p.getName().toLowerCase()).setPrefix(ChatColor.RED+ChatColor.stripColor(GenericFunctions.PlayerModePrefix(p)));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
p.getScoreboard().getTeam(p.getName().toLowerCase()).setPrefix(GenericFunctions.PlayerModePrefix(p));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
p.getScoreboard().getTeam(p.getName().toLowerCase()).setPrefix(GenericFunctions.PlayerModePrefix(p));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
p.getScoreboard().getTeam(p.getName().toLowerCase()).setPrefix(GenericFunctions.PlayerModePrefix(p));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
p.getScoreboard().getTeam(p.getName().toLowerCase()).setPrefix(GenericFunctions.PlayerModePrefix(p));
|
p.getScoreboard().getTeam(p.getName().toLowerCase()).setPrefix(GenericFunctions.PlayerModePrefix(p));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user