Merge branch 'daily_nerf'
Conflicts: TwosideKeeper.jar
This commit is contained in:
commit
ffb784dcd2
Binary file not shown.
@ -153,7 +153,7 @@ public class CustomDamage {
|
|||||||
long time = System.nanoTime();
|
long time = System.nanoTime();
|
||||||
if (!isFlagSet(flags,CONTROLLED)) {
|
if (!isFlagSet(flags,CONTROLLED)) {
|
||||||
TwosideKeeper.damagequeue++;
|
TwosideKeeper.damagequeue++;
|
||||||
if (TwosideKeeper.damagequeue>8) {
|
if (TwosideKeeper.damagequeue>TwosideKeeper.DAMAGE_QUEUE_MAX_BUFFER) {
|
||||||
flags = setFlag(flags,CONTROLLED);
|
flags = setFlag(flags,CONTROLLED);
|
||||||
TwosideKeeper.damagequeuelist.add(new DamageStructure(damage,damager,target,weapon,reason,flags));
|
TwosideKeeper.damagequeuelist.add(new DamageStructure(damage,damager,target,weapon,reason,flags));
|
||||||
return false; //Run it later.
|
return false; //Run it later.
|
||||||
|
@ -0,0 +1,170 @@
|
|||||||
|
package sig.plugin.TwosideKeeper.HelperStructures;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Item;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.player.PlayerPickupItemEvent;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import sig.plugin.TwosideKeeper.PVP;
|
||||||
|
import sig.plugin.TwosideKeeper.TwosideKeeper;
|
||||||
|
import sig.plugin.TwosideKeeper.Events.InventoryUpdateEvent;
|
||||||
|
import sig.plugin.TwosideKeeper.Events.InventoryUpdateEvent.UpdateReason;
|
||||||
|
import sig.plugin.TwosideKeeper.HelperStructures.Common.ArrowQuiver;
|
||||||
|
import sig.plugin.TwosideKeeper.HelperStructures.Common.GenericFunctions;
|
||||||
|
import sig.plugin.TwosideKeeper.HelperStructures.Utils.InventoryUtils;
|
||||||
|
import sig.plugin.TwosideKeeper.HelperStructures.Utils.SoundUtils;
|
||||||
|
|
||||||
|
public class ItemPickupStructure {
|
||||||
|
PlayerPickupItemEvent ev;
|
||||||
|
|
||||||
|
public ItemPickupStructure(PlayerPickupItemEvent itemEvent) {
|
||||||
|
this.ev=itemEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
//Arrow quiver code goes here.
|
||||||
|
//TwosideKeeper.log("["+TwosideKeeper.getServerTickTime()+"] PlayerPickupItemEvent fired w/ "+ev.getItem().getItemStack(), 1);
|
||||||
|
if (ev.isCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Player p = ev.getPlayer();
|
||||||
|
if (PVP.isPvPing(p)) {
|
||||||
|
ev.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//log("Item Right now: "+ev.getItem().getItemStack(),0);
|
||||||
|
long time = System.nanoTime();
|
||||||
|
long totaltime = System.nanoTime();
|
||||||
|
|
||||||
|
Bukkit.getScheduler().runTaskLater(TwosideKeeper.plugin, ()->{
|
||||||
|
InventoryUpdateEvent.TriggerUpdateInventoryEvent(p,ev.getItem().getItemStack(),UpdateReason.PICKEDUPITEM);
|
||||||
|
}, 1);
|
||||||
|
ItemStack newstack = InventoryUtils.AttemptToFillPartialSlotsFirst(p,ev.getItem().getItemStack());
|
||||||
|
TwosideKeeper.PickupLogger.AddEntry("Fill Partial Slots First", (int)(System.nanoTime()-time));time=System.nanoTime();
|
||||||
|
//TwosideKeeper.log(" New Stack is: "+newstack,0);
|
||||||
|
if (newstack==null || newstack.getType()==Material.AIR) {
|
||||||
|
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(ev.getItem().getItemStack()));
|
||||||
|
TwosideKeeper.PlayPickupParticle(ev.getPlayer(),ev.getItem());
|
||||||
|
if (ev.getRemaining()>0) {
|
||||||
|
Item it = ev.getItem();
|
||||||
|
it.getItemStack().setAmount(ev.getRemaining());
|
||||||
|
//GenericFunctions.giveItem(p, it.getItemStack());
|
||||||
|
GenericFunctions.dropItem(it.getItemStack(), p.getLocation());
|
||||||
|
}
|
||||||
|
ev.getItem().remove();ev.setCancelled(true);return;}
|
||||||
|
TwosideKeeper.PickupLogger.AddEntry("Pickup Item when it's null", (int)(System.nanoTime()-time));time=System.nanoTime();
|
||||||
|
ev.getItem().setItemStack(newstack);
|
||||||
|
//log("Pickup Metadata: "+ev.getItem().getItemStack().getItemMeta().toString(),0);
|
||||||
|
//GenericFunctions.updateSetItems(p.getInventory());
|
||||||
|
GenericFunctions.UpdateItemLore(ev.getItem().getItemStack());
|
||||||
|
TwosideKeeper.PickupLogger.AddEntry("Update Item Lore", (int)(System.nanoTime()-time));time=System.nanoTime();
|
||||||
|
/*//LEGACY CODE
|
||||||
|
if (!ev.isCancelled()) {
|
||||||
|
if (ev.getItem().getItemStack().getType()==Material.ARROW &&
|
||||||
|
playerHasArrowQuiver(p)) {
|
||||||
|
int arrowquiver_slot = playerGetArrowQuiver(p);
|
||||||
|
playerInsertArrowQuiver(p, arrowquiver_slot, ev.getItem().getItemStack().getAmount());
|
||||||
|
log("Added "+ev.getItem().getItemStack().getAmount()+" arrow"+((ev.getItem().getItemStack().getAmount()==1)?"":"s")+" to quiver in slot "+arrowquiver_slot+". New amount: "+playerGetArrowQuiverAmt(p,arrowquiver_slot),4);
|
||||||
|
//If we added it here, we destroy the item stack.
|
||||||
|
p.sendMessage(ChatColor.DARK_GRAY+""+ev.getItem().getItemStack().getAmount()+" arrow"+((ev.getItem().getItemStack().getAmount()==1)?"":"s")+" "+((ev.getItem().getItemStack().getAmount()==1)?"was":"were")+" added to your arrow quiver. Arrow Count: "+ChatColor.GRAY+playerGetArrowQuiverAmt(p,arrowquiver_slot));
|
||||||
|
ev.getPlayer().playSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, 1.0f);
|
||||||
|
ev.getItem().remove();
|
||||||
|
ev.setCancelled(true);
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
TwosideKeeper.HandlePickupAchievements(ev.getPlayer(), ev.getItem().getItemStack());
|
||||||
|
TwosideKeeper.PickupLogger.AddEntry("Pickup Achievements", (int)(System.nanoTime()-time));time=System.nanoTime();
|
||||||
|
|
||||||
|
boolean handled = TwosideKeeper.AutoEquipItem(ev.getItem().getItemStack(), p);
|
||||||
|
TwosideKeeper.PickupLogger.AddEntry("Auto Equip Item Check", (int)(System.nanoTime()-time));time=System.nanoTime();
|
||||||
|
if (handled) {
|
||||||
|
TwosideKeeper.PlayPickupParticle(ev.getPlayer(),ev.getItem());
|
||||||
|
ev.getItem().remove();
|
||||||
|
ev.setCancelled(handled);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*if (AutoConsumeItem(p,ev.getItem().getItemStack())) {
|
||||||
|
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_GENERIC_EAT, 1.0f, 1.0f);
|
||||||
|
PlayPickupParticle(ev.getPlayer(),ev.getItem());
|
||||||
|
ev.getItem().remove();
|
||||||
|
ev.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}*/
|
||||||
|
TwosideKeeper.PickupLogger.AddEntry("Auto Consume Item Check", (int)(System.nanoTime()-time));time=System.nanoTime();
|
||||||
|
|
||||||
|
if (ev.getItem().hasMetadata("INFINITEARROW")) { //Not allowed to be picked up, this was an infinite arrow.
|
||||||
|
TwosideKeeper.log("INFINITE PICKUP", 5);
|
||||||
|
ev.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
TwosideKeeper.PickupLogger.AddEntry("Infinite Arrow Check", (int)(System.nanoTime()-time));time=System.nanoTime();
|
||||||
|
|
||||||
|
if (GenericFunctions.isValidArrow(ev.getItem().getItemStack()) && ArrowQuiver.getArrowQuiverInPlayerInventory(p)!=null) {
|
||||||
|
ev.setCancelled(true);
|
||||||
|
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(ev.getItem().getItemStack()));
|
||||||
|
TwosideKeeper.PlayPickupParticle(ev.getPlayer(),ev.getItem());
|
||||||
|
ev.getItem().remove();
|
||||||
|
TwosideKeeper.AddToPlayerInventory(ev.getItem().getItemStack(), p);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
TwosideKeeper.PickupLogger.AddEntry("Valid Arrow check", (int)(System.nanoTime()-time));time=System.nanoTime();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MUST BE HANDLED AFTER EVERYTHING ELSE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//TwosideKeeper.log("(1)Item is "+ev.getItem().getItemStack(), 0);
|
||||||
|
if (InventoryUtils.isCarryingFilterCube(p)) {
|
||||||
|
//Try to insert it into the Filter cube.
|
||||||
|
//TwosideKeeper.log("(2)Item is "+ev.getItem().getItemStack(), 0);
|
||||||
|
ItemStack[] remaining = InventoryUtils.insertItemsInFilterCube(p, ev.getItem().getItemStack());
|
||||||
|
//TwosideKeeper.log("(3)Item is "+ev.getItem().getItemStack(), 0);
|
||||||
|
if (remaining.length==0) {
|
||||||
|
ev.setCancelled(true);
|
||||||
|
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(ev.getItem().getItemStack()));
|
||||||
|
TwosideKeeper.PlayPickupParticle(ev.getPlayer(),ev.getItem());
|
||||||
|
ev.getItem().remove();
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
ev.getItem().setItemStack(remaining[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TwosideKeeper.PickupLogger.AddEntry("Filter Cube Check", (int)(System.nanoTime()-time));time=System.nanoTime();
|
||||||
|
|
||||||
|
//TwosideKeeper.log("(1)Item is "+ev.getItem().getItemStack(), 0);
|
||||||
|
if (ev.getItem().getItemStack().getType().isBlock() && InventoryUtils.isCarryingVacuumCube(p)) {
|
||||||
|
//Try to insert it into the Vacuum cube.
|
||||||
|
ItemStack[] remaining = InventoryUtils.insertItemsInVacuumCube(p, ev.getItem().getItemStack());
|
||||||
|
if (remaining.length==0) {
|
||||||
|
ev.setCancelled(true);
|
||||||
|
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(ev.getItem().getItemStack()));
|
||||||
|
TwosideKeeper.PlayPickupParticle(ev.getPlayer(),ev.getItem());
|
||||||
|
ev.getItem().remove();
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
ev.getItem().setItemStack(remaining[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TwosideKeeper.PickupLogger.AddEntry("Vacuum Cube Check", (int)(System.nanoTime()-time));time=System.nanoTime();
|
||||||
|
|
||||||
|
//ItemCubeUtils.pickupAndAddItemCubeToGraph(ev.getItem().getItemStack(), p);
|
||||||
|
|
||||||
|
ev.setCancelled(true);
|
||||||
|
ItemStack givenitem = ev.getItem().getItemStack().clone();
|
||||||
|
GenericFunctions.giveItem(p, givenitem);
|
||||||
|
if (ev.getRemaining()>0) {
|
||||||
|
givenitem.setAmount(ev.getRemaining());
|
||||||
|
GenericFunctions.giveItem(p, givenitem);
|
||||||
|
}
|
||||||
|
TwosideKeeper.PlayPickupParticle(ev.getPlayer(),ev.getItem());
|
||||||
|
ev.getItem().remove();
|
||||||
|
ItemSet.updateItemSets(ev.getPlayer());
|
||||||
|
TwosideKeeper.PickupLogger.AddEntry("Update Item Sets", (int)(System.nanoTime()-time));time=System.nanoTime();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
@ -230,6 +230,7 @@ import sig.plugin.TwosideKeeper.HelperStructures.CustomRecipe;
|
|||||||
import sig.plugin.TwosideKeeper.HelperStructures.DamageStructure;
|
import sig.plugin.TwosideKeeper.HelperStructures.DamageStructure;
|
||||||
import sig.plugin.TwosideKeeper.HelperStructures.FilterCubeItem;
|
import sig.plugin.TwosideKeeper.HelperStructures.FilterCubeItem;
|
||||||
import sig.plugin.TwosideKeeper.HelperStructures.ItemCube;
|
import sig.plugin.TwosideKeeper.HelperStructures.ItemCube;
|
||||||
|
import sig.plugin.TwosideKeeper.HelperStructures.ItemPickupStructure;
|
||||||
import sig.plugin.TwosideKeeper.HelperStructures.ItemSet;
|
import sig.plugin.TwosideKeeper.HelperStructures.ItemSet;
|
||||||
import sig.plugin.TwosideKeeper.HelperStructures.ItemSlot;
|
import sig.plugin.TwosideKeeper.HelperStructures.ItemSlot;
|
||||||
import sig.plugin.TwosideKeeper.HelperStructures.LivingEntityDifficulty;
|
import sig.plugin.TwosideKeeper.HelperStructures.LivingEntityDifficulty;
|
||||||
@ -503,6 +504,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
|
|
||||||
public static int damagequeue = 0;
|
public static int damagequeue = 0;
|
||||||
public static List<DamageStructure> damagequeuelist = new ArrayList<DamageStructure>();
|
public static List<DamageStructure> damagequeuelist = new ArrayList<DamageStructure>();
|
||||||
|
public static int pickupitemqueue = 0;
|
||||||
|
public static List<ItemPickupStructure> pickupitemqueuelist = new ArrayList<ItemPickupStructure>();
|
||||||
|
|
||||||
public static final Material[] ClearFallingBlockList = {Material.REDSTONE_BLOCK};
|
public static final Material[] ClearFallingBlockList = {Material.REDSTONE_BLOCK};
|
||||||
|
|
||||||
@ -9979,7 +9982,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
PlayPickupParticle(ev.getPlayer(),ev.getItem());
|
PlayPickupParticle(ev.getPlayer(),ev.getItem());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddToPlayerInventory(ItemStack item, Player p) {
|
public static void AddToPlayerInventory(ItemStack item, Player p) {
|
||||||
ItemStack arrowquiver = ArrowQuiver.getArrowQuiverInPlayerInventory(p);
|
ItemStack arrowquiver = ArrowQuiver.getArrowQuiverInPlayerInventory(p);
|
||||||
if (arrowquiver==null) {
|
if (arrowquiver==null) {
|
||||||
attemptToStackInInventory(p,item);
|
attemptToStackInInventory(p,item);
|
||||||
@ -9989,160 +9992,28 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void attemptToStackInInventory(Player p, ItemStack collect) {
|
private static void attemptToStackInInventory(Player p, ItemStack collect) {
|
||||||
GenericFunctions.giveItem(p, collect);
|
GenericFunctions.giveItem(p, collect);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority=EventPriority.HIGH,ignoreCancelled = true)
|
@EventHandler(priority=EventPriority.HIGH,ignoreCancelled = true)
|
||||||
public void onItemPickup(PlayerPickupItemEvent ev) {
|
public void onItemPickup(PlayerPickupItemEvent ev) {
|
||||||
//Arrow quiver code goes here.
|
ItemPickupStructure action = new ItemPickupStructure(ev);
|
||||||
//TwosideKeeper.log("["+TwosideKeeper.getServerTickTime()+"] PlayerPickupItemEvent fired w/ "+ev.getItem().getItemStack(), 1);
|
TwosideKeeper.pickupitemqueue++;
|
||||||
if (ev.isCancelled()) {
|
if (TwosideKeeper.pickupitemqueue>TwosideKeeper.ITEM_QUEUE_MAX_BUFFER) {
|
||||||
return;
|
//flags = setFlag(flags,CONTROLLED);
|
||||||
}
|
TwosideKeeper.pickupitemqueuelist.add(action);
|
||||||
Player p = ev.getPlayer();
|
//return false; //Run it later.
|
||||||
if (PVP.isPvPing(p)) {
|
|
||||||
ev.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//log("Item Right now: "+ev.getItem().getItemStack(),0);
|
|
||||||
long time = System.nanoTime();
|
|
||||||
long totaltime = System.nanoTime();
|
|
||||||
|
|
||||||
Bukkit.getScheduler().runTaskLater(TwosideKeeper.plugin, ()->{
|
|
||||||
InventoryUpdateEvent.TriggerUpdateInventoryEvent(p,ev.getItem().getItemStack(),UpdateReason.PICKEDUPITEM);
|
|
||||||
}, 1);
|
|
||||||
ItemStack newstack = InventoryUtils.AttemptToFillPartialSlotsFirst(p,ev.getItem().getItemStack());
|
|
||||||
TwosideKeeper.PickupLogger.AddEntry("Fill Partial Slots First", (int)(System.nanoTime()-time));time=System.nanoTime();
|
|
||||||
//TwosideKeeper.log(" New Stack is: "+newstack,0);
|
|
||||||
if (newstack==null || newstack.getType()==Material.AIR) {
|
|
||||||
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) {
|
|
||||||
Item it = ev.getItem();
|
|
||||||
it.getItemStack().setAmount(ev.getRemaining());
|
|
||||||
//GenericFunctions.giveItem(p, it.getItemStack());
|
|
||||||
GenericFunctions.dropItem(it.getItemStack(), p.getLocation());
|
|
||||||
}
|
|
||||||
ev.getItem().remove();ev.setCancelled(true);return;}
|
|
||||||
TwosideKeeper.PickupLogger.AddEntry("Pickup Item when it's null", (int)(System.nanoTime()-time));time=System.nanoTime();
|
|
||||||
ev.getItem().setItemStack(newstack);
|
|
||||||
//log("Pickup Metadata: "+ev.getItem().getItemStack().getItemMeta().toString(),0);
|
|
||||||
//GenericFunctions.updateSetItems(p.getInventory());
|
|
||||||
GenericFunctions.UpdateItemLore(ev.getItem().getItemStack());
|
|
||||||
TwosideKeeper.PickupLogger.AddEntry("Update Item Lore", (int)(System.nanoTime()-time));time=System.nanoTime();
|
|
||||||
/*//LEGACY CODE
|
|
||||||
if (!ev.isCancelled()) {
|
|
||||||
if (ev.getItem().getItemStack().getType()==Material.ARROW &&
|
|
||||||
playerHasArrowQuiver(p)) {
|
|
||||||
int arrowquiver_slot = playerGetArrowQuiver(p);
|
|
||||||
playerInsertArrowQuiver(p, arrowquiver_slot, ev.getItem().getItemStack().getAmount());
|
|
||||||
log("Added "+ev.getItem().getItemStack().getAmount()+" arrow"+((ev.getItem().getItemStack().getAmount()==1)?"":"s")+" to quiver in slot "+arrowquiver_slot+". New amount: "+playerGetArrowQuiverAmt(p,arrowquiver_slot),4);
|
|
||||||
//If we added it here, we destroy the item stack.
|
|
||||||
p.sendMessage(ChatColor.DARK_GRAY+""+ev.getItem().getItemStack().getAmount()+" arrow"+((ev.getItem().getItemStack().getAmount()==1)?"":"s")+" "+((ev.getItem().getItemStack().getAmount()==1)?"was":"were")+" added to your arrow quiver. Arrow Count: "+ChatColor.GRAY+playerGetArrowQuiverAmt(p,arrowquiver_slot));
|
|
||||||
ev.getPlayer().playSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, 1.0f);
|
|
||||||
ev.getItem().remove();
|
|
||||||
ev.setCancelled(true);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
HandlePickupAchievements(ev.getPlayer(), ev.getItem().getItemStack());
|
|
||||||
TwosideKeeper.PickupLogger.AddEntry("Pickup Achievements", (int)(System.nanoTime()-time));time=System.nanoTime();
|
|
||||||
|
|
||||||
boolean handled = AutoEquipItem(ev.getItem().getItemStack(), p);
|
|
||||||
TwosideKeeper.PickupLogger.AddEntry("Auto Equip Item Check", (int)(System.nanoTime()-time));time=System.nanoTime();
|
|
||||||
if (handled) {
|
|
||||||
PlayPickupParticle(ev.getPlayer(),ev.getItem());
|
|
||||||
ev.getItem().remove();
|
|
||||||
ev.setCancelled(handled);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*if (AutoConsumeItem(p,ev.getItem().getItemStack())) {
|
|
||||||
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_GENERIC_EAT, 1.0f, 1.0f);
|
|
||||||
PlayPickupParticle(ev.getPlayer(),ev.getItem());
|
|
||||||
ev.getItem().remove();
|
|
||||||
ev.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}*/
|
|
||||||
TwosideKeeper.PickupLogger.AddEntry("Auto Consume Item Check", (int)(System.nanoTime()-time));time=System.nanoTime();
|
|
||||||
|
|
||||||
if (ev.getItem().hasMetadata("INFINITEARROW")) { //Not allowed to be picked up, this was an infinite arrow.
|
|
||||||
TwosideKeeper.log("INFINITE PICKUP", 5);
|
|
||||||
ev.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
TwosideKeeper.PickupLogger.AddEntry("Infinite Arrow Check", (int)(System.nanoTime()-time));time=System.nanoTime();
|
|
||||||
|
|
||||||
if (GenericFunctions.isValidArrow(ev.getItem().getItemStack()) && ArrowQuiver.getArrowQuiverInPlayerInventory(p)!=null) {
|
|
||||||
ev.setCancelled(true);
|
|
||||||
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(ev.getItem().getItemStack()));
|
|
||||||
PlayPickupParticle(ev.getPlayer(),ev.getItem());
|
|
||||||
ev.getItem().remove();
|
|
||||||
AddToPlayerInventory(ev.getItem().getItemStack(), p);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
TwosideKeeper.PickupLogger.AddEntry("Valid Arrow check", (int)(System.nanoTime()-time));time=System.nanoTime();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* MUST BE HANDLED AFTER EVERYTHING ELSE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//TwosideKeeper.log("(1)Item is "+ev.getItem().getItemStack(), 0);
|
|
||||||
if (InventoryUtils.isCarryingFilterCube(p)) {
|
|
||||||
//Try to insert it into the Filter cube.
|
|
||||||
//TwosideKeeper.log("(2)Item is "+ev.getItem().getItemStack(), 0);
|
|
||||||
ItemStack[] remaining = InventoryUtils.insertItemsInFilterCube(p, ev.getItem().getItemStack());
|
|
||||||
//TwosideKeeper.log("(3)Item is "+ev.getItem().getItemStack(), 0);
|
|
||||||
if (remaining.length==0) {
|
|
||||||
ev.setCancelled(true);
|
|
||||||
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(ev.getItem().getItemStack()));
|
|
||||||
PlayPickupParticle(ev.getPlayer(),ev.getItem());
|
|
||||||
ev.getItem().remove();
|
|
||||||
return;
|
|
||||||
} else {
|
} else {
|
||||||
ev.getItem().setItemStack(remaining[0]);
|
action.run();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
TwosideKeeper.PickupLogger.AddEntry("Filter Cube Check", (int)(System.nanoTime()-time));time=System.nanoTime();
|
|
||||||
|
|
||||||
//TwosideKeeper.log("(1)Item is "+ev.getItem().getItemStack(), 0);
|
|
||||||
if (ev.getItem().getItemStack().getType().isBlock() && InventoryUtils.isCarryingVacuumCube(p)) {
|
|
||||||
//Try to insert it into the Vacuum cube.
|
|
||||||
ItemStack[] remaining = InventoryUtils.insertItemsInVacuumCube(p, ev.getItem().getItemStack());
|
|
||||||
if (remaining.length==0) {
|
|
||||||
ev.setCancelled(true);
|
|
||||||
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(ev.getItem().getItemStack()));
|
|
||||||
PlayPickupParticle(ev.getPlayer(),ev.getItem());
|
|
||||||
ev.getItem().remove();
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
ev.getItem().setItemStack(remaining[0]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
TwosideKeeper.PickupLogger.AddEntry("Vacuum Cube Check", (int)(System.nanoTime()-time));time=System.nanoTime();
|
|
||||||
|
|
||||||
//ItemCubeUtils.pickupAndAddItemCubeToGraph(ev.getItem().getItemStack(), p);
|
|
||||||
|
|
||||||
ev.setCancelled(true);
|
|
||||||
ItemStack givenitem = ev.getItem().getItemStack().clone();
|
|
||||||
GenericFunctions.giveItem(p, givenitem);
|
|
||||||
if (ev.getRemaining()>0) {
|
|
||||||
givenitem.setAmount(ev.getRemaining());
|
|
||||||
GenericFunctions.giveItem(p, givenitem);
|
|
||||||
}
|
|
||||||
PlayPickupParticle(ev.getPlayer(),ev.getItem());
|
|
||||||
ev.getItem().remove();
|
|
||||||
ItemSet.updateItemSets(ev.getPlayer());
|
|
||||||
TwosideKeeper.PickupLogger.AddEntry("Update Item Sets", (int)(System.nanoTime()-time));time=System.nanoTime();
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
public static void PlayPickupParticle(Player p, Item item) {
|
public static void PlayPickupParticle(Player p, Item item) {
|
||||||
//aPluginAPIWrapper.sendParticle(ev.getItem().getLocation(), EnumParticle.ITEM_TAKE, 1, 1, 1, 1, 1);
|
//aPluginAPIWrapper.sendParticle(ev.getItem().getLocation(), EnumParticle.ITEM_TAKE, 1, 1, 1, 1, 1);
|
||||||
aPlugin.API.sendItemPickupPacket(p, item);
|
aPlugin.API.sendItemPickupPacket(p, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandlePickupAchievements(Player p, ItemStack item) {
|
public static void HandlePickupAchievements(Player p, ItemStack item) {
|
||||||
if (p.hasAchievement(Achievement.ACQUIRE_IRON) && item.getType()==Material.DIAMOND && !p.hasAchievement(Achievement.GET_DIAMONDS)) {
|
if (p.hasAchievement(Achievement.ACQUIRE_IRON) && item.getType()==Material.DIAMOND && !p.hasAchievement(Achievement.GET_DIAMONDS)) {
|
||||||
p.awardAchievement(Achievement.GET_DIAMONDS);
|
p.awardAchievement(Achievement.GET_DIAMONDS);
|
||||||
} else
|
} else
|
||||||
|
@ -825,14 +825,22 @@ final public class runServerHeartbeat implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void resetDamageQueue() {
|
public static void resetDamageQueue() {
|
||||||
for (int i=0;i<8;i++) {
|
for (int i=0;i<TwosideKeeper.DAMAGE_QUEUE_MAX_BUFFER;i++) {
|
||||||
if (TwosideKeeper.damagequeuelist.size()>0) {
|
if (TwosideKeeper.damagequeuelist.size()>0) {
|
||||||
TwosideKeeper.damagequeuelist.remove(0).run();
|
TwosideKeeper.damagequeuelist.remove(0).run();
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for (int i=0;i<TwosideKeeper.ITEM_QUEUE_MAX_BUFFER;i++) {
|
||||||
|
if (TwosideKeeper.pickupitemqueuelist.size()>0) {
|
||||||
|
TwosideKeeper.pickupitemqueuelist.remove(0).run();
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
TwosideKeeper.damagequeue=TwosideKeeper.damagequeuelist.size();
|
TwosideKeeper.damagequeue=TwosideKeeper.damagequeuelist.size();
|
||||||
|
TwosideKeeper.pickupitemqueue=TwosideKeeper.pickupitemqueuelist.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void adjustMiningFatigue(Player p) {
|
private void adjustMiningFatigue(Player p) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user