SteamWar/MissileWars
Archiviert
13
0

Add Item dropping capability
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful

Dieser Commit ist enthalten in:
yoyosource 2024-07-22 11:26:35 +02:00
Ursprung 2b3b885a7b
Commit 4b5daa208c
2 geänderte Dateien mit 57 neuen und 6 gelöschten Zeilen

Datei anzeigen

@ -21,12 +21,15 @@ package de.steamwar.misslewars.listener;
import de.steamwar.misslewars.Config;
import de.steamwar.misslewars.FightState;
import de.steamwar.misslewars.MWTeam;
import de.steamwar.misslewars.MissileWars;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityPickupItemEvent;
import org.bukkit.event.entity.FoodLevelChangeEvent;
import org.bukkit.event.entity.ItemDespawnEvent;
import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.PlayerDropItemEvent;
@ -34,6 +37,7 @@ import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerPickupArrowEvent;
import java.util.EnumSet;
import java.util.Map;
import java.util.Objects;
public class ArenaListener extends BasicListener {
@ -69,12 +73,7 @@ public class ArenaListener extends BasicListener {
e.setCancelled(true);
}
@EventHandler
public void onItemDrop(PlayerDropItemEvent e){
e.setCancelled(true);
}
@EventHandler
@EventHandler
public void onHunger(FoodLevelChangeEvent e){
e.setCancelled(true);
}

Datei anzeigen

@ -20,23 +20,41 @@
package de.steamwar.misslewars.listener;
import de.steamwar.misslewars.FightState;
import de.steamwar.misslewars.MWTeam;
import de.steamwar.misslewars.MissileWars;
import de.steamwar.misslewars.items.SpecialItem;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.EntityPickupItemEvent;
import org.bukkit.event.entity.ItemDespawnEvent;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.event.entity.ProjectileLaunchEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import java.util.EnumSet;
import java.util.HashSet;
import java.util.Set;
public class ItemListener extends BasicListener {
private Set<Integer> RED_ITEMS = new HashSet<>();
private Set<Integer> BLUE_ITEMS = new HashSet<>();
public ItemListener() {
super(EnumSet.of(FightState.FIGHTING));
}
@Override
public void enable() {
super.enable();
RED_ITEMS.clear();
BLUE_ITEMS.clear();
}
@EventHandler
public void onItemClick(PlayerInteractEvent e) {
ItemStack item = e.getItem();
@ -64,4 +82,38 @@ public class ItemListener extends BasicListener {
SpecialItem.handleHit(e);
}
@EventHandler
public void onItemDrop(PlayerDropItemEvent e){
MWTeam mwTeam = MissileWars.getTeam(e.getPlayer());
if (mwTeam == null) {
e.setCancelled(true);
return;
}
if (mwTeam == MissileWars.getRedTeam()) {
RED_ITEMS.add(e.getItemDrop().getEntityId());
} else {
BLUE_ITEMS.add(e.getItemDrop().getEntityId());
}
}
@EventHandler
public void onEntityPickupItem(EntityPickupItemEvent e) {
Player player = (Player) e.getEntity();
MWTeam mwTeam = MissileWars.getTeam(player);
if (mwTeam == null) {
e.setCancelled(true);
return;
}
if (mwTeam == MissileWars.getRedTeam() && !RED_ITEMS.contains(e.getItem().getEntityId())) {
e.setCancelled(true);
} else if (!BLUE_ITEMS.contains(e.getItem().getEntityId())) {
e.setCancelled(true);
}
}
@EventHandler
public void onItemDespawn(ItemDespawnEvent event) {
RED_ITEMS.remove(event.getEntity().getEntityId());
BLUE_ITEMS.remove(event.getEntity().getEntityId());
}
}