下面列出了怎么用org.bukkit.event.entity.EntityToggleGlideEvent的API类实例代码及写法,或者点击链接到github查看源代码。
@EventHandler(priority = EventPriority.LOWEST)
public void onCustomElytraPlayerGlideLowest(CustomElytraPlayerToggleGlideEvent customEvent) {
if (customEvent.isCancelled())
return;
CustomItem cItem = customEvent.getCustomItem();
if (!(cItem.getPermissions() instanceof ElytraPermissions))
return;
ElytraPermissions perm = (ElytraPermissions) cItem.getPermissions();
EntityToggleGlideEvent event = customEvent.getEntityToggleGlideEvent();
if (event.getEntity().getType().equals(EntityType.PLAYER)
&& !PermissionUtils.allowedAction((Player) event.getEntity(), perm.getType(), perm.getFlight()))
event.setCancelled(true);
}
@EventHandler(ignoreCancelled = true)
public void onEntityToggleGlideEvent(EntityToggleGlideEvent event)
{
Entity entity = event.getEntity();
if (entity instanceof Player)
{
Player player = (Player)entity;
ApplicableRegionSet regions = this.plugin.getWorldGuardCommunicator().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
ForcedState state = WorldGuardUtils.queryValue(player, player.getWorld(), regions.getRegions(), Flags.GLIDE);
if (state != ForcedState.ALLOW)
{
event.setCancelled(true);
player.setGliding(state == ForcedState.FORCE);
if (state == ForcedState.DENY)
{
player.teleport(player.getLocation());
}
}
}
}
@EventHandler(priority= EventPriority.HIGH, ignoreCancelled=true)
public void onToggleGlide(EntityToggleGlideEvent e) {
if(!e.isGliding()) return;
FileConfiguration config = this.expansion.getConfig("cheat-prevention.yml");
if(!config.getBoolean("items.prevent-elytra")) return;
Entity entity = e.getEntity();
if(!(entity instanceof Player)) return;
Player player = (Player) entity;
ICombatManager combatManager = this.plugin.getCombatManager();
if(!combatManager.isInCombat(player)) return;
e.setCancelled(true);
player.setGliding(false);
String message = this.plugin.getLanguageMessageColoredWithPrefix("cheat-prevention.elytra.no-gliding");
this.plugin.sendMessage(player, message);
}
@EventHandler(priority = EventPriority.MONITOR)
public void onEntityToggleGlide(EntityToggleGlideEvent event) {
if (event.getEntityType() != EntityType.PLAYER)
return;
PlayerInventory inv = ((Player) event.getEntity()).getInventory();
if (inv.getChestplate() == null)
return;
ItemStack elytra = inv.getChestplate();
if (!AdditionsAPI.isCustomItem(elytra)
|| new CustomItemStack(elytra).getCustomItem().getItemType() != ItemType.ELYTRA)
return;
Bukkit.getServer().getPluginManager()
.callEvent(new CustomElytraPlayerToggleGlideEvent(event, new CustomItemStack(elytra)));
}
public CustomElytraPlayerToggleGlideEvent(EntityToggleGlideEvent event, CustomItemStack cStack) {
super(cStack);
this.entityToggleGlideEvent = event;
}
public EntityToggleGlideEvent getEntityToggleGlideEvent() {
return entityToggleGlideEvent;
}
@EventHandler(priority = EventPriority.MONITOR)
public void entityToggleGlide(EntityToggleGlideEvent event) {
if (!(event.getEntity() instanceof Player)) return;
Player player = (Player) event.getEntity();
if (!isOnPipe(player)) return;
// Cancelling can only be done by updating the player's metadata
if (event.isGliding() && event.isCancelled()) {
PacketWrapper packet = new PacketWrapper(0x44, null, getUserConnection(player));
try {
packet.write(Type.VAR_INT, player.getEntityId());
byte bitmask = 0;
// Collect other metadata for the mitmask
if (player.getFireTicks() > 0) {
bitmask |= 0x01;
}
if (player.isSneaking()) {
bitmask |= 0x02;
}
// 0x04 is unused
if (player.isSprinting()) {
bitmask |= 0x08;
}
if (swimmingMethodExists && player.isSwimming()) {
bitmask |= 0x10;
}
if (player.hasPotionEffect(PotionEffectType.INVISIBILITY)) {
bitmask |= 0x20;
}
if (player.isGlowing()) {
bitmask |= 0x40;
}
// leave 0x80 as 0 to stop gliding
packet.write(Types1_14.METADATA_LIST, Arrays.asList(new Metadata(0, MetaType1_14.Byte, bitmask)));
packet.send(Protocol1_15To1_14_4.class);
} catch (Exception e) {
e.printStackTrace();
}
}
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onMove(final EntityToggleGlideEvent event) {
if (!(event.getEntity() instanceof Player)) return;
// Get player
final Player player = (Player) event.getEntity();
StatzUtil.isGliding.put(player.getUniqueId(), event.isGliding());
}