Fixed all bug reports that came in earlier today. Filter Cubes work

properly again, Vacuum Cube bugs are gone (for players with old profiles
and /vac turned off), and shooting mobs above their heads is fixed.
This commit is contained in:
sigonasr2 2017-05-25 19:59:16 -05:00
parent f5641c7e88
commit 5b4b52d56d
9 changed files with 74 additions and 32 deletions

Binary file not shown.

View File

@ -1,6 +1,6 @@
name: TwosideKeeper name: TwosideKeeper
main: sig.plugin.TwosideKeeper.TwosideKeeper main: sig.plugin.TwosideKeeper.TwosideKeeper
version: 3.10.15 version: 3.10.16
loadbefore: [aPlugin] loadbefore: [aPlugin]
commands: commands:
money: money:

View File

@ -73,6 +73,7 @@ import sig.plugin.TwosideKeeper.HelperStructures.Common.BaublePouch;
import sig.plugin.TwosideKeeper.HelperStructures.Common.GenericFunctions; import sig.plugin.TwosideKeeper.HelperStructures.Common.GenericFunctions;
import sig.plugin.TwosideKeeper.HelperStructures.Effects.TemporaryBlockNode; import sig.plugin.TwosideKeeper.HelperStructures.Effects.TemporaryBlockNode;
import sig.plugin.TwosideKeeper.HelperStructures.Utils.ArtifactUtils; import sig.plugin.TwosideKeeper.HelperStructures.Utils.ArtifactUtils;
import sig.plugin.TwosideKeeper.HelperStructures.Utils.DebugUtils;
import sig.plugin.TwosideKeeper.HelperStructures.Utils.EntityUtils; import sig.plugin.TwosideKeeper.HelperStructures.Utils.EntityUtils;
import sig.plugin.TwosideKeeper.HelperStructures.Utils.IndicatorType; import sig.plugin.TwosideKeeper.HelperStructures.Utils.IndicatorType;
import sig.plugin.TwosideKeeper.HelperStructures.Utils.SoundUtils; import sig.plugin.TwosideKeeper.HelperStructures.Utils.SoundUtils;
@ -103,6 +104,7 @@ public class CustomDamage {
public static final int IS_THORNS = 8; //System Flag. Used for telling a player structure their last hit was with thorns. public static final int IS_THORNS = 8; //System Flag. Used for telling a player structure their last hit was with thorns.
static public boolean ApplyDamage(double damage, Entity damager, LivingEntity target, ItemStack weapon, String reason) { static public boolean ApplyDamage(double damage, Entity damager, LivingEntity target, ItemStack weapon, String reason) {
TwosideKeeper.log("Weapon: "+weapon, 0);
return ApplyDamage(damage,damager,target,weapon,reason,NONE); return ApplyDamage(damage,damager,target,weapon,reason,NONE);
} }
@ -193,6 +195,13 @@ public class CustomDamage {
} }
} }
private static void UpdateWeaponUsedForShooting(Entity damager) {
if (getDamagerEntity(damager) instanceof Player) {
PlayerStructure pd = PlayerStructure.GetPlayerStructure((Player)(getDamagerEntity(damager)));
pd.weaponUsedForShooting=null;
}
}
private static double CalculateBonusTrueDamage(Entity damager, LivingEntity target, double dmg) { private static double CalculateBonusTrueDamage(Entity damager, LivingEntity target, double dmg) {
//TwosideKeeper.log("Run here. Damage: "+dmg, 0); //TwosideKeeper.log("Run here. Damage: "+dmg, 0);
if (getDamagerEntity(damager) instanceof Player) { if (getDamagerEntity(damager) instanceof Player) {
@ -223,14 +232,17 @@ public class CustomDamage {
if (shooter!=null && (shooter instanceof Player)) { if (shooter!=null && (shooter instanceof Player)) {
if (weapon!=null) { if (weapon!=null) {
dmg+=getBaseWeaponDamage(damage, weapon, damager, target, reason); dmg+=getBaseWeaponDamage(damage, weapon, damager, target, reason);
TwosideKeeper.log("Weapon: "+weapon, 0);
DebugUtils.showStackTrace();
if (weapon.getType()==Material.BOW) { if (weapon.getType()==Material.BOW) {
if ((damager instanceof Projectile)) { if ((damager instanceof Projectile)) {
TwosideKeeper.log("This is a projectile! Reason: "+reason+", Damager: "+damager.toString(), 5); TwosideKeeper.log("This is a projectile! Reason: "+reason+", Damager: "+damager.toString(), 0);
dmg += addToPlayerLogger(damager,target,"Custom Arrow",calculateCustomArrowDamageIncrease(weapon,damager,target)); dmg += addToPlayerLogger(damager,target,"Custom Arrow",calculateCustomArrowDamageIncrease(weapon,damager,target));
dmg += addMultiplierToPlayerLogger(damager,target,"Ranger Mult",dmg * calculateRangerMultiplier(weapon,damager)); dmg += addMultiplierToPlayerLogger(damager,target,"Ranger Mult",dmg * calculateRangerMultiplier(weapon,damager));
double headshotdmg = addMultiplierToPlayerLogger(damager,target,"Headshot Mult",dmg * calculateHeadshotMultiplier(weapon,damager,target)); double headshotdmg = addMultiplierToPlayerLogger(damager,target,"Headshot Mult",dmg * calculateHeadshotMultiplier(weapon,damager,target));
if (headshotdmg!=0.0) {headshot=true;} if (headshotdmg!=0.0) {headshot=true;}
dmg += headshotdmg; dmg += headshotdmg;
TwosideKeeper.log("Damage currently is: "+dmg, 0);
dmg += addMultiplierToPlayerLogger(damager,target,"Bow Drawback Mult",dmg * calculateBowDrawbackMultiplier(weapon,damager,target)); dmg += addMultiplierToPlayerLogger(damager,target,"Bow Drawback Mult",dmg * calculateBowDrawbackMultiplier(weapon,damager,target));
} }
} }

View File

@ -42,8 +42,10 @@ public class InventoryUpdateEvent extends Event{
} }
public static void TriggerUpdateInventoryEvent(Player p, ItemStack item, UpdateReason reason) { public static void TriggerUpdateInventoryEvent(Player p, ItemStack item, UpdateReason reason) {
if (item!=null) {
InventoryUpdateEvent ev = new InventoryUpdateEvent(p, item, reason); InventoryUpdateEvent ev = new InventoryUpdateEvent(p, item, reason);
Bukkit.getPluginManager().callEvent(ev); Bukkit.getPluginManager().callEvent(ev);
}
//TwosideKeeper.log("Triggered because of "+reason, 0); //TwosideKeeper.log("Triggered because of "+reason, 0);
} }

View File

@ -44,6 +44,7 @@ public class LivingEntityStructure {
public long lastBurnTick=0; public long lastBurnTick=0;
public float MoveSpeedMultBeforeCripple=1f; public float MoveSpeedMultBeforeCripple=1f;
public Channel currentChannel=null; public Channel currentChannel=null;
public boolean isImportantGlowEnemy=true;
final static String MODIFIED_NAME_CODE = ChatColor.RESET+""+ChatColor.RESET+""+ChatColor.RESET; final static String MODIFIED_NAME_CODE = ChatColor.RESET+""+ChatColor.RESET+""+ChatColor.RESET;
final static String MODIFIED_NAME_DELIMITER = ChatColor.RESET+";"+ChatColor.RESET; final static String MODIFIED_NAME_DELIMITER = ChatColor.RESET+";"+ChatColor.RESET;
@ -193,7 +194,8 @@ public class LivingEntityStructure {
//Updates the glow color for all players. We base it on default statuses here. CALL THIS INSTEAD OF //Updates the glow color for all players. We base it on default statuses here. CALL THIS INSTEAD OF
// SETTING THE GLOW DIRECTLY ANYMORE! // SETTING THE GLOW DIRECTLY ANYMORE!
for (Player p : Bukkit.getOnlinePlayers()) { for (Player p : Bukkit.getOnlinePlayers()) {
if (p!=null && p.isValid() && !p.isDead()) { //if (p!=null && p.isValid() && !p.isDead()) {
if (isImportantGlowEnemy) {
if (GenericFunctions.isSuppressed(m)) { if (GenericFunctions.isSuppressed(m)) {
setGlow(p,GlowAPI.Color.BLACK); setGlow(p,GlowAPI.Color.BLACK);
} else } else
@ -210,11 +212,13 @@ public class LivingEntityStructure {
} }
} else } else
if (getLeader() || (m instanceof Monster && GenericFunctions.isBossMonster((Monster)m))) { if (getLeader() || (m instanceof Monster && GenericFunctions.isBossMonster((Monster)m))) {
//TwosideKeeper.log("Monster "+GenericFunctions.getDisplayName(m)+" is a Leader. Set the Glow.", 0);
setGlow(p,GlowAPI.Color.DARK_RED); setGlow(p,GlowAPI.Color.DARK_RED);
//TwosideKeeper.log("Is glowing? "+GlowAPI.isGlowing(m, p)+", Glow color list contains key? "+glowcolorlist.containsKey(p.getUniqueId()), 0);
} else } else
if (GenericFunctions.isIsolatedTarget(m, p)) { if (GenericFunctions.isIsolatedTarget(m, p)) {
setGlow(p,GlowAPI.Color.WHITE); setGlow(p,GlowAPI.Color.WHITE);
} } else
if (Knight.isKnight(m)) { if (Knight.isKnight(m)) {
setGlow(p,GlowAPI.Color.AQUA); setGlow(p,GlowAPI.Color.AQUA);
} }
@ -225,11 +229,18 @@ public class LivingEntityStructure {
GlowAPI.setGlowing(m, null, p); GlowAPI.setGlowing(m, null, p);
glowcolorlist.remove(p.getUniqueId()); glowcolorlist.remove(p.getUniqueId());
} }
isImportantGlowEnemy=false;
}
//}
} }
if (!GlowAPI.isGlowing(m, p) && glowcolorlist.containsKey(p.getUniqueId())) { if (!GlowAPI.isGlowing(m, p) && glowcolorlist.containsKey(p.getUniqueId())) {
//TwosideKeeper.log("Set glow of "+GenericFunctions.getDisplayName(m)+" to "+glowcolorlist.get(p.getUniqueId()), 0);
GlowAPI.setGlowing(m, glowcolorlist.get(p.getUniqueId()), p); GlowAPI.setGlowing(m, glowcolorlist.get(p.getUniqueId()), p);
} else } else
if (GlowAPI.isGlowing(m, p) && (p==null || !glowcolorlist.get(p.getUniqueId()).equals(GlowAPI.getGlowColor(m, p)))) { if (GlowAPI.isGlowing(m, p) && (GlowAPI.getGlowColor(m, p)==null || !glowcolorlist.get(p.getUniqueId()).equals(GlowAPI.getGlowColor(m, p)))) {
if (GlowAPI.getGlowColor(m, p)==null) {
GlowAPI.setGlowing(m, null, p);
} else {
GlowAPI.setGlowing(m, glowcolorlist.get(p.getUniqueId()), p); GlowAPI.setGlowing(m, glowcolorlist.get(p.getUniqueId()), p);
} }
} }

View File

@ -784,7 +784,11 @@ public class Knight extends CustomMonster{
Spider ss = DarkSpider.InitializeDarkSpider(m); Spider ss = DarkSpider.InitializeDarkSpider(m);
//ss.setPassenger(s); //ss.setPassenger(s);
//Determine distance from Twoside for Difficulty. //Determine distance from Twoside for Difficulty.
double chancer = TwosideKeeper.TWOSIDE_LOCATION.distanceSquared(m.getLocation()); Location compareloc = TwosideKeeper.TWOSIDE_LOCATION;
if (!compareloc.getWorld().equals(s.getWorld())) {
compareloc = new Location(s.getWorld(),0,0,0);
}
double chancer = compareloc.distanceSquared(m.getLocation());
if (Math.random()*chancer<4000000) { if (Math.random()*chancer<4000000) {
MonsterController.convertLivingEntity(m, LivingEntityDifficulty.T1_MINIBOSS); MonsterController.convertLivingEntity(m, LivingEntityDifficulty.T1_MINIBOSS);
} else } else

View File

@ -208,7 +208,7 @@ public class PlayerStructure {
public long lastActionBarMessageTime=0; public long lastActionBarMessageTime=0;
public long lastsantabox2; public long lastsantabox2;
public double regenpool=0; public double regenpool=0;
public boolean vacuumsuckup=true; //public boolean vacuumsuckup=true;
public boolean equipweapons=true; public boolean equipweapons=true;
public boolean equiparmor=true; public boolean equiparmor=true;
public long lastpotionparticles=0; public long lastpotionparticles=0;
@ -231,6 +231,7 @@ public class PlayerStructure {
public HashMap<String,HashMap<Integer,Integer>> itemsets = new HashMap<String,HashMap<Integer,Integer>>(); //HashMap<"Set Name",HashMap<"Tier","Amt">> public HashMap<String,HashMap<Integer,Integer>> itemsets = new HashMap<String,HashMap<Integer,Integer>>(); //HashMap<"Set Name",HashMap<"Tier","Amt">>
public boolean damagenumbers=true; public boolean damagenumbers=true;
public OptionsMenu optionsmenu; public OptionsMenu optionsmenu;
public ItemStack weaponUsedForShooting;
//Needs the instance of the player object to get all other info. Only to be called at the beginning. //Needs the instance of the player object to get all other info. Only to be called at the beginning.
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
@ -288,7 +289,7 @@ public class PlayerStructure {
this.damagelogging=false; this.damagelogging=false;
this.isPlayingSpleef=false; this.isPlayingSpleef=false;
this.iframetime=TwosideKeeper.getServerTickTime(); this.iframetime=TwosideKeeper.getServerTickTime();
this.vacuumsuckup=true; //this.vacuumsuckup=true;
this.equipweapons=true; this.equipweapons=true;
this.equiparmor=true; this.equiparmor=true;
this.customtitle = new AdvancedTitle(p); this.customtitle = new AdvancedTitle(p);
@ -396,7 +397,7 @@ public class PlayerStructure {
workable.set("holidaychest3", holidaychest3); workable.set("holidaychest3", holidaychest3);
workable.set("holidaychest4", holidaychest4); workable.set("holidaychest4", holidaychest4);
workable.set("lastsantabox2", lastsantabox2); workable.set("lastsantabox2", lastsantabox2);
workable.set("vacuumsuckup", vacuumsuckup); //workable.set("vacuumsuckup", vacuumsuckup);
workable.set("equipweapons", equipweapons); workable.set("equipweapons", equipweapons);
workable.set("equiparmor", equiparmor); workable.set("equiparmor", equiparmor);
workable.set("healthbardisplay", healthbardisplay); workable.set("healthbardisplay", healthbardisplay);
@ -517,7 +518,7 @@ public class PlayerStructure {
workable.addDefault("holidaychest3", holidaychest3); workable.addDefault("holidaychest3", holidaychest3);
workable.addDefault("holidaychest4", holidaychest4); workable.addDefault("holidaychest4", holidaychest4);
workable.addDefault("lastsantabox2", lastsantabox2); workable.addDefault("lastsantabox2", lastsantabox2);
workable.addDefault("vacuumsuckup", vacuumsuckup); //workable.addDefault("vacuumsuckup", vacuumsuckup);
workable.addDefault("equipweapons", equipweapons); workable.addDefault("equipweapons", equipweapons);
workable.addDefault("equiparmor", equiparmor); workable.addDefault("equiparmor", equiparmor);
workable.addDefault("playermode_on_death", playermode_on_death.name()); workable.addDefault("playermode_on_death", playermode_on_death.name());
@ -605,7 +606,7 @@ public class PlayerStructure {
this.lastusedwindslash = workable.getLong("COOLDOWN_lastusedwindslash"); this.lastusedwindslash = workable.getLong("COOLDOWN_lastusedwindslash");
this.lastusedbeastwithin = workable.getLong("COOLDOWN_lastusedbeastwithin"); this.lastusedbeastwithin = workable.getLong("COOLDOWN_lastusedbeastwithin");
this.lastusedunstoppableteam = workable.getLong("COOLDOWN_lastusedunstoppableteam"); this.lastusedunstoppableteam = workable.getLong("COOLDOWN_lastusedunstoppableteam");
this.vacuumsuckup = workable.getBoolean("vacuumsuckup"); //this.vacuumsuckup = workable.getBoolean("vacuumsuckup");
this.equipweapons = workable.getBoolean("equipweapons"); this.equipweapons = workable.getBoolean("equipweapons");
this.equiparmor = workable.getBoolean("equiparmor"); this.equiparmor = workable.getBoolean("equiparmor");
this.rangermode = BowMode.valueOf(workable.getString("rangermode")); this.rangermode = BowMode.valueOf(workable.getString("rangermode"));

View File

@ -534,7 +534,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
public static List<String> weather_watch_users = new ArrayList<String>(); public static List<String> weather_watch_users = new ArrayList<String>();
public final static int MAX_PIGMEN_AGGRO_AT_ONCE = 4; public final static int MAX_PIGMEN_AGGRO_AT_ONCE = 8;
public static long lastPigmanAggroTime = 0; public static long lastPigmanAggroTime = 0;
public static long pigmanAggroCount = 0; public static long pigmanAggroCount = 0;
@ -2474,13 +2474,6 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
p.sendMessage(aPlugin.API.getHabitatMap(p, 7)); p.sendMessage(aPlugin.API.getHabitatMap(p, 7));
return true; return true;
} else } else
if (cmd.getName().equalsIgnoreCase("vac")) {
Player p = (Player)sender;
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
pd.vacuumsuckup=!pd.vacuumsuckup;
p.sendMessage("Vacuum Cube suction is now turned "+(pd.vacuumsuckup?ChatColor.GREEN+"ON":ChatColor.RED+"OFF")+ChatColor.RESET+".");
return true;
} else
if (cmd.getName().equalsIgnoreCase("equip_weapon")) { if (cmd.getName().equalsIgnoreCase("equip_weapon")) {
Player p = (Player)sender; Player p = (Player)sender;
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p); PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
@ -3325,6 +3318,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
TemporaryBlock.createTemporaryBlockCircle(proj.getLocation().add(0,-2,0), 2, Material.REDSTONE_BLOCK, (byte)0, 100, "FIRECESSPOOL"); TemporaryBlock.createTemporaryBlockCircle(proj.getLocation().add(0,-2,0), 2, Material.REDSTONE_BLOCK, (byte)0, 100, "FIRECESSPOOL");
proj.setMetadata("FIREPOOL", new FixedMetadataValue(this,true)); proj.setMetadata("FIREPOOL", new FixedMetadataValue(this,true));
}*/ }*/
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
//pd.weaponUsedForShooting=null;
} }
if (ev.getEntity() instanceof Arrow) { if (ev.getEntity() instanceof Arrow) {
@ -5626,7 +5621,14 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
return; return;
} }
Bukkit.getScheduler().runTaskLater(TwosideKeeper.plugin, ()->{
if (ev.getClick()==ClickType.LEFT) {
InventoryUpdateEvent.TriggerUpdateInventoryEvent(player,ev.getCursor(),UpdateReason.INVENTORYUPDATE); InventoryUpdateEvent.TriggerUpdateInventoryEvent(player,ev.getCursor(),UpdateReason.INVENTORYUPDATE);
InventoryUpdateEvent.TriggerUpdateInventoryEvent(player,ev.getCurrentItem(),UpdateReason.INVENTORYUPDATE);
} else {
InventoryUpdateEvent.TriggerUpdateInventoryEvent(player,new ItemStack(Material.HOPPER_MINECART),UpdateReason.INVENTORYUPDATE);
}
},1);
if (DeathManager.deathStructureExists(player) && ev.getInventory().getTitle().equalsIgnoreCase("Death Loot")) { if (DeathManager.deathStructureExists(player) && ev.getInventory().getTitle().equalsIgnoreCase("Death Loot")) {
//See how many items are in our inventory. Determine final balance. //See how many items are in our inventory. Determine final balance.
@ -6829,6 +6831,11 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
pd.customtitle.updateSideTitleStats(p); pd.customtitle.updateSideTitleStats(p);
ev.setCancelled(true); ev.setCancelled(true);
} else { } else {
if (weapon.getType()==Material.AIR && pd.weaponUsedForShooting!=null) {
TwosideKeeper.log("Using weapon "+pd.weaponUsedForShooting+" as a substitute", 0);
weapon=pd.weaponUsedForShooting.clone();
pd.weaponUsedForShooting=null;
}
CustomDamage.ApplyDamage(0, ev.getDamager(), (LivingEntity)ev.getEntity(), weapon, null); CustomDamage.ApplyDamage(0, ev.getDamager(), (LivingEntity)ev.getEntity(), weapon, null);
if (ev.getDamager() instanceof Projectile) { if (ev.getDamager() instanceof Projectile) {
Projectile proj = (Projectile)ev.getDamager(); Projectile proj = (Projectile)ev.getDamager();
@ -7275,7 +7282,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
} }
if (ev.getEntity() instanceof LivingEntity && if (ev.getEntity() instanceof LivingEntity &&
ev.getReason()==TargetReason.PIG_ZOMBIE_TARGET) { ev.getReason()==TargetReason.PIG_ZOMBIE_TARGET) {
if (pigmanAggroCount<MAX_PIGMEN_AGGRO_AT_ONCE) { if (pigmanAggroCount<MAX_PIGMEN_AGGRO_AT_ONCE && lastPigmanAggroTime+200<=TwosideKeeper.getServerTickTime()) {
pigmanAggroCount++; pigmanAggroCount++;
lastPigmanAggroTime=TwosideKeeper.getServerTickTime(); lastPigmanAggroTime=TwosideKeeper.getServerTickTime();
} else { } else {
@ -7994,6 +8001,9 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
},1); },1);
} }
ItemSet.updateItemSets(p);
setPlayerMaxHealth(p);
pd.lastdeath=getServerTickTime(); pd.lastdeath=getServerTickTime();
pd.hasDied=false; pd.hasDied=false;
pd.slayermodehp=10; pd.slayermodehp=10;
@ -8435,8 +8445,9 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
long time = System.nanoTime(); long time = System.nanoTime();
long totaltime = System.nanoTime(); long totaltime = System.nanoTime();
Bukkit.getScheduler().runTaskLater(TwosideKeeper.plugin, ()->{
InventoryUpdateEvent.TriggerUpdateInventoryEvent(p,ev.getItem().getItemStack(),UpdateReason.PICKEDUPITEM); InventoryUpdateEvent.TriggerUpdateInventoryEvent(p,ev.getItem().getItemStack(),UpdateReason.PICKEDUPITEM);
TwosideKeeper.PickupLogger.AddEntry("Trigger Update Inventory Event", (int)(System.nanoTime()-time));time=System.nanoTime(); }, 1);
ItemStack newstack = InventoryUtils.AttemptToFillPartialSlotsFirst(p,ev.getItem().getItemStack()); ItemStack newstack = InventoryUtils.AttemptToFillPartialSlotsFirst(p,ev.getItem().getItemStack());
TwosideKeeper.PickupLogger.AddEntry("Fill Partial Slots First", (int)(System.nanoTime()-time));time=System.nanoTime(); TwosideKeeper.PickupLogger.AddEntry("Fill Partial Slots First", (int)(System.nanoTime()-time));time=System.nanoTime();
//TwosideKeeper.log(" New Stack is: "+newstack,0); //TwosideKeeper.log(" New Stack is: "+newstack,0);
@ -8445,7 +8456,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
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());
GenericFunctions.giveItem(p, it.getItemStack()); //GenericFunctions.giveItem(p, it.getItemStack());
GenericFunctions.dropItem(it.getItemStack(), p.getLocation());
} }
ev.getItem().remove();ev.setCancelled(true);return;} ev.getItem().remove();ev.setCancelled(true);return;}
TwosideKeeper.PickupLogger.AddEntry("Pickup Item when it's null", (int)(System.nanoTime()-time));time=System.nanoTime(); TwosideKeeper.PickupLogger.AddEntry("Pickup Item when it's null", (int)(System.nanoTime()-time));time=System.nanoTime();
@ -8965,9 +8977,11 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
if (arr.getShooter() instanceof Player) { if (arr.getShooter() instanceof Player) {
Player p = (Player)(arr.getShooter()); Player p = (Player)(arr.getShooter());
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
Bukkit.getScheduler().scheduleSyncDelayedTask(TwosideKeeper.plugin, ()->{ Bukkit.getScheduler().scheduleSyncDelayedTask(TwosideKeeper.plugin, ()->{
ItemStack tempitem = p.getEquipment().getItemInMainHand().clone(); ItemStack tempitem = p.getEquipment().getItemInMainHand().clone();
Location loc = p.getLocation().clone(); Location loc = p.getLocation().clone();
pd.weaponUsedForShooting = tempitem;
p.getEquipment().setItemInMainHand(new ItemStack(Material.AIR)); p.getEquipment().setItemInMainHand(new ItemStack(Material.AIR));
Bukkit.getScheduler().scheduleSyncDelayedTask(TwosideKeeper.plugin, ()->{ Bukkit.getScheduler().scheduleSyncDelayedTask(TwosideKeeper.plugin, ()->{
if (p!=null && p.isValid()) { if (p!=null && p.isValid()) {

View File

@ -1033,10 +1033,8 @@ final class runServerHeartbeat implements Runnable {
} }
} }
} else { } else {
if (pd.vacuumsuckup) {
ent.setVelocity(new Vector(xvel,yvel,zvel)); ent.setVelocity(new Vector(xvel,yvel,zvel));
} }
}
/*if (ent.getLocation().getX()<p.getLocation().getX()) { /*if (ent.getLocation().getX()<p.getLocation().getX()) {
ent.setVelocity(ent.getVelocity().setX(SPD*(10-Math.min(10,Math.abs())))); ent.setVelocity(ent.getVelocity().setX(SPD*(10-Math.min(10,Math.abs()))));
} else { } else {