use of org.bukkit.entity.Player in project Prism-Bukkit by prism.
the class PlayerIdentification method getPrismPlayer.
/**
* Returns a `prism_players` ID for the described player name. If
* one cannot be found, returns 0.
*
* Used by the recorder in determining proper foreign key
*
* @param playerName
* @return
*/
public static PrismPlayer getPrismPlayer(String playerName) {
Player player = Bukkit.getPlayer(playerName);
if (player != null)
return getPrismPlayer(player);
// Player not online, we need to go to cache
PrismPlayer prismPlayer = lookupByName(playerName);
// Player found! Return the id
if (prismPlayer != null)
return prismPlayer;
// No player exists! We must create one
return null;
}
use of org.bukkit.entity.Player in project Prism-Bukkit by prism.
the class PrismInventoryEvents method onInventoryClick.
/**
* Handle inventory transfers
*
* @param event
*/
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onInventoryClick(final InventoryClickEvent event) {
if (!plugin.getConfig().getBoolean("prism.tracking.item-insert") && !plugin.getConfig().getBoolean("prism.tracking.item-remove"))
return;
Location containerLoc = null;
// Store some info
final Player player = (Player) event.getWhoClicked();
final ItemStack currentitem = event.getCurrentItem();
final ItemStack cursoritem = event.getCursor();
// Get location
if (event.getInventory().getHolder() instanceof BlockState) {
final BlockState b = (BlockState) event.getInventory().getHolder();
containerLoc = b.getLocation();
} else if (event.getInventory().getHolder() instanceof Entity) {
final Entity e = (Entity) event.getInventory().getHolder();
containerLoc = e.getLocation();
} else if (event.getInventory().getHolder() instanceof DoubleChest) {
final DoubleChest chest = (DoubleChest) event.getInventory().getHolder();
containerLoc = chest.getLocation();
}
// Double chests report 27 default size, though they actually
// have 6 rows of 9 for 54 slots
int defaultSize = event.getView().getType().getDefaultSize();
if (event.getInventory().getHolder() instanceof DoubleChest) {
defaultSize = event.getView().getType().getDefaultSize() * 2;
}
// slot count of the inventory. At that point, they represent the player inv.
if (event.getSlot() == event.getRawSlot() && event.getRawSlot() <= defaultSize) {
ItemStack addStack = null;
ItemStack removeStack = null;
if (currentitem != null && !currentitem.getType().equals(Material.AIR) && cursoritem != null && !cursoritem.getType().equals(Material.AIR)) {
if (currentitem.isSimilar(cursoritem)) {
// Items are similar enough to stack
int amount = cursoritem.getAmount();
if (event.isRightClick()) {
amount = 1;
}
int remaining = (currentitem.getMaxStackSize() - currentitem.getAmount());
int inserted = (amount <= remaining) ? amount : remaining;
if (inserted > 0) {
addStack = cursoritem.clone();
addStack.setAmount(inserted);
}
} else {
// Items are not similar
addStack = cursoritem.clone();
removeStack = currentitem.clone();
}
} else if (currentitem != null && !currentitem.getType().equals(Material.AIR)) {
removeStack = currentitem.clone();
} else if (cursoritem != null && !cursoritem.getType().equals(Material.AIR)) {
addStack = cursoritem.clone();
}
// Record events
if (addStack != null) {
recordInvAction(player, containerLoc, addStack, event.getRawSlot(), "item-insert", event);
}
if (removeStack != null) {
recordInvAction(player, containerLoc, removeStack, event.getRawSlot(), "item-remove", event);
}
return;
}
if (event.isShiftClick() && cursoritem != null && cursoritem.getType().equals(Material.AIR)) {
recordInvAction(player, containerLoc, currentitem, -1, "item-insert", event);
}
}
use of org.bukkit.entity.Player in project Prism-Bukkit by prism.
the class PrismPlayerEvents method onCraftItem.
/**
*
* @param event
*/
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onCraftItem(final CraftItemEvent event) {
final Player player = (Player) event.getWhoClicked();
if (!Prism.getIgnore().event("craft-item", player))
return;
final ItemStack item = event.getRecipe().getResult();
RecordingQueue.addToQueue(ActionFactory.createItemStack("craft-item", item, 1, -1, null, player.getLocation(), player.getName()));
}
use of org.bukkit.entity.Player in project Prism-Bukkit by prism.
the class PrismPlayerEvents method onCommandPreprocess.
/**
* Log command use
*
* @param event
*/
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onCommandPreprocess(PlayerCommandPreprocessEvent event) {
final Player player = event.getPlayer();
final String cmd = event.getMessage().toLowerCase();
final String[] cmdArgs = cmd.split(" ");
final String primaryCmd = cmdArgs[0].substring(1);
if (plugin.getConfig().getBoolean("prism.alerts.illegal-commands.enabled")) {
if (illegalCommands.contains(primaryCmd)) {
final String msg = player.getName() + " attempted an illegal command: " + primaryCmd + ". Originally: " + cmd;
player.sendMessage(Prism.messenger.playerError("Sorry, this command is not available in-game."));
plugin.alertPlayers(null, msg);
event.setCancelled(true);
// Log to console
if (plugin.getConfig().getBoolean("prism.alerts.illegal-commands.log-to-console")) {
Prism.log(msg);
}
// Log to commands
List<String> commands = plugin.getConfig().getStringList("prism.alerts.illegal-commands.log-commands");
MiscUtils.dispatchAlert(msg, commands);
}
}
if (!Prism.getIgnore().event("player-command", player))
return;
// Ignore some commands based on config
if (ignoreCommands.contains(primaryCmd)) {
return;
}
RecordingQueue.addToQueue(ActionFactory.createPlayer("player-command", player, event.getMessage()));
}
use of org.bukkit.entity.Player in project Prism-Bukkit by prism.
the class PrismPlayerEvents method onPlayerBucketFill.
/**
*
* @param event
*/
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerBucketFill(final PlayerBucketFillEvent event) {
final Player player = event.getPlayer();
if (!Prism.getIgnore().event("bucket-fill", player))
return;
final Block spot = event.getBlockClicked().getRelative(event.getBlockFace());
String liquid_type = "milk";
if (spot.getTypeId() == 8 || spot.getTypeId() == 9) {
liquid_type = "water";
} else if (spot.getTypeId() == 10 || spot.getTypeId() == 11) {
liquid_type = "lava";
}
final Handler pa = ActionFactory.createPlayer("bucket-fill", player, liquid_type);
// Override the location with the area taken
pa.setX(spot.getX());
pa.setY(spot.getY());
pa.setZ(spot.getZ());
RecordingQueue.addToQueue(pa);
}
Aggregations