Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,6 @@ public void onLingeringSplashPotion(LingeringPotionSplashEvent event) {
// disabling event on world
if (Residence.getInstance().isDisabledWorldListener(potion.getWorld()))
return;
if (event.isCancelled())
return;

boolean harmfull = false;
mein: for (PotionEffect one : potion.getEffects()) {
Expand Down Expand Up @@ -220,8 +218,9 @@ public void onLingeringEffectApply(AreaEffectCloudApplyEvent event) {
}
}

// FrostWalker form frosted_ice, Wither form wither_rose
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onFrostWalker(EntityBlockFormEvent event) {
public void onEntityBlockFormEvent(EntityBlockFormEvent event) {
// Disabling listener if flag disabled globally
if (!Flags.build.isGlobalyEnabled())
return;
Expand All @@ -247,18 +246,18 @@ public void onFrostWalker(EntityBlockFormEvent event) {
return;

event.setCancelled(true);
return;
}

// SnowGolem already has SnowTrail Flag
// Check all entity trigger FrostWalker
// ArmorStand Skeleton Zombies ..
if (!(entity instanceof Snowman)) {
// SnowGolem already has SnowTrail Flag
// Check all entity trigger FrostWalker
// ArmorStand Skeleton Zombies ...
} else if (!(entity instanceof Snowman)) {

FlagPermissions perms = FlagPermissions.getPerms(event.getBlock().getLocation());
if (perms.has(Flags.build, true))
return;

event.setCancelled(true);

}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,20 @@
package com.bekvon.bukkit.residence.listeners;

import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityPickupItemEvent;
import org.bukkit.event.player.PlayerItemDamageEvent;
import org.bukkit.inventory.ItemStack;

import com.bekvon.bukkit.residence.Residence;
import com.bekvon.bukkit.residence.containers.Flags;
import com.bekvon.bukkit.residence.permissions.PermissionManager.ResPerm;
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
import com.bekvon.bukkit.residence.protection.FlagPermissions;
import com.bekvon.bukkit.residence.protection.FlagPermissions.FlagCombo;

import net.Zrips.CMILib.Items.CMIItemStack;
import net.Zrips.CMILib.Items.CMIMaterial;

public class ResidenceListener1_12 implements Listener {

Expand All @@ -28,52 +25,62 @@ public ResidenceListener1_12(Residence plugin) {
}

@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onPlayerPickupItemEvent(EntityPickupItemEvent event) {
public void onEntityPickupItemEvent(EntityPickupItemEvent event) {
// Disabling listener if flag disabled globally
if (!Flags.itempickup.isGlobalyEnabled())
return;
ClaimedResidence res = plugin.getResidenceManager().getByLoc(event.getItem().getLocation());
if (res == null)

// disabling event on world
if (plugin.isDisabledWorldListener(event.getItem().getWorld()))
return;
if (event.getEntity().hasMetadata("NPC"))

Entity entity = event.getEntity();
if (entity.hasMetadata("NPC"))
return;

if (event.getEntity() instanceof Player) {
Player player = (Player) event.getEntity();
if (!res.getPermissions().playerHas(player, Flags.itempickup, FlagCombo.OnlyFalse))
if (entity instanceof Player) {

Player player = (Player) entity;

if (FlagPermissions.has(event.getItem().getLocation(), player, Flags.itempickup, true))
return;

if (ResPerm.bypass_itempickup.hasPermission(player, 10000L))
return;

} else {
if (!res.getPermissions().has(Flags.itempickup, FlagCombo.OnlyFalse))

if (FlagPermissions.has(event.getItem().getLocation(), Flags.itempickup, true))
return;

}

event.setCancelled(true);
event.getItem().setPickupDelay(plugin.getConfigManager().getItemPickUpDelay() * 20);

}

@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onItemDamage(PlayerItemDamageEvent event) {
public void onPlayerItemDamageEvent(PlayerItemDamageEvent event) {
// Disabling listener if flag disabled globally
if (!Flags.nodurability.isGlobalyEnabled())
return;
// disabling event on world
if (Residence.getInstance().isDisabledWorldListener(event.getPlayer().getWorld()))
return;

Player player = event.getPlayer();
Location loc = player.getLocation();
if (!FlagPermissions.has(loc, Flags.nodurability, false))
// disabling event on world
if (plugin.isDisabledWorldListener(player.getWorld()))
return;

ItemStack held = CMIItemStack.getItemInMainHand(player);

if (held.getType() == Material.AIR)
if (FlagPermissions.has(player.getLocation(), Flags.nodurability, FlagCombo.FalseOrNone))
return;

if (held.getType().toString().equalsIgnoreCase("TRIDENT"))
CMIMaterial held = CMIMaterial.get(event.getItem());
// https://github.com/Zrips/Residence/issues/359
// not sure if we need to keep this check line
if (held == CMIMaterial.TRIDENT)
return;

event.setDamage(0);
event.setCancelled(true);

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.bukkit.block.data.BlockData;
import org.bukkit.block.data.type.Farmland;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Fish;
import org.bukkit.entity.Item;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
Expand All @@ -16,7 +17,9 @@
import org.bukkit.event.block.BlockPhysicsEvent;
import org.bukkit.event.entity.EntityInteractEvent;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.EquipmentSlot;

import com.bekvon.bukkit.residence.Residence;
import com.bekvon.bukkit.residence.containers.Flags;
Expand All @@ -27,7 +30,9 @@
import com.bekvon.bukkit.residence.protection.FlagPermissions.FlagCombo;
import com.bekvon.bukkit.residence.utils.Utils;

import net.Zrips.CMILib.Items.CMIMC;
import net.Zrips.CMILib.Items.CMIMaterial;
import net.Zrips.CMILib.Version.Version;

public class ResidenceListener1_13 implements Listener {

Expand Down Expand Up @@ -111,9 +116,17 @@ public void onEntityTouchButtonPlateDenyMsg(ProjectileHitEvent event) {

Block block = hitBlock.getLocation().clone().add(event.getHitBlockFace().getDirection()).getBlock();

Flags flag = null;

CMIMaterial cmat = CMIMaterial.get(block.getType());

if (!cmat.isButton() && !cmat.isPlate())
if (cmat.containsCriteria(CMIMC.BUTTON)) {
flag = Flags.button;
} else if (cmat.containsCriteria(CMIMC.PRESSUREPLATE)) {
flag = Flags.pressure;
}

if (flag == null)
return;

Player player = Utils.potentialProjectileToPlayer(event.getEntity());
Expand All @@ -124,23 +137,13 @@ public void onEntityTouchButtonPlateDenyMsg(ProjectileHitEvent event) {
return;

FlagPermissions perms = FlagPermissions.getPerms(block.getLocation(), player);
boolean hasUse = perms.playerHas(player, Flags.use, true);

if (cmat.isButton()) {
if (perms.playerHas(player, Flags.button, hasUse))
return;

// The perfect spot, the earlier check sends exactly one deny msgs
// Deny msgs for the EntityInteractEvent below to avoid chat spam
lm.Flag_Deny.sendMessage(player, Flags.button);

} else {
if (perms.playerHas(player, Flags.pressure, hasUse))
return;
if (perms.playerHas(player, flag, perms.playerHas(player, Flags.use, true)))
return;

lm.Flag_Deny.sendMessage(player, Flags.pressure);
// The perfect spot, the earlier check sends exactly one deny msg
// for the EntityInteractEvent below to avoid chat spam
lm.Flag_Deny.sendMessage(player, flag);

}
}

@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
Expand All @@ -150,8 +153,6 @@ public void onEntityTouchButtonPlate(EntityInteractEvent event) {
return;

Block block = event.getBlock();
if (block == null)
return;
// disabling event on world
if (plugin.isDisabledWorldListener(block.getWorld()))
return;
Expand All @@ -161,53 +162,78 @@ public void onEntityTouchButtonPlate(EntityInteractEvent event) {
if (!(entity instanceof Projectile) && !(entity instanceof Item))
return;

Flags flag = null;

CMIMaterial cmat = CMIMaterial.get(block.getType());

// Only check Button and Plate
if (!cmat.isButton() && !cmat.isPlate())
if (cmat.containsCriteria(CMIMC.BUTTON)) {
flag = Flags.button;
} else if (cmat.containsCriteria(CMIMC.PRESSUREPLATE)) {
flag = Flags.pressure;
}

if (flag == null)
return;

// Only get projectile player source
Player player = Utils.potentialProjectileToPlayer(entity);
if (player != null) {

if (ResAdmin.isResAdmin(player))
return;

FlagPermissions perms = FlagPermissions.getPerms(block.getLocation(), player);
boolean hasUse = perms.playerHas(player, Flags.use, true);

if (cmat.isButton()) {
if (perms.playerHas(player, Flags.button, hasUse))
return;

} else {
if (perms.playerHas(player, Flags.pressure, hasUse))
return;

}
if (perms.playerHas(player, flag, perms.playerHas(player, Flags.use, true)))
return;

} else {
// Entity not player source
// Check potential block as a shooter which should be allowed if its inside same
// residence
if (Utils.isSourceBlockInsideSameResidence(entity, ClaimedResidence.getByLoc(block.getLocation())))
return;

FlagPermissions perms = FlagPermissions.getPerms(block.getLocation());
boolean hasUse = perms.has(Flags.use, true);
if (perms.has(flag, perms.has(Flags.use, true)))
return;

}

if (cmat.isButton()) {
if (perms.has(Flags.button, hasUse))
return;
event.setCancelled(true);

} else {
if (perms.has(Flags.pressure, hasUse))
return;
}

}
}
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onPlayerInteractAtFish(PlayerInteractEntityEvent event) {

if (Version.isCurrentEqualOrHigher(Version.v1_17_R1))
return;
// Disabling listener if flag disabled globally
if (!Flags.animalkilling.isGlobalyEnabled())
return;

Entity ent = event.getRightClicked();
// disabling event on world
if (plugin.isDisabledWorldListener(ent.getWorld()))
return;

if (!(ent instanceof Fish))
return;

Player player = event.getPlayer();

Material held = (event.getHand() == EquipmentSlot.OFF_HAND)
? player.getInventory().getItemInOffHand().getType()
: player.getInventory().getItemInMainHand().getType();

if (held != Material.WATER_BUCKET)
return;

if (ResAdmin.isResAdmin(player))
return;

if (FlagPermissions.has(ent.getLocation(), player, Flags.animalkilling, true))
return;

lm.Flag_Deny.sendMessage(player, Flags.animalkilling);
event.setCancelled(true);

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ public void onProjectileHitBell(ProjectileHitEvent event) {
}

@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onPlayerharvest(PlayerInteractEvent event) {
public void onPlayerInteractHarvest(PlayerInteractEvent event) {
// Disabling listener if flag disabled globally
if (!Flags.harvest.isGlobalyEnabled())
return;
Expand Down
Loading