diff --git a/build.gradle b/build.gradle index 9a2793a..6dd7a9e 100644 --- a/build.gradle +++ b/build.gradle @@ -4,10 +4,11 @@ plugins { } group = 'net.momirealms' -version = '2.2.3.1-hotfix' +version = '2.2.3.2' repositories { maven {name = "aliyun-repo"; url = "https://maven.aliyun.com/repository/public/"} + maven {name = "sk89q-repo"; url = "https://maven.enginehub.org/repo/"} maven {name = 'sonatype'; url = 'https://oss.sonatype.org/content/groups/public/'} maven {name = "dmulloy2-repo"; url = "https://repo.dmulloy2.net/repository/public/"} maven {name = "clip-repo"; url = 'https://repo.extendedclip.com/content/repositories/placeholderapi/'} @@ -25,8 +26,7 @@ dependencies { compileOnly ('com.zaxxer:HikariCP:5.0.1') compileOnly ('commons-io:commons-io:2.11.0') compileOnly ('dev.dejvokep:boosted-yaml:1.3.1') -// compileOnly ('org.geysermc.geyser:api:2.1.0-SNAPSHOT') -// compileOnly ('org.geysermc.floodgate:api:2.0-SNAPSHOT') + compileOnly ("com.comphenix.protocol:ProtocolLib:5.0.0") compileOnly ('net.md-5:bungeecord-api:1.19-R0.1-SNAPSHOT') compileOnly ('com.github.LoneDev6:api-itemsadder:3.4.1-r4') compileOnly ('org.apache.commons:commons-lang3:3.12.0') diff --git a/libs/ProtocolLib.jar b/libs/ProtocolLib.jar deleted file mode 100644 index 9ecf3d6..0000000 Binary files a/libs/ProtocolLib.jar and /dev/null differ diff --git a/src/main/java/net/momirealms/customnameplates/listener/EntityTagListener.java b/src/main/java/net/momirealms/customnameplates/listener/EntityTagListener.java index 0e73c5d..948eec3 100644 --- a/src/main/java/net/momirealms/customnameplates/listener/EntityTagListener.java +++ b/src/main/java/net/momirealms/customnameplates/listener/EntityTagListener.java @@ -18,10 +18,13 @@ package net.momirealms.customnameplates.listener; import net.momirealms.customnameplates.object.carrier.NamedEntityCarrier; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.event.player.PlayerToggleSneakEvent; +import org.bukkit.event.vehicle.VehicleExitEvent; +import org.spigotmc.event.entity.EntityMountEvent; public record EntityTagListener(NamedEntityCarrier namedEntityCarrier) implements Listener { @@ -34,4 +37,11 @@ public record EntityTagListener(NamedEntityCarrier namedEntityCarrier) implement public void onRespawn(PlayerRespawnEvent event) { namedEntityCarrier.onRespawn(event.getPlayer()); } + + @EventHandler + public void onExistVehicle(VehicleExitEvent event) { + if (event.getExited() instanceof Player player) { + namedEntityCarrier.onSneak(player, false); + } + } } \ No newline at end of file diff --git a/src/main/java/net/momirealms/customnameplates/manager/ImageManager.java b/src/main/java/net/momirealms/customnameplates/manager/ImageManager.java index 880c8d5..efb47f6 100644 --- a/src/main/java/net/momirealms/customnameplates/manager/ImageManager.java +++ b/src/main/java/net/momirealms/customnameplates/manager/ImageManager.java @@ -17,6 +17,7 @@ package net.momirealms.customnameplates.manager; +import com.francobm.magicosmetics.api.MagicAPI; import net.momirealms.customnameplates.CustomNameplates; import net.momirealms.customnameplates.object.Function; import net.momirealms.customnameplates.object.SimpleChar; diff --git a/src/main/java/net/momirealms/customnameplates/manager/ResourceManager.java b/src/main/java/net/momirealms/customnameplates/manager/ResourceManager.java index c1ae83c..1ff0b10 100644 --- a/src/main/java/net/momirealms/customnameplates/manager/ResourceManager.java +++ b/src/main/java/net/momirealms/customnameplates/manager/ResourceManager.java @@ -188,7 +188,8 @@ public class ResourceManager { try (BufferedWriter writer = new BufferedWriter( new OutputStreamWriter(new FileOutputStream(outPut), StandardCharsets.UTF_8))) { writer.write(sb.toString() - .replace("{hide}", !ConfigManager.hideScoreboardNumber ? "" : "if (Position.z == 0.0\n" + + .replace("{hide}", !ConfigManager.hideScoreboardNumber ? "" : + "if (Position.z == 0.0\n" + " && gl_Position.x >= 0.94\n" + " && gl_Position.y >= -0.35\n" + " && vertexColor.g == 84.0/255.0\n" + @@ -199,40 +200,41 @@ public class ResourceManager { " gl_Position = ProjMat * ModelViewMat * vec4(ScreenSize + 100.0, 0.0, ScreenSize + 100.0);\n" + " }" ) - .replace("{IA}", !ConfigManager.iaShaderSupport ? "" : "if (Color.xyz == vec3(255., 255., 254.) / 255.) {\n" + - " gl_Position = ProjMat * ModelViewMat * vertex;\n" + - " vertexColor = ((.6 + .6 * cos(6. * (gl_Position.x + GameTime * 1000.) + vec4(0, 23, 21, 1))) + vec4(0., 0., 0., 1.)) * texelFetch(Sampler2, UV2 / 16, 0);\n" + - " } else if(Color.xyz == vec3(255., 255., 253.) / 255.) {\n" + - " gl_Position = ProjMat * ModelViewMat * vertex;\n" + - " vertexColor = Color * texelFetch(Sampler2, UV2 / 16, 0);\n" + - " gl_Position.y = gl_Position.y + sin(GameTime * 12000. + (gl_Position.x * 6)) / 150.;\n" + - " } else if (Color.xyz == vec3(255., 255., 252.) / 255.) {\n" + - " gl_Position = ProjMat * ModelViewMat * vertex;\n" + - " vertexColor = ((.6 + .6 * cos(6. * (gl_Position.x + GameTime * 1000.) + vec4(0, 23, 21, 1))) + vec4(0., 0., 0., 1.)) * texelFetch(Sampler2, UV2 / 16, 0);\n" + - " gl_Position.y = gl_Position.y + sin(GameTime*12000. + (gl_Position.x*6)) / 150.;\n" + - " } else if (Color.xyz == vec3(255., 255., 251.) / 255.) {\n" + - " vertexColor = Color * texelFetch(Sampler2, UV2 / 16, 0);\n" + - " float vertexId = mod(gl_VertexID, 4.0);\n" + - " if (vertex.z <= 0.) {\n" + - " if (vertexId == 3. || vertexId == 0.) vertex.y += cos(GameTime * 12000. / 4) * 0.1;\n" + - " vertex.y += max(cos(GameTime*12000. / 4) * 0.1, 0.);\n" + - " } else {\n" + - " if (vertexId == 3. || vertexId == 0.) vertex.y -= cos(GameTime * 12000. / 4) * 3;\n" + - " vertex.y -= max(cos(GameTime*12000. / 4) * 4, 0.);\n" + - " }\n" + - " gl_Position = ProjMat * ModelViewMat * vertex;\n" + - " } else if (Color.xyz == vec3(255., 254., 254.) / 255.) {\n" + - " float vertexId = mod(gl_VertexID, 4.0);\n" + - " if (vertex.z <= 0.) {\n" + - " if (vertexId == 3. || vertexId == 0.) vertex.y += cos(GameTime * 12000. / 4) * 0.1;\n" + - " vertex.y += max(cos(GameTime*12000. / 4) * 0.1, 0.);\n" + - " } else {\n" + - " if (vertexId == 3. || vertexId == 0.) vertex.y -= cos(GameTime * 12000. / 4) * 3;\n" + - " vertex.y -= max(cos(GameTime*12000. / 4) * 4, 0.);\n" + - " }\n" + - " vertexColor = ((.6 + .6 * cos(6. * (gl_Position.x + GameTime * 1000.) + vec4(0, 23, 21, 1))) + vec4(0., 0., 0., 1.)) * texelFetch(Sampler2, UV2 / 16, 0);\n" + - " gl_Position = ProjMat * ModelViewMat * vertex;\n" + - " } else ") + .replace("{IA}", !ConfigManager.iaShaderSupport ? "" : + "if (Color.xyz == vec3(255., 255., 254.) / 255.) {\n" + + " gl_Position = ProjMat * ModelViewMat * vertex;\n" + + " vertexColor = ((.6 + .6 * cos(6. * (gl_Position.x + GameTime * 1000.) + vec4(0, 23, 21, 1))) + vec4(0., 0., 0., 1.)) * texelFetch(Sampler2, UV2 / 16, 0);\n" + + " } else if(Color.xyz == vec3(255., 255., 253.) / 255.) {\n" + + " gl_Position = ProjMat * ModelViewMat * vertex;\n" + + " vertexColor = Color * texelFetch(Sampler2, UV2 / 16, 0);\n" + + " gl_Position.y = gl_Position.y + sin(GameTime * 12000. + (gl_Position.x * 6)) / 150.;\n" + + " } else if (Color.xyz == vec3(255., 255., 252.) / 255.) {\n" + + " gl_Position = ProjMat * ModelViewMat * vertex;\n" + + " vertexColor = ((.6 + .6 * cos(6. * (gl_Position.x + GameTime * 1000.) + vec4(0, 23, 21, 1))) + vec4(0., 0., 0., 1.)) * texelFetch(Sampler2, UV2 / 16, 0);\n" + + " gl_Position.y = gl_Position.y + sin(GameTime*12000. + (gl_Position.x*6)) / 150.;\n" + + " } else if (Color.xyz == vec3(255., 255., 251.) / 255.) {\n" + + " vertexColor = Color * texelFetch(Sampler2, UV2 / 16, 0);\n" + + " float vertexId = mod(gl_VertexID, 4.0);\n" + + " if (vertex.z <= 0.) {\n" + + " if (vertexId == 3. || vertexId == 0.) vertex.y += cos(GameTime * 12000. / 4) * 0.1;\n" + + " vertex.y += max(cos(GameTime*12000. / 4) * 0.1, 0.);\n" + + " } else {\n" + + " if (vertexId == 3. || vertexId == 0.) vertex.y -= cos(GameTime * 12000. / 4) * 3;\n" + + " vertex.y -= max(cos(GameTime*12000. / 4) * 4, 0.);\n" + + " }\n" + + " gl_Position = ProjMat * ModelViewMat * vertex;\n" + + " } else if (Color.xyz == vec3(255., 254., 254.) / 255.) {\n" + + " float vertexId = mod(gl_VertexID, 4.0);\n" + + " if (vertex.z <= 0.) {\n" + + " if (vertexId == 3. || vertexId == 0.) vertex.y += cos(GameTime * 12000. / 4) * 0.1;\n" + + " vertex.y += max(cos(GameTime*12000. / 4) * 0.1, 0.);\n" + + " } else {\n" + + " if (vertexId == 3. || vertexId == 0.) vertex.y -= cos(GameTime * 12000. / 4) * 3;\n" + + " vertex.y -= max(cos(GameTime*12000. / 4) * 4, 0.);\n" + + " }\n" + + " vertexColor = ((.6 + .6 * cos(6. * (gl_Position.x + GameTime * 1000.) + vec4(0, 23, 21, 1))) + vec4(0., 0., 0., 1.)) * texelFetch(Sampler2, UV2 / 16, 0);\n" + + " gl_Position = ProjMat * ModelViewMat * vertex;\n" + + " } else ") ); } catch (IOException e) { diff --git a/src/main/java/net/momirealms/customnameplates/object/carrier/NamedEntityImpl.java b/src/main/java/net/momirealms/customnameplates/object/carrier/NamedEntityImpl.java index 83300b2..d47fe4a 100644 --- a/src/main/java/net/momirealms/customnameplates/object/carrier/NamedEntityImpl.java +++ b/src/main/java/net/momirealms/customnameplates/object/carrier/NamedEntityImpl.java @@ -166,8 +166,7 @@ public class NamedEntityImpl implements NamedEntity { for (Player viewer : asm.getNearbyPlayers()) { respawn(viewer); } - } - else { + } else { refresh(); } } @@ -242,21 +241,26 @@ public class NamedEntityImpl implements NamedEntity { private double getY() { Entity vehicle = owner.getVehicle(); if (vehicle != null) { - if (vehicle.getType() == EntityType.HORSE) { - return vehicle.getLocation().getY() + 0.85; - } - if (vehicle.getType() == EntityType.DONKEY) { - return vehicle.getLocation().getY() + 0.525; - } - if (vehicle.getType() == EntityType.PIG) { - return vehicle.getLocation().getY() + 0.325; - } - if (vehicle.getType() == EntityType.STRIDER) { - return vehicle.getLocation().getY() + 1.15; + switch (vehicle.getType()) { + case BOAT, CHEST_BOAT -> { + return vehicle.getLocation().getY() - 0.325; + } + case HORSE -> { + return vehicle.getLocation().getY() + 0.85; + } + case DONKEY -> { + return vehicle.getLocation().getY() + 0.525; + } + case PIG -> { + return vehicle.getLocation().getY() + 0.325; + } + case STRIDER -> { + return vehicle.getLocation().getY() + 1.15; + } } } if (owner.getPose() == Pose.SWIMMING || owner.isGliding()) { - return owner.getLocation().getY() - 1.22; + return owner.getLocation().getY() - 1.25; } return owner.getLocation().getY(); } diff --git a/src/main/java/net/momirealms/customnameplates/object/carrier/VehicleChecker.java b/src/main/java/net/momirealms/customnameplates/object/carrier/VehicleChecker.java index 4f7ee36..2c15546 100644 --- a/src/main/java/net/momirealms/customnameplates/object/carrier/VehicleChecker.java +++ b/src/main/java/net/momirealms/customnameplates/object/carrier/VehicleChecker.java @@ -58,7 +58,7 @@ public class VehicleChecker extends Function { for (Player player : Bukkit.getOnlinePlayers()) { this.refresh(player); } - },20,20); + },4,4); } @Override diff --git a/src/main/resources/configs/bubble.yml b/src/main/resources/configs/bubble.yml index c754062..4971532 100644 --- a/src/main/resources/configs/bubble.yml +++ b/src/main/resources/configs/bubble.yml @@ -1,5 +1,5 @@ # Armor_Stand / Text_Display (1.19.4+) -mode: Text_Display +mode: Armor_Stand # Text display options text-display-options: @@ -40,7 +40,7 @@ line-spacing: 0.4 bottom-line-Y-offset: 0.4 # Seconds -# This decides how long will the chat hologram remains +# This decides how long will the chat bubble remain # 气泡的停留时间 stay-time: 8 @@ -52,6 +52,6 @@ characters-per-line: 30 # 单次最大文字长度 max-character-length: 100 -# Cool Down +# Cool down (seconds) # 发送冷却 cool-down: 1 \ No newline at end of file