From 89525a4e6b377d4e9d6b06bc00edddbbb1257cee Mon Sep 17 00:00:00 2001 From: youpaishidifu Date: Thu, 23 Jul 2026 18:13:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=90=AD=E6=A1=A5=E8=9B=8B=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=EF=BC=9A=E6=96=B9=E5=9D=97=E6=94=B9=E4=B8=BA=E7=8E=BB=E7=92=83?= =?UTF-8?q?=E3=80=81=E8=B7=B3=E8=BF=87=E5=89=8D2tick=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E7=94=9F=E6=88=90=E7=8E=A9=E5=AE=B6=E5=A4=B4=E9=A1=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Sdf1_login/PVPArenaManager.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/Sdf1_login/PVPArenaManager.java b/src/main/java/Sdf1_login/PVPArenaManager.java index 3931ce6..0200692 100644 --- a/src/main/java/Sdf1_login/PVPArenaManager.java +++ b/src/main/java/Sdf1_login/PVPArenaManager.java @@ -132,10 +132,12 @@ public class PVPArenaManager implements Listener { // ★ PVP特殊道具常量 private static final String FIRE_CHARGE_NAME = "§c§lPVP火球"; private static final String BRIDGE_EGG_NAME = "§a§lPVP搭桥蛋"; - private static final Material BRIDGE_BLOCK = Material.SMOOTH_STONE; + private static final Material BRIDGE_BLOCK = Material.GLASS; // 搭桥蛋追踪:egg实体ID -> 跟随任务的ID private final Map bridgeEggTrackers = new ConcurrentHashMap<>(); + // 搭桥蛋已跳过的tick数(前2tick跳过,避免生成在玩家身上) + private final Map bridgeEggSkipTicks = new ConcurrentHashMap<>(); // 记分板条目缓存:玩家名 -> 侧边栏条目字符串(用于精确清除) private final Map scoreEntries = new ConcurrentHashMap<>(); @@ -1192,8 +1194,12 @@ public class PVPArenaManager implements Listener { if (egg.isDead() || !egg.isValid()) { Integer tid = bridgeEggTrackers.remove(eid); if (tid != null) Bukkit.getScheduler().cancelTask(tid); + bridgeEggSkipTicks.remove(eid); return; } + // 前2tick跳过,让蛋飞离玩家身体后再开始铺路 + int skip = bridgeEggSkipTicks.merge(eid, 1, Integer::sum); + if (skip <= 2) return; // 在蛋当前位置放置方块 Block b = egg.getLocation().getBlock(); if (b.getType().isAir()) { @@ -1215,6 +1221,7 @@ public class PVPArenaManager implements Listener { if (taskId != null) { Bukkit.getScheduler().cancelTask(taskId); } + bridgeEggSkipTicks.remove(eid); } /**