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
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
<dependency>
<groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId>
<version>26.2.build.34-alpha</version>
<version>26.2.build.111-stable</version>
<scope>provided</scope>
</dependency>
<dependency>
Expand Down
66 changes: 38 additions & 28 deletions src/main/java/com/bekvon/bukkit/residence/Residence.java
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
import com.bekvon.bukkit.residence.listeners.ResidenceListener1_21_8_Paper;
import com.bekvon.bukkit.residence.listeners.ResidenceListener1_21_8_Spigot;
import com.bekvon.bukkit.residence.listeners.ResidenceListener1_21_9_Paper;
import com.bekvon.bukkit.residence.listeners.ResidenceListener26_2;
import com.bekvon.bukkit.residence.listeners.ResidencePlayerListener;
import com.bekvon.bukkit.residence.permissions.PermissionManager;
import com.bekvon.bukkit.residence.persistance.YMLSaveHelper;
Expand Down Expand Up @@ -581,49 +582,58 @@ public void onEnable() {

PluginManager pm = getServer().getPluginManager();

if (Version.isCurrentEqualOrHigher(Version.v1_8_R1))
pm.registerEvents(new ResidenceListener1_08(), this);
if (Version.isCurrentEqualOrHigher(Version.v1_9_R1))
if (Version.isCurrentEqualOrHigher(Version.v1_8_0)) {
pm.registerEvents(new ResidenceListener1_08(this), this);
}
if (Version.isCurrentEqualOrHigher(Version.v1_9_0)) {
pm.registerEvents(new ResidenceListener1_09(this), this);
if (Version.isCurrentEqualOrHigher(Version.v1_10_R1))
pm.registerEvents(new ResidenceListener1_10(), this);
if (Version.isCurrentEqualOrHigher(Version.v1_12_R1))
}
if (Version.isCurrentEqualOrHigher(Version.v1_10_0)) {
pm.registerEvents(new ResidenceListener1_10(this), this);
}
if (Version.isCurrentEqualOrHigher(Version.v1_12_0)) {
pm.registerEvents(new ResidenceListener1_12(this), this);
if (Version.isCurrentEqualOrHigher(Version.v1_13_R1))
}
if (Version.isCurrentEqualOrHigher(Version.v1_13_0)) {
pm.registerEvents(new ResidenceListener1_13(this), this);
if (Version.isCurrentEqualOrHigher(Version.v1_14_R1))
}
if (Version.isCurrentEqualOrHigher(Version.v1_14_0)) {
pm.registerEvents(new ResidenceListener1_14(this), this);
if (Version.isCurrentEqualOrHigher(Version.v1_15_R1))
}
if (Version.isCurrentEqualOrHigher(Version.v1_15_0)) {
pm.registerEvents(new ResidenceListener1_15(this), this);
if (Version.isCurrentEqualOrHigher(Version.v1_16_R1))
}
if (Version.isCurrentEqualOrHigher(Version.v1_16_0)) {
pm.registerEvents(new ResidenceListener1_16(this), this);

if ((Version.isCurrentEqualOrHigher(Version.v1_16_R3) && Version.isCurrentSubEqualOrHigher(5)) || Version.isCurrentEqualOrHigher(Version.v1_17_R1)) {
if (Version.isPaperBranch())
pm.registerEvents(new ResidenceListener1_16_5_Paper(this), this);
}

if (Version.isCurrentEqualOrHigher(Version.v1_17_R1))
if (Version.isCurrentEqualOrHigher(Version.v1_16_5) && Version.isPaperBranch()) {
pm.registerEvents(new ResidenceListener1_16_5_Paper(this), this);
}
if (Version.isCurrentEqualOrHigher(Version.v1_17_0)) {
pm.registerEvents(new ResidenceListener1_17(this), this);
if (Version.isCurrentEqualOrHigher(Version.v1_19_R1))
}
if (Version.isCurrentEqualOrHigher(Version.v1_19_0)) {
pm.registerEvents(new ResidenceListener1_19(this), this);
if (Version.isCurrentEqualOrHigher(Version.v1_20_R1))
}
if (Version.isCurrentEqualOrHigher(Version.v1_20_0)) {
pm.registerEvents(new ResidenceListener1_20(this), this);
if (Version.isCurrentEqualOrHigher(Version.v1_21_R1))
}
if (Version.isCurrentEqualOrHigher(Version.v1_21_0)) {
pm.registerEvents(new ResidenceListener1_21(this), this);

if ((Version.isCurrentEqualOrHigher(Version.v1_21_R5) && Version.isCurrentSubEqualOrHigher(8)) || Version.isCurrentEqualOrHigher(Version.v1_21_R6)) {
if (Version.isPaperBranch())
}
if (Version.isCurrentEqualOrHigher(Version.v1_21_8)) {
if (Version.isPaperBranch()) {
pm.registerEvents(new ResidenceListener1_21_8_Paper(this), this);
else
} else {
pm.registerEvents(new ResidenceListener1_21_8_Spigot(this), this);
}
}

if (Version.isCurrentEqualOrHigher(Version.v1_21_R6)) {
if (Version.isPaperBranch())
pm.registerEvents(new ResidenceListener1_21_9_Paper(this), this);
if (Version.isCurrentEqualOrHigher(Version.v1_21_9) && Version.isPaperBranch()) {
pm.registerEvents(new ResidenceListener1_21_9_Paper(this), this);
}
if (Version.isCurrentEqualOrHigher(Version.v26_2_0)) {
pm.registerEvents(new ResidenceListener26_2(this), this);
}

pm.registerEvents(new ResidenceBlockListener(this), this);
pm.registerEvents(getPlayerListener(), this);
pm.registerEvents(new ResidenceEntityListener(this), this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,13 @@
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Firework;
import org.bukkit.entity.Ghast;
import org.bukkit.entity.Hanging;
import org.bukkit.entity.Item;
import org.bukkit.entity.ItemFrame;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Monster;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.entity.Slime;
import org.bukkit.entity.Silverfish;
import org.bukkit.entity.Tameable;
import org.bukkit.entity.ThrownPotion;
Expand Down Expand Up @@ -124,24 +122,19 @@ public void onEntityChangeBlockEvent(EntityChangeBlockEvent event) {
if (FlagPermissions.has(block.getLocation(), Flags.destroy, FlagCombo.OnlyFalse))
event.setCancelled(true);

} else if (entity instanceof Boat) {
if (!CMIMaterial.get(block.getType()).equals(CMIMaterial.LILY_PAD))
return;

Player riderPlayer = null;

if (Version.isCurrentEqualOrLower(Version.v1_11_R1)) {
Entity rider = entity.getPassenger();
riderPlayer = rider instanceof Player ? (Player) rider : null;
} else if (entity instanceof Boat && CMIMaterial.get(block.getType()) == CMIMaterial.LILY_PAD) {
Entity rider = null;

if (Version.isCurrentLower(Version.v1_11_2)) {
rider = entity.getPassenger();
} else {
List<Entity> passengers = entity.getPassengers();
if (!passengers.isEmpty()) {
// first passenger
Entity rider = passengers.get(0);
riderPlayer = rider instanceof Player ? (Player) rider : null;
rider = passengers.get(0);
}
}
Player riderPlayer = rider instanceof Player ? (Player) rider : null;

if (riderPlayer != null) {
if (ResAdmin.isResAdmin(riderPlayer))
Expand Down Expand Up @@ -256,15 +249,31 @@ public void onEntityInteractEvent(EntityInteractEvent event) {

}

public static boolean isMonster(Entity ent) {
if (ent == null) {
public static boolean isMonster(Entity entity) {
if (entity == null) {
return false;
}
CMIEntityType type = CMIEntityType.get(ent);
return (ent instanceof Monster ||
ent instanceof Slime ||
ent instanceof Ghast ||
type == CMIEntityType.SHULKER);
if (Version.isCurrentEqualOrHigher(Version.v1_19_3)) {
return entity instanceof org.bukkit.entity.Enemy;
}
if (entity instanceof Monster) {
return true;
}
CMIEntityType type = CMIEntityType.get(entity);
if (type != null) {
switch (type) {
case ENDER_DRAGON:
case GHAST:
case HOGLIN:
case PHANTOM:
case SHULKER:
case SLIME:
return true;
default:
return false;
}
}
return false;
}

private static boolean isTamed(Entity ent) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,13 @@
import com.bekvon.bukkit.residence.utils.Utils;

public class ResidenceListener1_08 implements Listener {

private Residence plugin;

public ResidenceListener1_08(Residence plugin) {
this.plugin = plugin;
}

@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onPlayerInteractAtArmoStand(PlayerInteractAtEntityEvent event) {
// Disabling listener if flag disabled globally
Expand All @@ -30,7 +37,7 @@ public void onPlayerInteractAtArmoStand(PlayerInteractAtEntityEvent event) {

Player player = event.getPlayer();
// disabling event on world
if (Residence.getInstance().isDisabledWorldListener(player.getWorld()))
if (plugin.isDisabledWorldListener(player.getWorld()))
return;

Entity ent = event.getRightClicked();
Expand All @@ -56,7 +63,7 @@ public void AnimalUnleash(PlayerUnleashEntityEvent event) {

Entity entity = event.getEntity();
// disabling event on world
if (Residence.getInstance().isDisabledWorldListener(entity.getWorld()))
if (plugin.isDisabledWorldListener(entity.getWorld()))
return;

Player player = event.getPlayer();
Expand All @@ -81,7 +88,7 @@ public void onBlockExplodeEvent(BlockExplodeEvent event) {

Location loc = event.getBlock().getLocation();
// disabling event on world
if (Residence.getInstance().isDisabledWorldListener(loc.getWorld()))
if (plugin.isDisabledWorldListener(loc.getWorld()))
return;

FlagPermissions world = FlagPermissions.getPerms(loc.getWorld());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
Expand All @@ -19,7 +20,9 @@
import org.bukkit.event.entity.EntityToggleGlideEvent;
import org.bukkit.event.entity.LingeringPotionSplashEvent;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerItemConsumeEvent;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.potion.PotionEffect;

import com.bekvon.bukkit.residence.Residence;
Expand Down Expand Up @@ -317,4 +320,11 @@ public void onCauldronLevelChange(CauldronLevelChangeEvent event) {
lm.Flag_Deny.sendMessage(player, Flags.build);
event.setCancelled(true);
}

// Supported 1.9+
public static Material getHeldMaterial(PlayerInteractEntityEvent event) {
return event.getHand() == EquipmentSlot.OFF_HAND
? event.getPlayer().getInventory().getItemInOffHand().getType()
: event.getPlayer().getInventory().getItemInMainHand().getType();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,20 @@
import com.bekvon.bukkit.residence.protection.FlagPermissions;

public class ResidenceListener1_10 implements Listener {
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)

private Residence plugin;

public ResidenceListener1_10(Residence plugin) {
this.plugin = plugin;
}

@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onEntityHotFloorDamage(EntityDamageEvent event) {
// Disabling listener if flag disabled globally
if (!Flags.hotfloor.isGlobalyEnabled())
return;
// disabling event on world
if (Residence.getInstance().isDisabledWorldListener(event.getEntity().getWorld()))
if (plugin.isDisabledWorldListener(event.getEntity().getWorld()))
return;

if (event.getCause() != DamageCause.HOT_FLOOR)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,9 +146,7 @@ public void onPlayerInteractAtFish(PlayerInteractEntityEvent event) {

Player player = event.getPlayer();

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

if (held != Material.WATER_BUCKET)
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import com.bekvon.bukkit.residence.utils.Utils;

import net.Zrips.CMILib.Items.CMIMaterial;
import org.jetbrains.annotations.NotNull;

public class ResidenceListener1_14 implements Listener {

Expand Down Expand Up @@ -139,23 +140,27 @@ public void onVehicleDamage(VehicleDamageEvent event) {

@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onProjectileHitBell(ProjectileHitEvent event) {

// Disabling listener if flag disabled globally
if (!Flags.use.isGlobalyEnabled()) {
return;
}
Block block = event.getHitBlock();
if (block == null || block.getType() != Material.BELL) {
if (block == null) {
return;
}
// disabling event on world
if (plugin.isDisabledWorldListener(block.getWorld())) {
return;
}
if (block.getType() != Material.BELL) {
return;
}
if (shouldBlockProjectileHit(block, event.getEntity())) {
if (shouldDenyProjectileHit(block, event.getEntity(), Flags.use)) {
event.setCancelled(true);
}

}

public static boolean shouldBlockProjectileHit(Block block, Projectile projectile) {

Flags flag = FlagPermissions.checkBlockPhysicalFlag(block);
if (flag == null) {
return false;
}
public static boolean shouldDenyProjectileHit(@NotNull Block block, @NotNull Projectile projectile, @NotNull Flags flag) {
Player player = Utils.potentialProjectileToPlayer(projectile);
if (player != null) {

Expand Down Expand Up @@ -250,8 +255,11 @@ public void onVanillaRaidTrigger(RaidTriggerEvent event) {
if (plugin.isDisabledWorldListener(raidLoc.getWorld())) {
return;
}
if (FlagPermissions.has(raidLoc, Flags.raid, FlagCombo.OnlyFalse)) {
event.setCancelled(true);
}
if (FlagPermissions.has(raidLoc, Flags.raid, true)) {
return;
}
lm.Flag_Deny.sendMessage(event.getPlayer(), Flags.raid);
event.setCancelled(true);

}
}
Loading