Fixed Death drop bugs. Fixed Autoforging bugs. Modified Sound pickup

algorithm to sound less plain and more varied.
testdev
sigonasr2 8 years ago
parent cee9753b7f
commit 77021cf042
  1. BIN
      TwosideKeeper.jar
  2. 4
      src/sig/plugin/TwosideKeeper/DeathManager.java
  3. 11
      src/sig/plugin/TwosideKeeper/DropDeathItems.java
  4. 4
      src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java
  5. 10
      src/sig/plugin/TwosideKeeper/HelperStructures/Utils/InventoryUtils.java
  6. 17
      src/sig/plugin/TwosideKeeper/HelperStructures/Utils/SoundUtils.java
  7. 10
      src/sig/plugin/TwosideKeeper/PlayerStructure.java
  8. 125
      src/sig/plugin/TwosideKeeper/TwosideKeeper.java
  9. 25
      src/sig/plugin/TwosideKeeper/runServerHeartbeat.java

Binary file not shown.

@ -43,7 +43,9 @@ public class DeathManager {
}},1);
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
//pd.deathloot.clear();
pd.hasDied=false;
if (pd!=null) {
pd.hasDied=false;
}
p.setCollidable(true);
}
public static boolean deathStructureExists(Player p) {

@ -3,6 +3,7 @@ package sig.plugin.TwosideKeeper;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.entity.Item;
import org.bukkit.entity.Player;
@ -33,7 +34,11 @@ public class DropDeathItems implements Runnable{
TwosideKeeper.log("Respawn and Dropping...", 2);
while (contents.size()>0) {
if (deathloc.getChunk().isLoaded()) {
Item it = deathloc.getWorld().dropItemNaturally(deathloc, contents.get(0));
Item it = null;
do {
deathloc.getWorld().loadChunk(deathloc.getChunk());
it=deathloc.getWorld().dropItemNaturally(deathloc, contents.get(0));
TwosideKeeper.temporary_chunks.add(deathloc.getChunk());} while (it==null || !it.isValid());
it.setInvulnerable(true);
TwosideKeeper.log("Dropping "+contents.get(0).toString()+" at Death location "+deathloc,2);
contents.remove(0);
@ -41,6 +46,10 @@ public class DropDeathItems implements Runnable{
deathloc.getWorld().loadChunk(deathloc.getChunk());
}
}
for (Chunk c : TwosideKeeper.temporary_chunks) {
c.unload(true);
}
TwosideKeeper.temporary_chunks.clear();
DeathManager.removeDeathStructure(p);
return true;
}

@ -3838,7 +3838,9 @@ public class GenericFunctions {
public static boolean giveItem(Player p, ItemStack... items) {
HashMap<Integer,ItemStack> remaining = p.getInventory().addItem(items);
if (remaining.isEmpty()) {
SoundUtils.playGlobalSound(p.getLocation(), Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
if (items[0]!=null) {
SoundUtils.playGlobalSound(p.getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(items[0]));
}
return true;
} else {
for (Integer i : remaining.keySet()) {

@ -6,6 +6,7 @@ import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
@ -92,4 +93,13 @@ public class InventoryUtils {
}
return false;
}
public static boolean hasFullInventory(Player p) {
ItemStack[] inv = p.getInventory().getStorageContents();
for (ItemStack i : inv) {
if (i==null || i.getType()==Material.AIR) {
return false;
}
}
return true;
}
}

@ -1,9 +1,14 @@
package sig.plugin.TwosideKeeper.HelperStructures.Utils;
import java.util.Random;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import sig.plugin.TwosideKeeper.TwosideKeeper;
public class SoundUtils {
@ -41,5 +46,15 @@ public class SoundUtils {
SoundUtils.playLocalSound(p, sound, vol, pitch);
}
}
public static float DetermineItemPitch(ItemStack item) {
double pitch = 1.0f;
double variance = 0.1f;
Random r = new Random();
r.setSeed(item.getType().name().hashCode());
double newnumb = r.nextFloat();
double newpitch = pitch+variance-(newnumb*(variance*2d));
TwosideKeeper.log("Next float:"+newnumb+" | Pitch: "+newpitch, 5);
return (float)newpitch;
}
}

@ -367,15 +367,15 @@ public class PlayerStructure {
this.lastattacked = TwosideKeeper.getServerTickTime();
this.lastcombat = TwosideKeeper.getServerTickTime();
/*if (this.hasDied) {
if (this.hasDied) {
List<ItemStack> deathlootlist = new ArrayList<ItemStack>();
ConfigurationSection deathlootsection = workable.getConfigurationSection("deathloot");
for (int i=0;i<deathlootsection.getKeys(false).size();i++) {
//ConfigurationSection deathlootsection = workable.getConfigurationSection("deathloot");
/*for (int i=0;i<deathlootsection.getKeys(false).size();i++) {
ItemStack item = deathlootsection.getItemStack((String)(deathlootsection.getKeys(false).toArray()[i]));
deathlootlist.add(item);
}
}*/
DeathManager.addNewDeathStructure(deathlootlist, new Location(Bukkit.getWorld(this.deathloc_world),this.deathloc_x,this.deathloc_y,this.deathloc_z), Bukkit.getPlayer(name));
}*/
}
try {
workable.save(config);

@ -411,6 +411,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
public static boolean restarting_server=false;
public static List<String> log_messages=new ArrayList<String>();
public static List<TemporaryLava> temporary_lava_list = new ArrayList<TemporaryLava>();
public static List<Chunk> temporary_chunks = new ArrayList<Chunk>();
long LastClearStructureTime = 0;
@ -872,6 +873,21 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
}
log(ChatColor.YELLOW+" "+(System.currentTimeMillis()-betweentime)+"ms",CLEANUP_DEBUG);
betweentime = System.currentTimeMillis();
log("Cleaning up Open Player Death Inventories ["+Bukkit.getOnlinePlayers().size()+"]",CLEANUP_DEBUG);
for (Player p : Bukkit.getOnlinePlayers()) {
if (p.getOpenInventory()!=null && p.getOpenInventory().getTopInventory()!=null &&
p.getOpenInventory().getTopInventory().getTitle()!=null &&
DeathManager.deathStructureExists(p) && p.getOpenInventory().getTopInventory().getTitle().contains("Death Loot")) {
Location deathloc = DeathManager.getDeathStructure(p).deathloc;
DropDeathInventoryContents(p, deathloc);
}
}
log(ChatColor.YELLOW+" "+(System.currentTimeMillis()-betweentime)+"ms",CLEANUP_DEBUG);
betweentime = System.currentTimeMillis();
log("Cleaning up Temporary Chunks ["+temporary_chunks.size()+"]",CLEANUP_DEBUG);
temporary_chunks.clear();
log(ChatColor.YELLOW+" "+(System.currentTimeMillis()-betweentime)+"ms",CLEANUP_DEBUG);
betweentime = System.currentTimeMillis();
long endtime = System.currentTimeMillis();
log("Cleanup Maintenance completed. Total Time: "+(endtime-starttime)+"ms.",CLEANUP_DEBUG);
}
@ -1539,6 +1555,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
@EventHandler(priority=EventPriority.LOW,ignoreCancelled = true)
public void onPlayerLeave(PlayerQuitEvent ev) {
Player p = ev.getPlayer();
TwosideSpleefGames.PassEvent(ev);
for (EliteMonster em : elitemonsters) {
em.runPlayerLeaveEvent(ev.getPlayer());
@ -1549,11 +1566,12 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
les.setGlow(ev.getPlayer(), null);
}
for (Player p :Bukkit.getOnlinePlayers()) {
if (p!=null) {
SoundUtils.playLocalSound(p, Sound.BLOCK_NOTE_PLING, 8, 0.7f);
for (Player pl :Bukkit.getOnlinePlayers()) {
if (pl!=null) {
SoundUtils.playLocalSound(pl, Sound.BLOCK_NOTE_PLING, 8, 0.7f);
}
}
Bukkit.getScheduler().scheduleSyncDelayedTask(this, new ShutdownServerForUpdate(),5);
//Find the player that is getting removed.
@ -3576,27 +3594,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
amounttotake = diff;
givePlayerBankMoney(p,-amounttotake);
}
Inventory contents = Bukkit.createInventory(p, 45);
log("Contents list includes ",2);
for (int i=0;i<p.getOpenInventory().getTopInventory().getSize();i++) {
if (p.getOpenInventory().getTopInventory().getItem(i)!=null) {
//p.sendMessage("Saving item "+p.getOpenInventory().getTopInventory().getItem(i).toString()+" in slot "+i);
log(p.getOpenInventory().getTopInventory().getItem(i).toString(),2);
contents.addItem(p.getOpenInventory().getTopInventory().getItem(i));
} else {
//p.sendMessage("Saving item AIR in slot "+i);
contents.addItem(new ItemStack(Material.AIR));
}
}
log("-------",2);
List<ItemStack> list=new ArrayList<ItemStack>();
for (int i=0;i<contents.getSize();i++) {
if (contents.getItem(i)!=null &&
contents.getItem(i).getType()!=Material.AIR) {
list.add(contents.getItem(i));
}
}
Bukkit.getScheduler().scheduleSyncDelayedTask(this,new DropDeathItems(p,list,deathloc),1);
DropDeathInventoryContents(p, deathloc, 1);
}
PlayerStructure pd = (PlayerStructure) playerdata.get(p.getUniqueId());
@ -3651,6 +3649,56 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
}
}
}
public void DropDeathInventoryContents(Player p, Location deathloc) {
List<ItemStack> list = PrepareDropItems(p);
deathloc.getWorld().loadChunk(deathloc.getChunk());
while (list.size()>0) {
if (deathloc.getChunk().isLoaded()) {
Item it = null;
do {
deathloc.getWorld().loadChunk(deathloc.getChunk());
it=deathloc.getWorld().dropItemNaturally(deathloc, list.get(0));
TwosideKeeper.temporary_chunks.add(deathloc.getChunk());
} while (it==null || !it.isValid());
it.setInvulnerable(true);
TwosideKeeper.log("Dropping "+list.get(0).toString()+" at Death location "+deathloc,2);
list.remove(0);
} else {
deathloc.getWorld().loadChunk(deathloc.getChunk());
}
}
for (Chunk c : TwosideKeeper.temporary_chunks) {
c.unload(true);
}
TwosideKeeper.temporary_chunks.clear();
}
public void DropDeathInventoryContents(Player p, Location deathloc, int tickdelay) {
List<ItemStack> list = PrepareDropItems(p);
Bukkit.getScheduler().scheduleSyncDelayedTask(this,new DropDeathItems(p,list,deathloc),tickdelay);
}
public List<ItemStack> PrepareDropItems(Player p) {
Inventory contents = Bukkit.createInventory(p, 45);
log("Contents list includes ",2);
for (int i=0;i<p.getOpenInventory().getTopInventory().getSize();i++) {
if (p.getOpenInventory().getTopInventory().getItem(i)!=null) {
//p.sendMessage("Saving item "+p.getOpenInventory().getTopInventory().getItem(i).toString()+" in slot "+i);
log(p.getOpenInventory().getTopInventory().getItem(i).toString(),2);
contents.addItem(p.getOpenInventory().getTopInventory().getItem(i));
} else {
//p.sendMessage("Saving item AIR in slot "+i);
contents.addItem(new ItemStack(Material.AIR));
}
}
log("-------",2);
List<ItemStack> list=new ArrayList<ItemStack>();
for (int i=0;i<contents.getSize();i++) {
if (contents.getItem(i)!=null &&
contents.getItem(i).getType()!=Material.AIR) {
list.add(contents.getItem(i));
}
}
return list;
}
public void AttemptToDropItems(Player p, Location deathloc) {
deathloc.getWorld().loadChunk(deathloc.getChunk());
@ -4326,6 +4374,9 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
ItemCubeUtils.SomeoneHasAFilterCubeOpen()) {
ev.setCancelled(true);
}
if (temporary_chunks.contains(c)) {
ev.setCancelled(true);
}
}
public void updateMonsterFlags(LivingEntity m) {
@ -5725,7 +5776,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
if (a.hasMetadata("DOUBLE_DAMAGE_ARR")) {item=Recipes.getArrowFromMeta("DOUBLE_DAMAGE_ARR"); specialarrow=true;}
if (specialarrow) {
ev.getItem().remove();
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(item));
ev.setCancelled(true);
AddToPlayerInventory(item, p);
//ev.getItem().setItemStack(item);
@ -5734,7 +5785,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
ItemStack collect = CustomItem.convertArrowEntityFromMeta(ev.getArrow());
if (collect!=null) {
ev.getItem().remove();
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(item));
AddToPlayerInventory(collect, p);
ev.setCancelled(true);
return;
@ -5776,7 +5827,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
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, 1.0f, 1.0f);
ev.getPlayer().playSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, 1.0f);
ev.getItem().remove();
ev.setCancelled(true);
}
@ -5806,8 +5857,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
if (GenericFunctions.isValidArrow(ev.getItem().getItemStack())) {
ev.setCancelled(true);
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(ev.getItem().getItemStack()));
ev.getItem().remove();
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
AddToPlayerInventory(ev.getItem().getItemStack(), p);
return;
}
@ -5821,8 +5872,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
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()));
ev.getItem().remove();
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
return;
} else {
ev.getItem().setItemStack(remaining[0]);
@ -5834,8 +5885,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
ItemStack[] remaining = InventoryUtils.insertItemsInFilterCube(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()));
ev.getItem().remove();
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
return;
} else {
ev.getItem().setItemStack(remaining[0]);
@ -5887,7 +5938,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
!PlayerMode.isSlayer(p)) {
p.getEquipment().setBoots(armor);
p.sendMessage(ChatColor.DARK_AQUA+"Automatically equipped "+ChatColor.YELLOW+(item.getItemMeta().hasDisplayName()?item.getItemMeta().getDisplayName():GenericFunctions.UserFriendlyMaterialName(item)));
SoundUtils.playLocalSound(p, Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
SoundUtils.playLocalSound(p, Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(armor));
GenericFunctions.playProperEquipSound(p,armor.getType());
p.updateInventory();
return true;
@ -5898,7 +5949,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
!PlayerMode.isSlayer(p)) {
p.getEquipment().setLeggings(armor);
p.sendMessage(ChatColor.DARK_AQUA+"Automatically equipped "+ChatColor.YELLOW+(item.getItemMeta().hasDisplayName()?item.getItemMeta().getDisplayName():GenericFunctions.UserFriendlyMaterialName(item)));
SoundUtils.playLocalSound(p, Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
SoundUtils.playLocalSound(p, Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(armor));
GenericFunctions.playProperEquipSound(p,armor.getType());
p.updateInventory();
return true;
@ -5909,7 +5960,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
!PlayerMode.isSlayer(p)) {
p.getEquipment().setChestplate(armor);
p.sendMessage(ChatColor.DARK_AQUA+"Automatically equipped "+ChatColor.YELLOW+(item.getItemMeta().hasDisplayName()?item.getItemMeta().getDisplayName():GenericFunctions.UserFriendlyMaterialName(item)));
SoundUtils.playLocalSound(p, Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
SoundUtils.playLocalSound(p, Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(armor));
GenericFunctions.playProperEquipSound(p,armor.getType());
p.updateInventory();
return true;
@ -5920,7 +5971,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
!PlayerMode.isSlayer(p)) {
p.getEquipment().setHelmet(armor);
p.sendMessage(ChatColor.DARK_AQUA+"Automatically equipped "+ChatColor.YELLOW+(item.getItemMeta().hasDisplayName()?item.getItemMeta().getDisplayName():GenericFunctions.UserFriendlyMaterialName(item)));
SoundUtils.playLocalSound(p, Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
SoundUtils.playLocalSound(p, Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(armor));
GenericFunctions.playProperEquipSound(p,armor.getType());
p.updateInventory();
return true;
@ -5935,7 +5986,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
p.getInventory().setExtraContents(new ItemStack[]{armor});
}
p.sendMessage(ChatColor.DARK_AQUA+"Automatically equipped "+ChatColor.YELLOW+(item.getItemMeta().hasDisplayName()?item.getItemMeta().getDisplayName():GenericFunctions.UserFriendlyMaterialName(item)));
SoundUtils.playLocalSound(p, Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
SoundUtils.playLocalSound(p, Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(armor));
GenericFunctions.playProperEquipSound(p,armor.getType());
p.updateInventory();
return true;
@ -5948,7 +5999,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
p.getInventory().setExtraContents(new ItemStack[]{armor});
}
p.sendMessage(ChatColor.DARK_AQUA+"Automatically equipped "+ChatColor.YELLOW+(item.getItemMeta().hasDisplayName()?item.getItemMeta().getDisplayName():GenericFunctions.UserFriendlyMaterialName(item)));
SoundUtils.playLocalSound(p, Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
SoundUtils.playLocalSound(p, Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(armor));
GenericFunctions.playProperEquipSound(p,armor.getType());
p.updateInventory();
return true;
@ -5956,7 +6007,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
if (ArrowQuiver.isValidQuiver(armor) && p.getInventory().getExtraContents()[0]==null) {
p.getInventory().setExtraContents(new ItemStack[]{armor});
p.sendMessage(ChatColor.DARK_AQUA+"Automatically equipped "+ChatColor.YELLOW+(item.getItemMeta().hasDisplayName()?item.getItemMeta().getDisplayName():GenericFunctions.UserFriendlyMaterialName(item)));
SoundUtils.playLocalSound(p, Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
SoundUtils.playLocalSound(p, Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(armor));
GenericFunctions.playProperEquipSound(p,armor.getType());
p.updateInventory();
return true;

@ -4,6 +4,7 @@ import java.text.DecimalFormat;
import java.util.Calendar;
import java.util.Collection;
import java.util.List;
import java.util.Random;
import java.util.Set;
import java.util.UUID;
@ -352,22 +353,24 @@ final class runServerHeartbeat implements Runnable {
public static void runFilterCubeCollection(Player p) {
if (InventoryUtils.isCarryingFilterCube(p)) {
if (InventoryUtils.hasFullInventory(p) && InventoryUtils.isCarryingFilterCube(p)) {
List<Entity> ents = p.getNearbyEntities(0.25, 0.25, 0.25);
for (Entity ent : ents) {
if (ent instanceof Item && GenericFunctions.itemCanBeSuckedUp((Item)ent)) {
Item it = (Item)ent;
ItemStack[] remaining = InventoryUtils.insertItemsInFilterCube(p, it.getItemStack());
if (remaining.length==0) {
it.remove();
SoundUtils.playGlobalSound(p.getLocation(), Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
return;
}
if (it.getPickupDelay()<it.getTicksLived()) {
ItemStack[] remaining = InventoryUtils.insertItemsInFilterCube(p, it.getItemStack());
if (remaining.length==0) {
SoundUtils.playGlobalSound(p.getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(it.getItemStack()));
it.remove();
return;
}
}
}
}
}
}
public static void runVacuumCubeSuckup(Player p) {
if (InventoryUtils.isCarryingVacuumCube(p)) {
//Suck up nearby item entities.
@ -402,12 +405,14 @@ final class runServerHeartbeat implements Runnable {
}
if (Math.abs(deltax)<0.25 &&
Math.abs(deltay)<0.25 &&
Math.abs(deltaz)<0.25) {
Math.abs(deltaz)<0.25 &&
InventoryUtils.hasFullInventory(p) &&
((Item)ent).getPickupDelay()<((Item)ent).getTicksLived()) {
//Collect this item.
if (((Item)ent).getItemStack().getType().isBlock()) {
ItemStack[] remaining = InventoryUtils.insertItemsInVacuumCube(p, ((Item) ent).getItemStack());
if (remaining.length==0) {
SoundUtils.playGlobalSound(ent.getLocation(), Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.4f);
SoundUtils.playGlobalSound(p.getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, SoundUtils.DetermineItemPitch(((Item) ent).getItemStack()));
ent.remove();
return;
}

Loading…
Cancel
Save