Added tank buffs. Minor bugfixes. Improvements.
This commit is contained in:
parent
28d1bca571
commit
245b3f5e07
Binary file not shown.
@ -1,6 +1,6 @@
|
||||
name: TwosideKeeper
|
||||
main: sig.plugin.TwosideKeeper.TwosideKeeper
|
||||
version: 3.11.1f
|
||||
version: 3.11.1g
|
||||
loadbefore: [aPlugin]
|
||||
commands:
|
||||
money:
|
||||
|
@ -2029,11 +2029,15 @@ public class CustomDamage {
|
||||
if (TwosideKeeper.chargezombies.size()<16) {
|
||||
addChargeZombieToList(m);
|
||||
}
|
||||
addToCustomStructures(m);
|
||||
addToCustomStructures(m,true);
|
||||
addMonsterToTargetList(m,p);
|
||||
}
|
||||
|
||||
public static void addToCustomStructures(LivingEntity m) {
|
||||
addToCustomStructures(m,false);
|
||||
}
|
||||
|
||||
public static void addToCustomStructures(LivingEntity m, boolean alreadyExisting) {
|
||||
removeStraySpiderMinions(m);
|
||||
|
||||
|
||||
@ -2042,15 +2046,16 @@ public class CustomDamage {
|
||||
if (addBlazeToList(m)) {return;}
|
||||
if (addWitherToList(m)) {return;}
|
||||
|
||||
|
||||
if (m instanceof Skeleton) {
|
||||
if (Math.random()<=0.5) {
|
||||
if (addKnighttoList(m)) {return;} else {
|
||||
addSniperSkeletontoList(m);
|
||||
}
|
||||
} else {
|
||||
if (addSniperSkeletontoList(m)) {return;} else {
|
||||
addKnighttoList(m);
|
||||
if (!alreadyExisting) {
|
||||
if (m instanceof Skeleton) {
|
||||
if (Math.random()<=0.5) {
|
||||
if (addKnighttoList(m)) {return;} else {
|
||||
addSniperSkeletontoList(m);
|
||||
}
|
||||
} else {
|
||||
if (addSniperSkeletontoList(m)) {return;} else {
|
||||
addKnighttoList(m);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2487,6 +2492,9 @@ public class CustomDamage {
|
||||
if (ItemSet.HasSetBonusBasedOnSetBonusCount(p, ItemSet.VIXEN, 4)) {
|
||||
p.setHealth(Math.min(p.getHealth()+(p.getMaxHealth()*0.1), p.getMaxHealth()));
|
||||
}
|
||||
if (PlayerMode.getPlayerMode(p)==PlayerMode.DEFENDER) {
|
||||
GenericFunctions.HealEntity(p, p.getMaxHealth()*0.05);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -82,6 +82,7 @@ import sig.plugin.TwosideKeeper.Recipes;
|
||||
import sig.plugin.TwosideKeeper.Room;
|
||||
import sig.plugin.TwosideKeeper.TwosideKeeper;
|
||||
import sig.plugin.TwosideKeeper.TwosideKeeperAPI;
|
||||
import sig.plugin.TwosideKeeper.aPluginAPIWrapper;
|
||||
import sig.plugin.TwosideKeeper.runServerHeartbeat;
|
||||
import sig.plugin.TwosideKeeper.Boss.EliteGuardian;
|
||||
import sig.plugin.TwosideKeeper.Boss.EliteZombie;
|
||||
@ -271,7 +272,7 @@ public class GenericFunctions {
|
||||
public static ItemStack addHardenedItemBreaks(ItemStack item, int breaks, boolean addname) {
|
||||
if (isHardenedItem(item)) {
|
||||
//We can just modify the amount of breaks.
|
||||
TwosideKeeper.log("We got here.",2);
|
||||
//TwosideKeeper.log("We got here.",2);
|
||||
return modifyBreaks(item, getHardenedItemBreaks(item)+breaks,false);
|
||||
} else {
|
||||
//We need to add a new line in regards to making this item hardened. Two lines if it's armor.
|
||||
@ -2591,7 +2592,7 @@ public class GenericFunctions {
|
||||
int mendinglv = item.getEnchantmentLevel(Enchantment.MENDING);
|
||||
int infinitylv = item.getEnchantmentLevel(Enchantment.ARROW_INFINITE);
|
||||
//TwosideKeeper.log("["+TwosideKeeper.getServerTickTime()+"] Testing Mending...", 1);
|
||||
if (mendinglv>0 && Math.random()<=0.00048828125*(isHarvestingTool(item)?0.75:1d)) {
|
||||
if (mendinglv>0 && Math.random()<=0.00048828125*(isHarvestingTool(item)?0.75:1d)*(aPluginAPIWrapper.isAFK(p)?5d:1d)) {
|
||||
//TwosideKeeper.log("Knockoff!", 0);
|
||||
mendinglv--;
|
||||
if (mendinglv>0) {
|
||||
@ -2601,7 +2602,7 @@ public class GenericFunctions {
|
||||
}
|
||||
p.sendMessage(ChatColor.DARK_AQUA+"A level of "+ChatColor.YELLOW+"Mending"+ChatColor.DARK_AQUA+" has been knocked off of your "+((item.hasItemMeta() && item.getItemMeta().hasDisplayName())?item.getItemMeta().getDisplayName():UserFriendlyMaterialName(item)));
|
||||
}
|
||||
if (infinitylv>0 && Math.random()<=0.0015*(isHarvestingTool(item)?0.75:1d)) {
|
||||
if (infinitylv>0 && Math.random()<=0.0015*(isHarvestingTool(item)?0.75:1d)*(aPluginAPIWrapper.isAFK(p)?5d:1d)) {
|
||||
infinitylv--;
|
||||
if (infinitylv>0) {
|
||||
item.addUnsafeEnchantment(Enchantment.ARROW_INFINITE, infinitylv);
|
||||
|
@ -63,8 +63,8 @@ public enum PlayerMode {
|
||||
+ ChatColor.WHITE+"->Barbarians deal 20% more damage for every 20% of an enemy's missing health.\n"
|
||||
+ ChatColor.GRAY+"->Barbarians gain Bonus Lifesteal stacks as they hit enemies. Each stack increases Lifesteal by 1%, up to a cap of 100% extra Lifesteal. The stacks refresh every hit, but wear off after 5 seconds.\n"
|
||||
+ ChatColor.WHITE+"->Barbarians do not instantly take full damage when hit. Instead, the HP is stored in a 'Damage Pool' and distributed every second.\n"
|
||||
+ ChatColor.GRAY+"->If Barbarians have points in their 'Damage Pool', they will take up to 15 damage (+3% of their damage pool) every second. The amount taken goes down by wearing Barbarian gear.\n"
|
||||
+ ChatColor.WHITE+"->When a monster is killed by a Barbarian, the amount of remaining damage in their Damage Pool is divided by 4.\n"
|
||||
+ ChatColor.GRAY+"->If Barbarians have points in their 'Damage Pool', they will take up to 15 damage (+2% of their damage pool) every second. The amount taken goes down by wearing Barbarian gear.\n"
|
||||
+ ChatColor.WHITE+"->When a monster is killed by a Barbarian, the amount of remaining damage in their Damage Pool is divided by 75%. If an ally kills one, the damage pool is divided by 33%\n"
|
||||
+ ChatColor.GRAY+"->Extra health from Lifestealing that is not used for healing your health will heal up your Damage Pool instead."
|
||||
+ ChatColor.WHITE+"->Barbarians automatically consume Rotten Flesh and Spider Eyes that are picked up. Each one heals for 1% of their health. Rotten Flesh and Spider Eyes in a Barbarian's inventory will automatically be consumed as the Barbarian gets hungry.\n"
|
||||
+ ChatColor.GRAY+"->Barbarians build up Weapon Charges in two ways: +1 Charge for attacking an enemy with the main hand weapon and +2 Charges for taking damage.\n"
|
||||
|
@ -250,6 +250,7 @@ public class PVP {
|
||||
case FIGHTING:{
|
||||
removeInactivePlayers();
|
||||
if (conditionsToWin() || notEnoughPlayers()) {
|
||||
computeWinner();
|
||||
announceWinner();
|
||||
return false;
|
||||
}
|
||||
@ -258,6 +259,18 @@ public class PVP {
|
||||
return true;
|
||||
}
|
||||
|
||||
private void computeWinner() {
|
||||
if (scorematch) {
|
||||
if (team1score>team2score) {
|
||||
for (String s : getPlayersInTeam(2)) {
|
||||
|
||||
}
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean conditionsToWin() {
|
||||
if (scorematch) {
|
||||
return (team1score>=scorelimit || team2score>=scorelimit);
|
||||
|
@ -263,6 +263,24 @@ public class PlayerStructure {
|
||||
public boolean dpstrackinglocked=false;
|
||||
public boolean inParkourChallengeRoom=false;
|
||||
public String rewards="";
|
||||
public int actionsPerMinute; //Number of actions made in the past minute.
|
||||
public int distancePerMinute; //Amount of distance covered in the past minute.
|
||||
public int actionRecords=0; //Number of "bad" actions stored on record.
|
||||
public int moveRecords; //Number of move records.
|
||||
public List<Integer> durability = new ArrayList<Integer>(); //Durability amounts used when AFK detecting.
|
||||
public Location leashedLoc; //Last used leash location for AFK detection.
|
||||
public long lastLocationChange=0;
|
||||
public int afkLength = 60;
|
||||
public boolean isAFKState = false;
|
||||
public int unafkLength = 0;
|
||||
|
||||
//Prevent Automatic AFK moving the camera just to avoid the system.
|
||||
public long lastAdjustmentReading = 0; //When the last adjustment reading started.
|
||||
public int adjustmentReading = 0; //Number of adjustments this timing session.
|
||||
public int readingBroken = 0; //Number of readings broken.
|
||||
public double averageAdjustmentsMade = 0; //Avg Number of adjustments made.
|
||||
public int averageAdjustmentsMadeCount = 0; //Stored number of adjustments used in average.
|
||||
public boolean tooConsistentAdjustments = false; //Adjustments are too consistent.
|
||||
|
||||
//Needs the instance of the player object to get all other info. Only to be called at the beginning.
|
||||
@SuppressWarnings("deprecation")
|
||||
@ -324,6 +342,7 @@ public class PlayerStructure {
|
||||
this.equipweapons=true;
|
||||
this.equiparmor=true;
|
||||
this.customtitle = new AdvancedTitle(p);
|
||||
this.lastLocationChange = TwosideKeeper.getServerTickTime();
|
||||
//Set defaults first, in case this is a new user.
|
||||
loadConfig();
|
||||
//p.getInventory().addItem(new ItemStack(Material.PORTAL));
|
||||
@ -495,6 +514,10 @@ public class PlayerStructure {
|
||||
workable.set("lastparkourDailyChallenge", lastparkourDailyChallenge);
|
||||
workable.set("rewards", rewards);
|
||||
workable.set("isFirstReward", isFirstReward);
|
||||
workable.set("afkLength", afkLength);
|
||||
workable.set("averageAdjustmentsMadeCount", averageAdjustmentsMadeCount);
|
||||
workable.set("averageAdjustmentsMade", averageAdjustmentsMade);
|
||||
workable.set("tooConsistentAdjustments", tooConsistentAdjustments);
|
||||
int buffcounter=0;
|
||||
for (String key : buffs.keySet()) {
|
||||
Buff b = buffs.get(key);
|
||||
@ -607,6 +630,10 @@ public class PlayerStructure {
|
||||
workable.addDefault("lastparkourDailyChallenge", lastparkourDailyChallenge);
|
||||
workable.addDefault("rewards", rewards);
|
||||
workable.addDefault("isFirstReward", isFirstReward);
|
||||
workable.addDefault("afkLength",afkLength);
|
||||
workable.addDefault("averageAdjustmentsMadeCount",averageAdjustmentsMadeCount);
|
||||
workable.addDefault("averageAdjustmentsMade",averageAdjustmentsMade);
|
||||
workable.addDefault("tooConsistentAdjustments",tooConsistentAdjustments);
|
||||
|
||||
workable.options().copyDefaults();
|
||||
|
||||
@ -676,6 +703,10 @@ public class PlayerStructure {
|
||||
this.lastparkourDailyChallenge = workable.getLong("lastparkourDailyChallenge");
|
||||
this.rewards = workable.getString("rewards");
|
||||
this.isFirstReward = workable.getBoolean("isFirstReward");
|
||||
this.afkLength = workable.getInt("afkLength");
|
||||
this.averageAdjustmentsMadeCount = workable.getInt("averageAdjustmentsMadeCount");
|
||||
this.averageAdjustmentsMade = workable.getDouble("averageAdjustmentsMade");
|
||||
this.tooConsistentAdjustments = workable.getBoolean("tooConsistentAdjustments");
|
||||
String tempworld = workable.getString("restartloc_world");
|
||||
if (!workable.getString("instanceloc_world").equalsIgnoreCase("null")) {
|
||||
locBeforeInstance = new Location(
|
||||
@ -744,4 +775,26 @@ public class PlayerStructure {
|
||||
public static int getPlayerNegativeHash(Player p) {
|
||||
return Math.min(p.getUniqueId().hashCode(), -p.getUniqueId().hashCode());
|
||||
}
|
||||
|
||||
public static void addToActionQueue(Player p, String action) {
|
||||
//Actions:
|
||||
/* BREAK - Break a block.
|
||||
* PLACE - Place a block.
|
||||
* FISH - Use fishing rod.
|
||||
* INTERACT - Interact.
|
||||
*/
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
if (pd.leashedLoc.getWorld().equals(p.getLocation().getWorld()) && p.getLocation().distanceSquared(pd.leashedLoc)<9) {
|
||||
pd.actionRecords++;
|
||||
} else {
|
||||
pd.actionRecords=1;
|
||||
}
|
||||
}
|
||||
|
||||
public static double getAFKMultiplier(Player p) { //Returns how harsh the AFK'ing multiplier is on a player.
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
double mult = 1;
|
||||
mult += Math.min(Math.pow(pd.actionRecords, 1.25)-1,1000);
|
||||
return mult;
|
||||
}
|
||||
}
|
||||
|
@ -819,6 +819,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
ed.setVelocity(p.getLocation().getDirection().multiply(2.0f));
|
||||
ed.teleport(ed.getLocation().setDirection(p.getLocation().getDirection()));
|
||||
}*/
|
||||
SetupAndModifyDurabilities(p);
|
||||
TwosideKeeper.HeartbeatLogger.AddEntry(ChatColor.LIGHT_PURPLE+"Anti-AFK Modifiers", (int)(System.nanoTime()-totaltime));totaltime=System.nanoTime();
|
||||
}
|
||||
TwosideKeeper.HeartbeatLogger.AddEntry("Player Cycle Handling", (int)(System.nanoTime()-time));time=System.nanoTime();
|
||||
for (TemporaryLava tl : temporary_lava_list) {
|
||||
@ -969,7 +971,6 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
TwosideKeeper.log("WARNING! Structure Handling took longer than 1 tick! "+((int)(System.nanoTime()-totaltime)/1000000d)+"ms", 0);
|
||||
}
|
||||
TwosideKeeper.HeartbeatLogger.AddEntry(ChatColor.LIGHT_PURPLE+"Total Structure Handling", (int)(System.nanoTime()-totaltime));totaltime=System.nanoTime();
|
||||
|
||||
}
|
||||
|
||||
private boolean NotifyBufferLimit(String operation, long totaltime) {
|
||||
@ -1040,6 +1041,58 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetupAndModifyDurabilities(Player p) {
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
if (aPluginAPIWrapper.isAFK(p)) {
|
||||
pd.actionRecords++;
|
||||
if (pd.durability.size()!=9) {
|
||||
PopulateDurabilityValues(p);
|
||||
} else {
|
||||
//See if durability values are different. If so, multiply the difference.
|
||||
List<Integer> diff = GetDifferences(p);
|
||||
for (int i=0;i<9;i++) {
|
||||
if (diff.get(i)>0) {
|
||||
aPlugin.API.damageItem(p, p.getInventory().getItem(i), (int)(diff.get(i)*PlayerStructure.getAFKMultiplier(p)));
|
||||
TwosideKeeper.log(" Damaged item slot"+i+" an extra "+((int)(diff.get(i)*PlayerStructure.getAFKMultiplier(p)))+" damage due to AFK state.", 2);
|
||||
}
|
||||
}
|
||||
PopulateDurabilityValues(p);
|
||||
}
|
||||
} else {
|
||||
if (pd.actionRecords>0) {
|
||||
pd.actionRecords--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static List<Integer> GetDifferences(Player p) {
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
List<Integer> diffs = new ArrayList<Integer>();
|
||||
for (int i=0;i<9;i++) {
|
||||
ItemStack item = p.getInventory().getItem(i);
|
||||
if (ItemUtils.isValidItem(item) && GenericFunctions.isEquip(item)) {
|
||||
diffs.add(item.getDurability()-pd.durability.get(i));
|
||||
if (item.getDurability()-pd.durability.get(i)>0) {
|
||||
TwosideKeeper.log("Difference dected in item slot #"+i+" for Player "+p.getName(), 2);
|
||||
}
|
||||
} else {
|
||||
diffs.add(0);
|
||||
}
|
||||
}
|
||||
return diffs;
|
||||
}
|
||||
private static void PopulateDurabilityValues(Player p) {
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
pd.durability.clear();
|
||||
for (int i=0;i<9;i++) {
|
||||
ItemStack item = p.getInventory().getItem(i);
|
||||
if (ItemUtils.isValidItem(item) && GenericFunctions.isEquip(item)) {
|
||||
pd.durability.add((int)item.getDurability());
|
||||
} else {
|
||||
pd.durability.add(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
public static double GetNaturalRegen(Player p) {
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
if (PlayerMode.getPlayerMode(p)==PlayerMode.SLAYER) {
|
||||
@ -1287,7 +1340,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
/*MonsterTemplate newtemp = new MonsterTemplate(new File(filesave+"/monsterdata/KingSlime.md"));
|
||||
int newint = (int)newtemp.getValue("timeToLive");
|
||||
log(Integer.toString(newint),0);*/
|
||||
log(" This is here to change the file size if necessary Kappa Kappa Kappa No Copy-pasterino Kappachino Lulu c: Please update version number. lololol cy@ storm is boosted. This is nice.",5);
|
||||
log(" This is here to change the file size if necessary Kappa Kappa Kappa No Copy-pasterino Kappachino Lulu c: Please update version number. lololol cy@ storm is boosted. This is nice.",5);
|
||||
}
|
||||
|
||||
private static void InitializeBotCommands() {
|
||||
@ -1529,7 +1582,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
sender.sendMessage("Individual Structures for player "+ChatColor.YELLOW+pl.getName()+ChatColor.RESET+":");
|
||||
sender.sendMessage(ChatColor.WHITE+Display("OPE",pd.openeditemcube.size())+Display("DAM",pd.damagedata.breakdownlist.size())+Display("DEA",pd.deathloot.size()));
|
||||
sender.sendMessage(ChatColor.WHITE+Display("HIT",pd.hitlist.size())+Display("ITE",pd.itemcubelist.size())+Display("LAS",pd.lasteffectlist.size()));
|
||||
sender.sendMessage(ChatColor.WHITE+Display("BLO",pd.blockscanlist.size()));
|
||||
sender.sendMessage(ChatColor.WHITE+Display("BLO",pd.blockscanlist.size())+Display("AFK",pd.afkLength)+Display("UAFK",pd.unafkLength));
|
||||
sender.sendMessage(ChatColor.WHITE+Display("AAVG",(int)pd.averageAdjustmentsMade)+Display("AVGC",(int)pd.averageAdjustmentsMadeCount)+Display("ACT",pd.actionRecords));
|
||||
} else {
|
||||
sender.sendMessage("Could not find player "+ChatColor.YELLOW+args[0]+ChatColor.RESET+"!");
|
||||
}
|
||||
@ -2356,6 +2410,9 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
Bukkit.getPlayer(args[1]).sendMessage(ChatColor.GREEN+"You have been given a Daily Challenge Token.");
|
||||
}
|
||||
}break;
|
||||
case "DAMAGEEQUIP":{
|
||||
aPlugin.API.damageItem(p, p.getInventory().getItem(Integer.parseInt(args[1])), 100);
|
||||
}break;
|
||||
case "CHALLENGEREWARDS":{
|
||||
ChallengeReward.provideAwards();
|
||||
}break;
|
||||
@ -3943,6 +4000,10 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
}
|
||||
|
||||
final Player p = ev.getPlayer();
|
||||
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
pd.adjustmentReading++;
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@ -3966,7 +4027,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
|
||||
if ((ev.getAction()==Action.LEFT_CLICK_AIR || ev.getAction()==Action.LEFT_CLICK_BLOCK) && p.isSneaking() &&
|
||||
PlayerMode.getPlayerMode(p)==PlayerMode.BARBARIAN) {
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
//PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
if (pd.weaponcharges>=30) {
|
||||
SoundUtils.playGlobalSound(p.getLocation(), Sound.BLOCK_WOOD_BUTTON_CLICK_ON, 3.0f, 0.6f);
|
||||
//Apply 10 strikes across the field.
|
||||
@ -3988,7 +4049,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
|
||||
if ((ev.getAction()==Action.RIGHT_CLICK_AIR || ev.getAction()==Action.RIGHT_CLICK_BLOCK) && p.isSneaking() &&
|
||||
PlayerMode.getPlayerMode(p)==PlayerMode.BARBARIAN) {
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
//PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
if (pd.weaponcharges>=30) {
|
||||
//Apply Sweep Up Attack.
|
||||
pd.weaponcharges-=30;
|
||||
@ -4028,7 +4089,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
|
||||
//Check for a Hunter's Compass right-click.
|
||||
if ((ev.getAction()==Action.RIGHT_CLICK_AIR || ev.getAction()==Action.RIGHT_CLICK_BLOCK) && GenericFunctions.isHunterCompass(p.getEquipment().getItemInMainHand())) {
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
//PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
if (pd.lastrightclick+100<=getServerTickTime()) {
|
||||
pd.lastrightclick=getServerTickTime();
|
||||
p.sendMessage("Calibrating "+p.getEquipment().getItemInMainHand().getItemMeta().getDisplayName()+ChatColor.WHITE+"...");
|
||||
@ -4087,7 +4148,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
//Rotate Bow Modes.
|
||||
GenericFunctions.logAndRemovePotionEffectFromEntity(PotionEffectType.SLOW,p);
|
||||
BowMode mode = GenericFunctions.getBowMode(p);
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
//PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
if (pd.lastbowmodeswitch+4<TwosideKeeper.getServerTickTime()) {
|
||||
switch (mode) {
|
||||
case CLOSE:{
|
||||
@ -4122,7 +4183,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
//Check for Earth Wave attack.
|
||||
if ((ev.getAction()==Action.RIGHT_CLICK_AIR || ev.getAction()==Action.RIGHT_CLICK_BLOCK) && !p.isOnGround()) {
|
||||
ItemStack weapon = p.getEquipment().getItemInMainHand();
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
//PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
double dmg = 0;
|
||||
if (GenericFunctions.isArtifactEquip(weapon) &&
|
||||
weapon.toString().contains("SPADE")) {
|
||||
@ -4368,13 +4429,13 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
Inventory temp = Bukkit.getServer().createInventory(ev.getPlayer(), size, "Item Cube #"+itemcube_id);
|
||||
openItemCubeInventory(temp);
|
||||
ev.getPlayer().openInventory(temp);
|
||||
PlayerStructure pd = (PlayerStructure) playerdata.get(ev.getPlayer().getUniqueId());
|
||||
//PlayerStructure pd = (PlayerStructure) playerdata.get(ev.getPlayer().getUniqueId());
|
||||
pd.isViewingItemCube=true;
|
||||
SoundUtils.playLocalSound(ev.getPlayer(), Sound.BLOCK_CHEST_OPEN, 1.0f, 1.0f);
|
||||
} else {
|
||||
//ItemCube.displayErrorMessage(ev.getPlayer());
|
||||
ev.getPlayer().openInventory(ItemCube.getViewingItemCubeInventory(itemcube_id, ev.getPlayer()));
|
||||
PlayerStructure pd = (PlayerStructure) playerdata.get(ev.getPlayer().getUniqueId());
|
||||
//PlayerStructure pd = (PlayerStructure) playerdata.get(ev.getPlayer().getUniqueId());
|
||||
pd.isViewingItemCube=true;
|
||||
SoundUtils.playLocalSound(ev.getPlayer(), Sound.BLOCK_CHEST_OPEN, 1.0f, 1.0f);
|
||||
}
|
||||
@ -4463,7 +4524,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
|
||||
//The rest of the hashmap goes back in the original inventory.
|
||||
if (!fit) {
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
//PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
if (pd.usetimer+5<TwosideKeeper.getServerTickTime()) {
|
||||
ev.getPlayer().sendMessage(ChatColor.RED+"Attempted to store your items, not all of them could fit!"+ChatColor.WHITE+" Stored "+ChatColor.AQUA+count+ChatColor.WHITE+" items.");
|
||||
pd.usetimer=TwosideKeeper.getServerTickTime();
|
||||
@ -4724,7 +4785,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
}
|
||||
//Determine if this is a daily challenge sign.
|
||||
if (s.getLine(0).equalsIgnoreCase("-- CHALLENGE --")) {
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
//PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
if (s.getLine(1).equalsIgnoreCase(ChatColor.DARK_RED+"DPS CHALLENGE")) {
|
||||
if (((isHoldingDailyToken(p) || pd.lastuseddailysign+100>TwosideKeeper.getServerTickTime()) && pd.nameoflastdailysign.equalsIgnoreCase(s.getLine(1)))) {
|
||||
new DPSChallengeRoom(p,new DPSRoom(32,32));
|
||||
@ -5644,10 +5705,11 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
@EventHandler(priority=EventPriority.LOW,ignoreCancelled = true)
|
||||
public void togglesprint(PlayerToggleSprintEvent ev) {
|
||||
//log("Toggled: "+ev.isSprinting(),2);
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(ev.getPlayer());
|
||||
if (ev.isSprinting()) {
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(ev.getPlayer());
|
||||
pd.lastsprintcheck=getServerTickTime();
|
||||
}
|
||||
pd.adjustmentReading++;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@ -7039,7 +7101,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
}
|
||||
}
|
||||
}
|
||||
CustomDamage.addToCustomStructures(m);
|
||||
CustomDamage.addToCustomStructures(m,true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -7862,6 +7924,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
public void expEvent(PlayerExpChangeEvent ev) {
|
||||
double val = Math.random();
|
||||
Player p = ev.getPlayer();
|
||||
SetupAndModifyDurabilities(p);
|
||||
log("ExpChange event: "+val,5);
|
||||
int amt = ev.getAmount();
|
||||
int testamt = amt;
|
||||
@ -8002,7 +8065,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
}
|
||||
if (ev.getTarget() instanceof Player &&
|
||||
ev.getEntity() instanceof LivingEntity) {
|
||||
CustomDamage.addToCustomStructures((LivingEntity)ev.getEntity());
|
||||
CustomDamage.addToCustomStructures((LivingEntity)ev.getEntity(),true);
|
||||
CustomMonster cm = CustomMonster.getCustomMonster((LivingEntity)ev.getEntity());
|
||||
if (cm!=null && cm instanceof HellfireGhast) {
|
||||
HellfireGhast hg = (HellfireGhast)cm;
|
||||
@ -8316,6 +8379,18 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
for (Player pl : PartyManager.getPartyMembers(p)) {
|
||||
if (!pl.equals(p)) {
|
||||
if (PlayerMode.getPlayerMode(pl)==PlayerMode.BARBARIAN) {
|
||||
PlayerStructure pdd = PlayerStructure.GetPlayerStructure(pl);
|
||||
pdd.damagepool/=1.5;
|
||||
} else
|
||||
if (PlayerMode.getPlayerMode(pl)==PlayerMode.DEFENDER) {
|
||||
GenericFunctions.HealEntity(pl, pl.getMaxHealth()*0.05);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isSlayer) {
|
||||
int restore_amt = 2;
|
||||
if (ItemSet.meetsSlayerSwordConditions(ItemSet.LORASYS, 18, 2, p)) {
|
||||
@ -8861,9 +8936,17 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
if (ev.getPlayer().isOnGround()) {
|
||||
PlayerStructure pd = (PlayerStructure)playerdata.get(ev.getPlayer().getUniqueId());
|
||||
pd.velocity = new Vector(ev.getFrom().getX(),0,ev.getFrom().getZ()).distanceSquared(new Vector(ev.getTo().getX(),0,ev.getTo().getZ()));
|
||||
if (pd.velocity>=2) {
|
||||
pd.adjustmentReading++;
|
||||
}
|
||||
if (pd.highwinder && pd.target!=null && !pd.target.isDead() && pd.lasthighwinderhit+15<getServerTickTime()) {
|
||||
GenericFunctions.sendActionBarMessage(ev.getPlayer(), drawVelocityBar(pd.velocity,pd.highwinderdmg),true);
|
||||
}
|
||||
} else {
|
||||
if (new Vector(ev.getFrom().getX(),0,ev.getFrom().getZ()).distanceSquared(new Vector(ev.getTo().getX(),0,ev.getTo().getZ()))>=2) {
|
||||
PlayerStructure pd = (PlayerStructure)playerdata.get(ev.getPlayer().getUniqueId());
|
||||
pd.adjustmentReading++;
|
||||
}
|
||||
}
|
||||
if (ItemSet.HasSetBonusBasedOnSetBonusCount(ev.getPlayer(), ItemSet.DANCER, 4)) {
|
||||
PlayerStructure pd = (PlayerStructure)playerdata.get(ev.getPlayer().getUniqueId());
|
||||
@ -8881,18 +8964,12 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
|
||||
@EventHandler(priority=EventPriority.LOW,ignoreCancelled = true)
|
||||
public void onFishEvent(PlayerFishEvent ev) {
|
||||
if (ev.getState().equals(State.CAUGHT_FISH)) {
|
||||
Player p = ev.getPlayer();
|
||||
if (p!=null) {
|
||||
/*if (GenericFunctions.isArtifactEquip(p.getEquipment().getItemInMainHand()) &&
|
||||
GenericFunctions.isArtifactWeapon(p.getEquipment().getItemInMainHand())) {
|
||||
AwakenedArtifact.addPotentialEXP(p.getEquipment().getItemInMainHand(), 12, p);
|
||||
}*/
|
||||
if (GenericFunctions.isWeapon(p.getEquipment().getItemInMainHand())) {
|
||||
GenericFunctions.RemovePermEnchantmentChance(p.getEquipment().getItemInMainHand(), p);
|
||||
}
|
||||
}
|
||||
}
|
||||
Player p = ev.getPlayer();
|
||||
if (p!=null) {
|
||||
if (GenericFunctions.isWeapon(p.getEquipment().getItemInMainHand())) {
|
||||
GenericFunctions.RemovePermEnchantmentChance(p.getEquipment().getItemInMainHand(), p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority=EventPriority.LOW,ignoreCancelled = true)
|
||||
|
@ -1,6 +1,7 @@
|
||||
package sig.plugin.TwosideKeeper;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import net.minecraft.server.v1_9_R1.EnumParticle;
|
||||
|
||||
@ -8,4 +9,24 @@ public class aPluginAPIWrapper {
|
||||
public static void sendParticle(Location loc, EnumParticle particle, float dx, float dy, float dz, float v, int particleCount) {
|
||||
utils.NMSUtils.sendParticle(loc,particle,dx,dy,dz,v,particleCount);
|
||||
}
|
||||
|
||||
public static boolean isAFK(Player p) {
|
||||
return aPlugin.API.isAFK(p) || !playerIsActive(p);
|
||||
}
|
||||
|
||||
public static boolean playerIsActive(Player p) {
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
if (pd.lastLocationChange+(20*pd.afkLength)<TwosideKeeper.getServerTickTime() || pd.tooConsistentAdjustments) {
|
||||
if (!pd.isAFKState) {
|
||||
pd.isAFKState=true;
|
||||
TwosideKeeper.log(">>Player "+p.getName()+" has been detected as AFK.", 2);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (pd.isAFKState) {
|
||||
pd.isAFKState=false;
|
||||
TwosideKeeper.log(">>Player "+p.getName()+" is no longer AFK.", 2);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -300,6 +300,7 @@ final public class runServerHeartbeat implements Runnable {
|
||||
updateCustomTitle(p, pd);
|
||||
TwosideKeeper.HeartbeatLogger.AddEntry("Update Custom Title", (int)(System.nanoTime()-time));time=System.nanoTime();
|
||||
}
|
||||
CheckPlayerLocationAndActionQueue(p);
|
||||
TwosideKeeper.HeartbeatLogger.AddEntry(ChatColor.BOLD+"->Not AFK Functions"+ChatColor.RESET, (int)(System.nanoTime()-notafktime));
|
||||
|
||||
ModifyArmorBar(p);
|
||||
@ -392,6 +393,58 @@ final public class runServerHeartbeat implements Runnable {
|
||||
TwosideKeeper.HeartbeatLogger.AddEntry(ChatColor.LIGHT_PURPLE+"Total Server Heartbeat", (int)(System.nanoTime()-totaltime));totaltime=System.nanoTime();
|
||||
}
|
||||
|
||||
private void CheckPlayerLocationAndActionQueue(Player p) {
|
||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||
if (pd.leashedLoc==null) {
|
||||
pd.leashedLoc = p.getLocation().clone();
|
||||
pd.lastLocationChange = TwosideKeeper.getServerTickTime();
|
||||
} else {
|
||||
if (p.getWorld().equals(pd.leashedLoc.getWorld())) {
|
||||
if (PlayerUtils.PlayerIsInCombat(p) || p.getLocation().distanceSquared(pd.leashedLoc)>9 || Math.abs(p.getLocation().getDirection().getX()-pd.leashedLoc.getDirection().getX())>=0.05 || Math.abs(p.getLocation().getDirection().getZ()-pd.leashedLoc.getDirection().getZ())>=0.05) {
|
||||
pd.leashedLoc = p.getLocation().clone();
|
||||
pd.lastLocationChange = TwosideKeeper.getServerTickTime();
|
||||
pd.adjustmentReading++;
|
||||
pd.unafkLength = Math.min(pd.unafkLength+1, 60);
|
||||
if (pd.unafkLength==60) {
|
||||
pd.afkLength = Math.min(pd.afkLength+1, 60);
|
||||
//TwosideKeeper.log("AFK Length: "+pd.afkLength, 2);
|
||||
}
|
||||
} else {
|
||||
pd.unafkLength = Math.max(pd.unafkLength-1,1);
|
||||
if (pd.isAFKState) {
|
||||
pd.afkLength = Math.max(pd.afkLength-1,1);
|
||||
//TwosideKeeper.log("AFK Length: "+pd.afkLength, 2);
|
||||
//TwosideKeeper.log(p.getName()+" has been detected as AFK. Multiplier: "+PlayerStructure.getAFKMultiplier(p), 2);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
pd.leashedLoc = p.getLocation().clone();
|
||||
}
|
||||
}
|
||||
if (pd.lastAdjustmentReading+(20*60)<TwosideKeeper.getServerTickTime()) {
|
||||
pd.lastAdjustmentReading=TwosideKeeper.getServerTickTime();
|
||||
//Add entry.
|
||||
/*
|
||||
* [8:42 PM] BOTServer: Ishiyama if you have X items and the average is Y
|
||||
[8:42 PM] BOTServer: Ishiyama then the average of X+1 items where the additional number is Z
|
||||
[8:42 PM] BOTServer: Ishiyama is (X * Y + Z) / (X + 1)
|
||||
*/
|
||||
//TwosideKeeper.log("Current adjustment reading: "+pd.averageAdjustmentsMade+" <--> "+pd.adjustmentReading, 2);
|
||||
if (Math.abs(pd.adjustmentReading-pd.averageAdjustmentsMade)<=2 && pd.averageAdjustmentsMadeCount>=10) { //Too consistent.
|
||||
pd.readingBroken++;
|
||||
if (pd.readingBroken>=3) {
|
||||
pd.tooConsistentAdjustments=true;
|
||||
}
|
||||
} else {
|
||||
pd.readingBroken=0;
|
||||
pd.tooConsistentAdjustments=false;
|
||||
}
|
||||
pd.averageAdjustmentsMade = ((double)pd.averageAdjustmentsMadeCount*pd.averageAdjustmentsMade + pd.adjustmentReading)/(double)(pd.averageAdjustmentsMadeCount+1);
|
||||
pd.averageAdjustmentsMadeCount = Math.min(pd.averageAdjustmentsMadeCount+1, 10);
|
||||
pd.adjustmentReading=0;
|
||||
}
|
||||
}
|
||||
|
||||
private void managePVPSessions() {
|
||||
for (PVP session : TwosideKeeper.pvpsessions) {
|
||||
if (!session.runTick()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user