Skip to content

Commit

Permalink
Fix item drop bug
Browse files Browse the repository at this point in the history
  • Loading branch information
iquelli committed Apr 20, 2024
1 parent e37d455 commit 6b9dbba
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 15 deletions.
22 changes: 21 additions & 1 deletion src/main/java/net/tiagofar78/prisonescape/Events.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,12 @@
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntitySpawnEvent;
import org.bukkit.event.entity.FoodLevelChangeEvent;
import org.bukkit.event.inventory.InventoryAction;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerMoveEvent;
Expand Down Expand Up @@ -149,6 +151,7 @@ public void playerClickInventory(InventoryClickEvent e) {
return;
}

Player player = (Player) e.getWhoClicked();
boolean isPlayerInv = false;
if (e.getClickedInventory().getType() == InventoryType.PLAYER) {
Inventory topInv = e.getView().getTopInventory();
Expand All @@ -162,13 +165,18 @@ public void playerClickInventory(InventoryClickEvent e) {
return;
}

if (e.getAction() == InventoryAction.DROP_ALL_SLOT || e.getAction() == InventoryAction.DROP_ONE_SLOT) {
int slot = e.getSlot();
game.playerDropItem(player.getName(), slot);
return;
}

isPlayerInv = true;
}

ItemStack cursor = e.getCursor();
ItemStack current = e.getCurrentItem();

Player player = (Player) e.getWhoClicked();
Item item = ItemFactory.createItem(e.getCursor());
ClickReturnAction returnAction = game.playerClickMenu(player.getName(), e.getSlot(), item, isPlayerInv);
if (returnAction == ClickReturnAction.IGNORE) {
Expand Down Expand Up @@ -301,4 +309,16 @@ public void onPlayerCombat(EntityDamageByEntityEvent e) {
}
}

@EventHandler
public void onPlayerDropItem(PlayerDropItemEvent e) {
PrisonEscapeGame game = GameManager.getGame();
if (game == null) {
return;
}
Player player = e.getPlayer();
int slot = player.getInventory().getHeldItemSlot();

game.playerDropItem(player.getName(), slot);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import net.tiagofar78.prisonescape.items.Item;
import net.tiagofar78.prisonescape.items.SearchItem;
import net.tiagofar78.prisonescape.kits.PoliceKit;
import net.tiagofar78.prisonescape.kits.PrisionerKit;
import net.tiagofar78.prisonescape.kits.TeamSelectorKit;
import net.tiagofar78.prisonescape.managers.ConfigManager;
import net.tiagofar78.prisonescape.managers.GameManager;
Expand Down Expand Up @@ -323,8 +324,7 @@ private void startOngoingPhase() {
for (PrisonEscapePlayer player : _prisionersTeam.getMembers()) {
MessageLanguageManager messages = MessageLanguageManager.getInstanceByPlayer(player.getName());
BukkitMessageSender.sendChatMessage(player, messages.getPrisionerGameStartedMessage());
//PrisionerKit.giveKitToPlayer(player.getName());
PoliceKit.giveKitToPlayer(player.getName()); // for debugging purposes
PrisionerKit.giveKitToPlayer(player.getName());
}

for (PrisonEscapePlayer player : _policeTeam.getMembers()) {
Expand Down Expand Up @@ -681,6 +681,11 @@ private void playerOpenVault(PrisonEscapePlayer player, int vaultIndex, Item ite
vault.open(player);
}

public void playerDropItem(String playerName, int slot) {
PrisonEscapePlayer player = getPrisonEscapePlayer(playerName);
player.removeItem(slot);
}

private void policeSearchVault(PrisonEscapePlayer player, Vault vault, MessageLanguageManager messagesPolice) {
PrisonEscapePlayer vaultOwner = vault.getOwner();
MessageLanguageManager messagesPrisioner = MessageLanguageManager.getInstanceByPlayer(vaultOwner.getName());
Expand Down Expand Up @@ -734,7 +739,7 @@ public void playerDrankEnergyDrink(String playerName, int eneryDrinkIndex) {
}

public void policeOpenShop(String playerName) {
PrisonEscapePlayer player = getPlayerOnPrisionersTeam(playerName); // for debugging purposes
PrisonEscapePlayer player = getPlayerOnPoliceTeam(playerName);
if (player == null) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,10 @@ public void setItem(int index, Item item) {
}

public void removeItem(int index) {
setItem(index, null);
if (index >= INVENTORY_SIZE) {
return;
}
_inventory.set(index, null);
}

public boolean hasIllegalItems() {
Expand Down Expand Up @@ -177,17 +180,9 @@ public void decreaseBalance(int amount) {
}

public int buyItem(Item item, int price) {
if (item instanceof TrapItem) {
if (_numOfTrapsBought >= ((TrapItem) item).getLimit())
return -1;
} else if (item instanceof CameraItem) {
if (_numOfCamerasBought >= ((CameraItem) item).getLimit())
return -1;
} else if (item instanceof SensorItem) {
if (_numOfSensorsBought >= ((SensorItem) item).getLimit())
return -1;
if (!canBuyItem(item)) {
return -1;
}

if (price > _balance) {
return -2;
}
Expand All @@ -197,9 +192,31 @@ public int buyItem(Item item, int price) {
}

decreaseBalance(price);
updateItemCount(item);
return 0;
}

private boolean canBuyItem(Item item) {
if (item instanceof TrapItem && _numOfTrapsBought >= ((TrapItem) item).getLimit()) {
return false;
} else if (item instanceof CameraItem && _numOfCamerasBought >= ((CameraItem) item).getLimit()) {
return false;
} else if (item instanceof SensorItem && _numOfSensorsBought >= ((SensorItem) item).getLimit()) {
return false;
}
return true;
}

private void updateItemCount(Item item) {
if (item instanceof TrapItem) {
_numOfTrapsBought++;
} else if (item instanceof CameraItem) {
_numOfCamerasBought++;
} else if (item instanceof SensorItem) {
_numOfSensorsBought++;
}
}

// ########################################
// # Util #
// ########################################
Expand All @@ -209,4 +226,5 @@ public boolean equals(Object o) {
return o instanceof PrisonEscapePlayer && ((PrisonEscapePlayer) o).getName().equals(this.getName());
}


}

0 comments on commit 6b9dbba

Please sign in to comment.