Fixed a bug causing items to vanish while picking up partial stacks that
enter a player's inventory.
This commit is contained in:
parent
30915bb6b6
commit
c86785c16b
Binary file not shown.
@ -264,11 +264,17 @@ public class InventoryUtils {
|
||||
if (itemStackInventory.isSimilar(itemStackAdded) && itemStackInventory.getAmount()<itemStackInventory.getMaxStackSize()) {
|
||||
int amt = itemStackInventory.getMaxStackSize()-itemStackInventory.getAmount();
|
||||
if (itemStackAdded.getAmount()>=amt) {
|
||||
//TwosideKeeper.log(" itemStackAdded amt: "+itemStackAdded.getAmount()+", amt:"+amt,0);
|
||||
int remaining = itemStackAdded.getAmount()-amt;
|
||||
itemStackInventory.setAmount(itemStackInventory.getMaxStackSize());
|
||||
itemStackAdded.setAmount(remaining);
|
||||
|
||||
//TwosideKeeper.log(" ItemStack in inventory: "+itemStackInventory,0);
|
||||
//TwosideKeeper.log(" Remaining amount: "+itemStackAdded,0);
|
||||
//TwosideKeeper.log(" Remaining was: "+remaining,0);
|
||||
} else {
|
||||
itemStackInventory.setAmount(itemStackInventory.getAmount()+itemStackAdded.getAmount());
|
||||
//TwosideKeeper.log(" End. We're done. Added "+itemStackAdded,0);
|
||||
itemStackAdded=null;
|
||||
break; //Ran out, we're done here.
|
||||
}
|
||||
|
@ -3,10 +3,8 @@ package sig.plugin.TwosideKeeper;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
@ -21,7 +19,6 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
@ -49,9 +46,6 @@ import org.bukkit.entity.Bat;
|
||||
import org.bukkit.entity.Blaze;
|
||||
import org.bukkit.entity.Chicken;
|
||||
import org.bukkit.entity.Creeper;
|
||||
import org.bukkit.entity.EnderDragon;
|
||||
import org.bukkit.entity.EnderDragon.Phase;
|
||||
import org.bukkit.entity.EnderSignal;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.ExperienceOrb;
|
||||
@ -91,13 +85,11 @@ import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockDispenseEvent;
|
||||
import org.bukkit.event.block.BlockFromToEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.block.SignChangeEvent;
|
||||
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
|
||||
import org.bukkit.event.entity.EntityChangeBlockEvent;
|
||||
import org.bukkit.event.entity.EntityCombustEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
@ -121,10 +113,8 @@ import org.bukkit.event.entity.ProjectileLaunchEvent;
|
||||
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.event.inventory.CraftItemEvent;
|
||||
import org.bukkit.event.inventory.InventoryAction;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||
import org.bukkit.event.inventory.InventoryDragEvent;
|
||||
import org.bukkit.event.inventory.InventoryMoveItemEvent;
|
||||
import org.bukkit.event.inventory.InventoryOpenEvent;
|
||||
import org.bukkit.event.inventory.InventoryPickupItemEvent;
|
||||
@ -134,7 +124,6 @@ import org.bukkit.event.inventory.PrepareAnvilEvent;
|
||||
import org.bukkit.event.inventory.PrepareItemCraftEvent;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
import org.bukkit.event.player.PlayerAchievementAwardedEvent;
|
||||
import org.bukkit.event.player.PlayerArmorStandManipulateEvent;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||
import org.bukkit.event.player.PlayerExpChangeEvent;
|
||||
@ -165,7 +154,6 @@ import org.bukkit.event.world.ChunkUnloadEvent;
|
||||
import org.bukkit.event.world.WorldSaveEvent;
|
||||
import org.bukkit.inventory.EquipmentSlot;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.InventoryHolder;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.Recipe;
|
||||
import org.bukkit.inventory.ShapedRecipe;
|
||||
@ -178,8 +166,6 @@ import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
import org.bukkit.potion.PotionEffectTypeWrapper;
|
||||
import org.bukkit.potion.PotionType;
|
||||
import org.bukkit.util.Vector;
|
||||
import org.inventivetalent.glow.GlowAPI;
|
||||
|
||||
@ -190,7 +176,6 @@ import com.google.common.collect.ImmutableSet;
|
||||
|
||||
import aPlugin.API.Chests;
|
||||
import events.PlayerGainItemEvent;
|
||||
import events.PlayerManualPickupItemEvent;
|
||||
import events.PluginLoadEvent;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.chat.ComponentBuilder;
|
||||
@ -200,7 +185,6 @@ import net.minecraft.server.v1_9_R1.EnumParticle;
|
||||
import net.minecraft.server.v1_9_R1.MinecraftServer;
|
||||
import sig.plugin.AutoPluginUpdate.AnnounceUpdateEvent;
|
||||
import sig.plugin.TwosideKeeper.Boss.Arena;
|
||||
import sig.plugin.TwosideKeeper.Boss.SendMiningFatigueToAllNearbyElderGuardians;
|
||||
import sig.plugin.TwosideKeeper.Events.EntityDamagedEvent;
|
||||
import sig.plugin.TwosideKeeper.Events.InventoryUpdateEvent;
|
||||
import sig.plugin.TwosideKeeper.Events.InventoryUpdateEvent.UpdateReason;
|
||||
@ -258,7 +242,6 @@ import sig.plugin.TwosideKeeper.HelperStructures.Utils.ItemCubeUtils;
|
||||
import sig.plugin.TwosideKeeper.HelperStructures.Utils.ItemUtils;
|
||||
import sig.plugin.TwosideKeeper.HelperStructures.Utils.MessageUtils;
|
||||
import sig.plugin.TwosideKeeper.HelperStructures.Utils.SoundUtils;
|
||||
import sig.plugin.TwosideKeeper.HelperStructures.Utils.TextUtils;
|
||||
import sig.plugin.TwosideKeeper.HelperStructures.Utils.TimeUtils;
|
||||
import sig.plugin.TwosideKeeper.HelperStructures.Utils.Classes.SoundData;
|
||||
import sig.plugin.TwosideKeeper.HolidayEvents.Christmas;
|
||||
@ -268,7 +251,6 @@ import sig.plugin.TwosideKeeper.Logging.LootLogger;
|
||||
import sig.plugin.TwosideKeeper.Logging.MysteriousEssenceLogger;
|
||||
import sig.plugin.TwosideKeeper.Monster.Dummy;
|
||||
import sig.plugin.TwosideKeeper.Monster.HellfireGhast;
|
||||
import sig.plugin.TwosideKeeper.Monster.HellfireSpider;
|
||||
import sig.plugin.TwosideKeeper.Monster.MonsterTemplate;
|
||||
|
||||
|
||||
@ -6977,7 +6959,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
habitat_data.addKillToLocation(m);
|
||||
}
|
||||
habitat_data.startinglocs.remove(m.getUniqueId());
|
||||
log("Killed by a player.",0);
|
||||
//log("Killed by a player.",0);
|
||||
killedByPlayer = true;
|
||||
Player p = (Player)ms.GetTarget();
|
||||
AwardDeathAchievements(p,ev.getEntity());
|
||||
@ -7017,7 +6999,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
dropmult+=GenericFunctions.getAbilityValue(ArtifactAbility.GREED, p.getEquipment().getItemInMainHand())/100d;
|
||||
}
|
||||
} else {
|
||||
TwosideKeeper.log("killedByPlayer flag set to false.", 0);
|
||||
//TwosideKeeper.log("killedByPlayer flag set to false.", 0);
|
||||
killedByPlayer=false;
|
||||
}
|
||||
}
|
||||
@ -7940,13 +7922,20 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
return;
|
||||
}
|
||||
Player p = ev.getPlayer();
|
||||
//log("Item Right now: "+ev.getItem().getItemStack(),0);
|
||||
InventoryUpdateEvent.TriggerUpdateInventoryEvent(p,ev.getItem().getItemStack(),UpdateReason.PICKEDUPITEM);
|
||||
ItemStack newstack = InventoryUtils.AttemptToFillPartialSlotsFirst(p,ev.getItem().getItemStack());
|
||||
//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()));
|
||||
if (ev.getRemaining()>0) {
|
||||
Item it = ev.getItem();
|
||||
it.getItemStack().setAmount(ev.getRemaining());
|
||||
GenericFunctions.giveItem(p, it.getItemStack());
|
||||
}
|
||||
ev.getItem().remove();ev.setCancelled(true);return;}
|
||||
ev.getItem().setItemStack(newstack);
|
||||
log("Pickup Metadata: "+ev.getItem().getItemStack().getItemMeta().toString(),5);
|
||||
//log("Pickup Metadata: "+ev.getItem().getItemStack().getItemMeta().toString(),0);
|
||||
//GenericFunctions.updateSetItems(p.getInventory());
|
||||
GenericFunctions.UpdateItemLore(ev.getItem().getItemStack());
|
||||
/*//LEGACY CODE
|
||||
|
Loading…
x
Reference in New Issue
Block a user