Skip to content

Commit

Permalink
1.20.3 support
Browse files Browse the repository at this point in the history
Xiao-MoMi committed Nov 2, 2024
1 parent 7d6fba2 commit f5d2d6a
Showing 17 changed files with 225 additions and 42 deletions.
Original file line number Diff line number Diff line change
@@ -90,6 +90,10 @@ private static void checkFolia() {
}
}

public static boolean isVersionNewerThan1_21_2() {
return version >= 21.19;
}

public static boolean isVersionNewerThan1_20_5() {
return version >= 20.49;
}
Original file line number Diff line number Diff line change
@@ -100,6 +100,7 @@ public ActionBarConfig[] actionBarConfigs() {
public void handleActionBarPacket(CNPlayer player, String miniMessage) {
ActionBarSender sender = senders.get(player.uuid());
if (sender != null) {
if (miniMessage.length() >= 1024) return;
sender.externalActionBar(miniMessage);
}
}
Original file line number Diff line number Diff line change
@@ -160,7 +160,7 @@ public void sendLatestActionBar() {
if (isTemporarilyHidden()) return;
if (latestContent != null) {
updateLastUpdateTime();
Object packet = CustomNameplates.getInstance().getPlatform().setActionBarTextPacket(AdventureHelper.miniMessageToMinecraftComponent(latestContent, "np", "ab"));
Object packet = CustomNameplates.getInstance().getPlatform().setActionBarTextPacket(AdventureHelper.miniMessageToMinecraftComponent(latestContent, "nameplates", "actionbar"));
CustomNameplates.getInstance().getPacketSender().sendPacket(owner, packet);
}
}
Original file line number Diff line number Diff line change
@@ -70,10 +70,18 @@ public void generate() {
this.saveLegacyUnicodes();

if (ConfigManager.enableShader()) {
if (!VersionHelper.isVersionNewerThan1_20_5()) {
this.generateShaders("ResourcePack" + File.separator + "assets" + File.separator + "minecraft" + File.separator + "shaders" + File.separator + "core" + File.separator, false);
this.generateShaders("ResourcePack" + File.separator + "overlay_1_20_5" + File.separator + "assets" + File.separator + "minecraft" + File.separator + "shaders" + File.separator + "core" + File.separator, true);
} else {
if (VersionHelper.isVersionNewerThan1_21_2()) {
this.generateShaders("ResourcePack" + File.separator + "overlay_1_21_2" + File.separator + "assets" + File.separator + "minecraft" + File.separator + "shaders" + File.separator + "core" + File.separator, true);
try {
FileUtils.copyDirectory(
new File(plugin.getDataFolder(), "ResourcePack" + File.separator + "overlay_1_21_2"),
new File(plugin.getDataFolder(), "ResourcePack")
);
FileUtils.deleteDirectory(new File(plugin.getDataFolder(), "ResourcePack" + File.separator + "overlay_1_21_2"));
} catch (IOException e) {
throw new RuntimeException(e);
}
} else if (VersionHelper.isVersionNewerThan1_20_5()) {
this.generateShaders("ResourcePack" + File.separator + "overlay_1_20_5" + File.separator + "assets" + File.separator + "minecraft" + File.separator + "shaders" + File.separator + "core" + File.separator, true);
try {
FileUtils.copyDirectory(
@@ -84,6 +92,11 @@ public void generate() {
} catch (IOException e) {
throw new RuntimeException(e);
}
this.generateShaders("ResourcePack" + File.separator + "overlay_1_21_2" + File.separator + "assets" + File.separator + "minecraft" + File.separator + "shaders" + File.separator + "core" + File.separator, true);
} else {
this.generateShaders("ResourcePack" + File.separator + "assets" + File.separator + "minecraft" + File.separator + "shaders" + File.separator + "core" + File.separator, false);
this.generateShaders("ResourcePack" + File.separator + "overlay_1_20_5" + File.separator + "assets" + File.separator + "minecraft" + File.separator + "shaders" + File.separator + "core" + File.separator, true);
this.generateShaders("ResourcePack" + File.separator + "overlay_1_21_2" + File.separator + "assets" + File.separator + "minecraft" + File.separator + "shaders" + File.separator + "core" + File.separator, true);
}
}

@@ -174,7 +187,11 @@ private void generateFont() {

@SuppressWarnings("ResultOfMethodCallIgnored")
private void setPackFormat() {
if (VersionHelper.isVersionNewerThan1_20_5()) {
if (VersionHelper.isVersionNewerThan1_21_2()) {
plugin.getConfigManager().saveResource("ResourcePack" + File.separator + "pack_1_21_2.mcmeta");
File file = new File(plugin.getDataFolder(), "ResourcePack" + File.separator + "pack_1_21_2.mcmeta");
file.renameTo(new File(plugin.getDataFolder(), "ResourcePack" + File.separator + "pack.mcmeta"));
} else if (VersionHelper.isVersionNewerThan1_20_5()) {
plugin.getConfigManager().saveResource("ResourcePack" + File.separator + "pack_1_20_5.mcmeta");
File file = new File(plugin.getDataFolder(), "ResourcePack" + File.separator + "pack_1_20_5.mcmeta");
file.renameTo(new File(plugin.getDataFolder(), "ResourcePack" + File.separator + "pack.mcmeta"));
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#version 150
#moj_import<fog.glsl>
#moj_import <fog.glsl>

uniform sampler2D Sampler0;
uniform vec4 ColorModulator;
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#version 150
#moj_import<fog.glsl>
#moj_import <fog.glsl>

uniform sampler2D Sampler0;
uniform vec4 ColorModulator;
Original file line number Diff line number Diff line change
@@ -1,9 +1,4 @@
{
"blend": {
"func": "add",
"srcrgb": "srcalpha",
"dstrgb": "1-srcalpha"
},
"vertex": "rendertype_text",
"fragment": "rendertype_text",
"attributes": [
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#version 150
#moj_import <minecraft:fog.glsl>

uniform sampler2D Sampler0;
uniform vec4 ColorModulator;
uniform float FogStart,FogEnd;
uniform vec4 FogColor;
uniform float GameTime;

in float vertexDistance;
in vec4 vertexColor;
in vec2 texCoord0;
in float depthLevel;
%SHADER_0%
out vec4 fragColor;

void main() {
vec4 texColor = texture(Sampler0, texCoord0);
vec4 color = texColor * vertexColor * ColorModulator;%SHADER_1%
if (color.a < 0.1) {
discard;
}
if (depthLevel == 114514.0) {
discard;
}
if (texColor.a == 254.0/255.0) {
if (depthLevel == 1000.0
|| depthLevel == 2200
|| depthLevel == 50
|| depthLevel == 2650
|| depthLevel == 200
|| depthLevel == 400
|| depthLevel == 2800
|| depthLevel == 2400
) {
discard;
} else {
color = vec4(texColor.rgb, 1.0) * vertexColor * ColorModulator;
}
}
fragColor = linear_fog(color, vertexDistance, FogStart, FogEnd, FogColor);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"vertex": "minecraft:core/rendertype_text",
"fragment": "minecraft:core/rendertype_text",
"attributes": [
"Position",
"Color",
"UV0",
"UV2"
],
"samplers": [
{ "name": "Sampler0" },
{ "name": "Sampler2" }
],
"uniforms": [
{ "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
{ "name": "ColorModulator", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] },
{ "name": "FogStart", "type": "float", "count": 1, "values": [ 0.0 ] },
{ "name": "FogEnd", "type": "float", "count": 1, "values": [ 1.0 ] },
{ "name": "GameTime", "type": "float", "count": 1, "values": [ 1.0 ] },
{ "name": "FogColor", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#version 150
#moj_import <minecraft:fog.glsl>

in vec3 Position;
in vec4 Color;
in vec2 UV0;
in ivec2 UV2;

uniform sampler2D Sampler2;
uniform mat4 ModelViewMat;
uniform mat4 ProjMat;
uniform float GameTime;
uniform int FogShape;
uniform vec2 ScreenSize;

out float vertexDistance;
out vec4 vertexColor;
out vec2 texCoord0;
out float depthLevel;
%SHADER_0%
void main() {
vec4 vertex = vec4(Position, 1.0);
vertexDistance = fog_distance(Position, FogShape);
depthLevel = Position.z;
texCoord0 = UV0;
%SHADER_1%%SHADER_2%%SHADER_3%
}
43 changes: 25 additions & 18 deletions backend/src/main/resources/ResourcePack/pack.mcmeta
Original file line number Diff line number Diff line change
@@ -1,21 +1,28 @@
{
"pack":{
"pack_format": 8,
"description":"CustomNameplates",
"supported_formats": {
"min_inclusive": 8,
"max_inclusive": 34
"pack": {
"pack_format": 13,
"description": "CustomNameplates",
"supported_formats": {
"min_inclusive": 13,
"max_inclusive": 43
}
},
"overlays": {
"entries": [
{
"formats": {
"min_inclusive": 32,
"max_inclusive": 34
},
"directory": "overlay_1_20_5"
},
{
"formats": {
"min_inclusive": 42,
"max_inclusive": 43
},
"directory": "overlay_1_21_2"
}
]
}
},
"overlays": {
"entries": [
{
"formats": {
"min_inclusive": 32,
"max_inclusive": 34
},
"directory": "overlay_1_20_5"
}
]
}
}
32 changes: 25 additions & 7 deletions backend/src/main/resources/ResourcePack/pack_1_20_5.mcmeta
Original file line number Diff line number Diff line change
@@ -1,10 +1,28 @@
{
"pack":{
"pack_format": 32,
"description":"CustomNameplates",
"supported_formats": {
"min_inclusive": 32,
"max_inclusive": 34
"pack": {
"pack_format": 32,
"description": "CustomNameplates",
"supported_formats": {
"min_inclusive": 32,
"max_inclusive": 42
}
},
"overlays": {
"entries": [
{
"formats": {
"min_inclusive": 32,
"max_inclusive": 34
},
"directory": "overlay_1_20_5"
},
{
"formats": {
"min_inclusive": 42,
"max_inclusive": 43
},
"directory": "overlay_1_21_2"
}
]
}
}
}
10 changes: 10 additions & 0 deletions backend/src/main/resources/ResourcePack/pack_1_21_2.mcmeta
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"pack": {
"pack_format": 42,
"description": "CustomNameplates",
"supported_formats": {
"min_inclusive": 42,
"max_inclusive": 43
}
}
}
Original file line number Diff line number Diff line change
@@ -90,16 +90,21 @@ public BukkitPlatform(CustomNameplates plugin) {
}

static {
// ThrowableFunction<Object, String> scoreContentNameFunction = VersionHelper.isVersionNewerThan1_21_2() ? (o -> {
// @SuppressWarnings("unchecked")
// Optional<String> optional = (Optional<String>) Reflections.method$Either$right.invoke(o);
// return optional.orElse(null);
// }) : (o -> (String) o);
registerPacketConsumer((player, event, packet) -> {
if (!ConfigManager.actionbarModule()) return;
if (!ConfigManager.catchOtherActionBar()) return;
try {
Object component = Reflections.field$ClientboundSetActionBarTextPacket$text.get(packet);
Object contents = Reflections.method$Component$getContents.invoke(component);
if (Reflections.clazz$ScoreContents.isAssignableFrom(contents.getClass())) {
String name = (String) Reflections.field$ScoreContents$name.get(contents);
//String name = scoreContentNameFunction.apply(Reflections.field$ScoreContents$name.get(contents));
String objective = (String) Reflections.field$ScoreContents$objective.get(contents);
if (name.equals("np") && objective.equals("ab")) return;
if ("actionbar".equals(objective)) return;
}
CustomNameplates.getInstance().getScheduler().async().execute(() -> {
((ActionBarManagerImpl) CustomNameplates.getInstance().getActionBarManager()).handleActionBarPacket(player, AdventureHelper.minecraftComponentToMiniMessage(component));
@@ -133,7 +138,7 @@ public BukkitPlatform(CustomNameplates plugin) {
if (LANG_PATTERN.matcher(miniMessage).find()) {
if (ConfigManager.displaySystemChat()) {
((ActionBarManagerImpl) CustomNameplates.getInstance().getActionBarManager()).temporarilyHideCustomActionBar(player);
Object com = AdventureHelper.miniMessageToMinecraftComponent(miniMessage, "np", "ab");
Object com = AdventureHelper.miniMessageToMinecraftComponent(miniMessage, "nameplates", "actionbar");
Object pkt = CustomNameplates.getInstance().getPlatform().setActionBarTextPacket(com);
CustomNameplates.getInstance().getPacketSender().sendPacket(player, pkt);
}
Original file line number Diff line number Diff line change
@@ -49,19 +49,35 @@ public class Reflections {
).get(0)
);

public static final Class<?> clazz$Either = ReflectionUtils.getClazz(
"com.mojang.datafixers.util.Either"
);

public static final Method method$Either$right = Optional.ofNullable(clazz$Either)
.map(it -> ReflectionUtils.getMethod(it, new String[]{"right"}))
.orElse(null);

public static final Class<?> clazz$ScoreContents = requireNonNull(
ReflectionUtils.getClazz(
BukkitReflectionUtils.assembleMCClass("network.chat.contents.ScoreContents")
)
);

public static final Field field$ScoreContents$name = requireNonNull(
VersionHelper.isVersionNewerThan1_21_2() ?
ReflectionUtils.getInstanceDeclaredField(
clazz$ScoreContents, clazz$Either, 0
) :
ReflectionUtils.getInstanceDeclaredField(
clazz$ScoreContents, String.class, 0
)
);

public static final Field field$ScoreContents$objective = requireNonNull(
VersionHelper.isVersionNewerThan1_21_2() ?
ReflectionUtils.getInstanceDeclaredField(
clazz$ScoreContents, String.class, 0
) :
ReflectionUtils.getInstanceDeclaredField(
clazz$ScoreContents, String.class, 1
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package net.momirealms.customnameplates.common.util;

import java.util.function.Function;

@FunctionalInterface
public interface ThrowableFunction<T, R> extends Function<T, R> {

@Override
default R apply(T t) {
try {
return applyWithException(t);
} catch (Exception e) {
throw new RuntimeException(e);
}
}

R applyWithException(T t) throws Exception;
}
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Project settings
# Rule: [major update].[feature update].[bug fix]
project_version=3.0.6
project_version=3.0.7
config_version=32
project_group=net.momirealms

0 comments on commit f5d2d6a

Please sign in to comment.