新增支持1.21的合成台权限控制

This commit is contained in:
zhangyuheng 2024-08-01 23:06:01 +08:00
parent 49772fadc9
commit 9180a2a4e0
6 changed files with 58 additions and 53 deletions

View File

@ -1,13 +1,24 @@
plugins { plugins {
id("java") id("java")
id("com.github.johnrengelman.shadow") version "8.1.1" id("com.github.johnrengelman.shadow") version "8.1.1"
} }
group = "cn.lunadeer" group = "cn.lunadeer"
version = "1.42.9-beta" version = "1.43.0-beta"
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
}
// utf-8
tasks.withType<JavaCompile> {
options.encoding = "UTF-8"
}
repositories { repositories {
mavenCentral() mavenCentral()
mavenLocal()
maven("https://oss.sonatype.org/content/groups/public") maven("https://oss.sonatype.org/content/groups/public")
maven("https://repo.papermc.io/repository/maven-public/") maven("https://repo.papermc.io/repository/maven-public/")
maven("https://jitpack.io") maven("https://jitpack.io")
@ -17,6 +28,7 @@ repositories {
dependencies { dependencies {
compileOnly("io.papermc.paper:paper-api:1.21-R0.1-SNAPSHOT") compileOnly("io.papermc.paper:paper-api:1.21-R0.1-SNAPSHOT")
compileOnly("com.github.BlueMap-Minecraft:BlueMapAPI:v2.6.2") compileOnly("com.github.BlueMap-Minecraft:BlueMapAPI:v2.6.2")
compileOnly("us.dynmap:DynmapCoreAPI:3.4") compileOnly("us.dynmap:DynmapCoreAPI:3.4")
@ -24,11 +36,19 @@ dependencies {
implementation("org.yaml:snakeyaml:2.0") implementation("org.yaml:snakeyaml:2.0")
} }
java { tasks {
toolchain.languageVersion.set(JavaLanguageVersion.of(21)) processResources {
// replace @version@ in plugin.yml with project version
filesMatching("**/plugin.yml") {
filter {
it.replace("@version@", project.version.toString())
}
}
} }
tasks.shadowJar { shadowJar {
archiveBaseName.set(rootProject.name) archiveClassifier.set("")
archiveVersion.set(version.toString()) archiveVersion.set(project.version.toString())
dependsOn(processResources)
}
} }

View File

@ -1,7 +1,7 @@
package cn.lunadeer.dominion; package cn.lunadeer.dominion;
import cn.lunadeer.dominion.events.EnvironmentEvents_1_20_1; import cn.lunadeer.dominion.events.EnvironmentEvents;
import cn.lunadeer.dominion.events.PlayerEvents_1_20_1; import cn.lunadeer.dominion.events.PlayerEvents;
import cn.lunadeer.dominion.events.SelectPointEvents; import cn.lunadeer.dominion.events.SelectPointEvents;
import cn.lunadeer.dominion.managers.ConfigManager; import cn.lunadeer.dominion.managers.ConfigManager;
import cn.lunadeer.dominion.managers.DatabaseTables; import cn.lunadeer.dominion.managers.DatabaseTables;
@ -41,8 +41,8 @@ public final class Dominion extends JavaPlugin {
AutoClean.run(); AutoClean.run();
Cache.instance = new Cache(); Cache.instance = new Cache();
Bukkit.getPluginManager().registerEvents(new PlayerEvents_1_20_1(), this); Bukkit.getPluginManager().registerEvents(new PlayerEvents(), this);
Bukkit.getPluginManager().registerEvents(new EnvironmentEvents_1_20_1(), this); Bukkit.getPluginManager().registerEvents(new EnvironmentEvents(), this);
Bukkit.getPluginManager().registerEvents(new SelectPointEvents(), this); Bukkit.getPluginManager().registerEvents(new SelectPointEvents(), this);
Objects.requireNonNull(Bukkit.getPluginCommand("dominion")).setExecutor(new Commands()); Objects.requireNonNull(Bukkit.getPluginCommand("dominion")).setExecutor(new Commands());

View File

@ -10,7 +10,9 @@ import org.bukkit.entity.*;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.block.*; import org.bukkit.event.block.Action;
import org.bukkit.event.block.BlockFromToEvent;
import org.bukkit.event.block.BlockIgniteEvent;
import org.bukkit.event.entity.*; import org.bukkit.event.entity.*;
import org.bukkit.event.hanging.HangingBreakByEntityEvent; import org.bukkit.event.hanging.HangingBreakByEntityEvent;
import org.bukkit.event.hanging.HangingBreakEvent; import org.bukkit.event.hanging.HangingBreakEvent;
@ -21,7 +23,7 @@ import java.util.Objects;
import static cn.lunadeer.dominion.events.Apis.checkFlag; import static cn.lunadeer.dominion.events.Apis.checkFlag;
import static org.bukkit.Material.FARMLAND; import static org.bukkit.Material.FARMLAND;
public class EnvironmentEvents_1_20_1 implements Listener { public class EnvironmentEvents implements Listener {
@EventHandler(priority = EventPriority.HIGHEST) // creeper_explode @EventHandler(priority = EventPriority.HIGHEST) // creeper_explode
public void onEntityExplode(EntityExplodeEvent event) { public void onEntityExplode(EntityExplodeEvent event) {
Entity entity = event.getEntity(); Entity entity = event.getEntity();
@ -81,8 +83,7 @@ public class EnvironmentEvents_1_20_1 implements Listener {
return damager.getType() != EntityType.CREEPER return damager.getType() != EntityType.CREEPER
&& damager.getType() != EntityType.WITHER_SKULL && damager.getType() != EntityType.WITHER_SKULL
&& damager.getType() != EntityType.FIREBALL && damager.getType() != EntityType.FIREBALL
&& damager.getType().getTypeId() != 200; && damager.getType() != EntityType.END_CRYSTAL;
// 200 -> end_crystal
} }
@EventHandler(priority = EventPriority.HIGHEST) // dragon_break_block @EventHandler(priority = EventPriority.HIGHEST) // dragon_break_block
@ -147,8 +148,7 @@ public class EnvironmentEvents_1_20_1 implements Listener {
@EventHandler(priority = EventPriority.HIGHEST) // tnt_explode @EventHandler(priority = EventPriority.HIGHEST) // tnt_explode
public void onTntExplode(EntityExplodeEvent event) { public void onTntExplode(EntityExplodeEvent event) {
Entity entity = event.getEntity(); Entity entity = event.getEntity();
// 45 -> minecart_tnt, 20 -> primed_tnt if (entity.getType() != EntityType.TNT_MINECART && entity.getType() != EntityType.TNT) {
if (entity.getType().getTypeId() != 45 && entity.getType().getTypeId() != 20) {
return; return;
} }
event.blockList().removeIf(block -> { event.blockList().removeIf(block -> {
@ -164,8 +164,7 @@ public class EnvironmentEvents_1_20_1 implements Listener {
return; return;
} }
Entity damager = event.getDamager(); Entity damager = event.getDamager();
// 45 -> minecart_tnt, 20 -> primed_tnt if (entity.getType() != EntityType.TNT_MINECART && entity.getType() != EntityType.TNT) {
if (entity.getType().getTypeId() != 45 && entity.getType().getTypeId() != 20) {
return; return;
} }
DominionDTO dom = Cache.instance.getDominionByLoc(entity.getLocation()); DominionDTO dom = Cache.instance.getDominionByLoc(entity.getLocation());

View File

@ -15,7 +15,10 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.block.*; import org.bukkit.event.block.*;
import org.bukkit.event.entity.*; import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityMountEvent;
import org.bukkit.event.entity.EntityPlaceEvent;
import org.bukkit.event.entity.ProjectileLaunchEvent;
import org.bukkit.event.hanging.HangingBreakByEntityEvent; import org.bukkit.event.hanging.HangingBreakByEntityEvent;
import org.bukkit.event.hanging.HangingBreakEvent; import org.bukkit.event.hanging.HangingBreakEvent;
import org.bukkit.event.hanging.HangingPlaceEvent; import org.bukkit.event.hanging.HangingPlaceEvent;
@ -29,7 +32,7 @@ import org.bukkit.material.Colorable;
import static cn.lunadeer.dominion.events.Apis.checkFlag; import static cn.lunadeer.dominion.events.Apis.checkFlag;
import static cn.lunadeer.dominion.events.Apis.getInvDominion; import static cn.lunadeer.dominion.events.Apis.getInvDominion;
public class PlayerEvents_1_20_1 implements Listener { public class PlayerEvents implements Listener {
@EventHandler @EventHandler
public void onPlayerJoin(PlayerJoinEvent event) { public void onPlayerJoin(PlayerJoinEvent event) {
Player bukkitPlayer = event.getPlayer(); Player bukkitPlayer = event.getPlayer();
@ -325,6 +328,19 @@ public class PlayerEvents_1_20_1 implements Listener {
checkFlag(dom, Flag.CRAFT, bukkitPlayer, event); checkFlag(dom, Flag.CRAFT, bukkitPlayer, event);
} }
@EventHandler(priority = EventPriority.HIGHEST) // crafter
public void onCrafterOpen(InventoryOpenEvent event) {
Inventory inv = event.getInventory();
if (inv.getType() != InventoryType.CRAFTER) {
return;
}
if (!(event.getPlayer() instanceof Player bukkitPlayer)) {
return;
}
DominionDTO dom = getInvDominion(bukkitPlayer, inv);
checkFlag(dom, Flag.CRAFTER, bukkitPlayer, event);
}
@EventHandler(priority = EventPriority.HIGHEST) // comparer @EventHandler(priority = EventPriority.HIGHEST) // comparer
public void comparerChange(PlayerInteractEvent event) { public void comparerChange(PlayerInteractEvent event) {
if (event.getAction() != Action.RIGHT_CLICK_BLOCK) { if (event.getAction() != Action.RIGHT_CLICK_BLOCK) {
@ -620,7 +636,7 @@ public class PlayerEvents_1_20_1 implements Listener {
Teleport.doTeleportSafely(player, to).thenAccept((success) -> { Teleport.doTeleportSafely(player, to).thenAccept((success) -> {
if (!success) { if (!success) {
Notification.warn(player, "传送失败,你将被传送到复活点"); Notification.warn(player, "传送失败,你将被传送到复活点");
player.teleportAsync(player.getBedSpawnLocation() == null ? player.teleport(player.getBedSpawnLocation() == null ?
player.getWorld().getSpawnLocation() : player.getWorld().getSpawnLocation() :
player.getBedSpawnLocation() player.getBedSpawnLocation()
, PlayerTeleportEvent.TeleportCause.PLUGIN); , PlayerTeleportEvent.TeleportCause.PLUGIN);

View File

@ -1,30 +0,0 @@
package cn.lunadeer.dominion.events;
import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.Flag;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.event.inventory.InventoryType;
import static cn.lunadeer.dominion.events.Apis.checkFlag;
import static cn.lunadeer.dominion.events.Apis.getInvDominion;
public class PlayerEvents_1_21 extends PlayerEvents_1_20_1 {
@EventHandler(priority = EventPriority.HIGHEST) // crafter
public void onCrafterOpen(InventoryOpenEvent event) {
Inventory inv = event.getInventory();
if (inv.getType() != InventoryType.CRAFTER) {
return;
}
if (!(event.getPlayer() instanceof Player bukkitPlayer)) {
return;
}
DominionDTO dom = getInvDominion(bukkitPlayer, inv);
checkFlag(dom, Flag.CRAFTER, bukkitPlayer, event);
}
}

View File

@ -1,5 +1,5 @@
name: Dominion name: Dominion
version: '${version}' version: @version@
main: cn.lunadeer.dominion.Dominion main: cn.lunadeer.dominion.Dominion
api-version: '1.20' api-version: '1.20'
load: STARTUP load: STARTUP