From 412c3f47ab3fa025d0750d6e5f3075c5fa8c2688 Mon Sep 17 00:00:00 2001 From: MeexReay Date: Sat, 14 Jun 2025 23:46:18 +0300 Subject: [PATCH 1/8] port to 1.21.2, MOVEMENTS ARE BROKEN --- gradle.properties | 8 +- .../java/ru/themixray/repeating_mod/Main.java | 54 +---- .../event/events/InputEvent.java | 208 ++++++++++-------- .../repeating_mod/mixin/EntityMixin.java | 4 +- .../render/shader/ShaderManager.java | 2 +- 5 files changed, 131 insertions(+), 145 deletions(-) diff --git a/gradle.properties b/gradle.properties index 49aab6b..bcf329b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,16 +4,16 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.21 -yarn_mappings=1.21+build.9 +minecraft_version=1.21.2 +yarn_mappings=1.21.2+build.1 loader_version=0.16.14 loom_version=1.10-SNAPSHOT # Fabric API -fabric_version=0.102.0+1.21 +fabric_version=0.106.1+1.21.2 # Mod Properties -mod_version = 1.1.2+1.21 +mod_version = 1.1.2+1.21.2 maven_group = ru.themixray archives_base_name = repeating-mod diff --git a/src/main/java/ru/themixray/repeating_mod/Main.java b/src/main/java/ru/themixray/repeating_mod/Main.java index 17cf367..296904c 100644 --- a/src/main/java/ru/themixray/repeating_mod/Main.java +++ b/src/main/java/ru/themixray/repeating_mod/Main.java @@ -209,46 +209,14 @@ public class Main implements ClientModInitializer { return; } - InputEvent l = ((InputEvent) now_record.getLastEvent("input")); - if (l == null) { - InputEvent e = new InputEvent( - client.player.input.sneaking, - client.player.input.jumping, - client.player.input.movementSideways, - client.player.input.movementForward, - client.player.input.pressingForward, - client.player.input.pressingBack, - client.player.input.pressingLeft, - client.player.input.pressingRight, - client.player.getHeadYaw(), - client.player.getBodyYaw(), - client.player.getPitch(), - client.player.isSprinting(), - client.player.getYaw(), - client.player.getMovementSpeed()); - recordTick(e); - } else { - InputEvent e = new InputEvent( - ((Boolean) client.player.input.sneaking == l.sneaking) ? null : client.player.input.sneaking, - ((Boolean) client.player.input.jumping == l.jumping) ? null : client.player.input.jumping, - (((Float) client.player.input.movementSideways).equals(l.movementSideways)) ? null : client.player.input.movementSideways, - (((Float) client.player.input.movementForward).equals(l.movementForward)) ? null : client.player.input.movementForward, - ((Boolean) client.player.input.pressingForward == l.pressingForward) ? null : client.player.input.pressingForward, - ((Boolean) client.player.input.pressingBack == l.pressingBack) ? null : client.player.input.pressingBack, - ((Boolean) client.player.input.pressingLeft == l.pressingLeft) ? null : client.player.input.pressingLeft, - ((Boolean) client.player.input.pressingRight == l.pressingRight) ? null : client.player.input.pressingRight, - client.player.getHeadYaw(), Main.client.player.getBodyYaw(),client.player.getPitch(), - ((Boolean) client.player.isSprinting() == l.sprinting) ? null : client.player.isSprinting(), - client.player.getYaw(),client.player.getMovementSpeed()); + InputEvent curr = InputEvent.current(); + if (curr == null) return; - if (!(e.isEmpty() && - e.yaw == l.yaw && - e.head_yaw == l.head_yaw && - e.pitch == l.pitch && - e.body_yaw == l.body_yaw)) { - e.fillEmpty(l); - recordTick(e); - } + InputEvent last = ((InputEvent) now_record.getLastEvent("input")); + if (last == null) { + recordTick(curr); + } else if (!curr.equals(last)) { + recordTick(curr.differs(last)); } } @@ -332,10 +300,10 @@ public class Main implements ClientModInitializer { client.player.sendMessage(Text.literal("[") .append(Text.translatable("text.repeating-mod.name")) .append("] ").formatted(Formatting.BOLD,Formatting.DARK_GRAY) - .append(text.formatted(Formatting.RESET).formatted(Formatting.GRAY))); + .append(text.formatted(Formatting.RESET).formatted(Formatting.GRAY)), false); } - public static void sendDebug(String s) { - client.player.sendMessage(Text.literal("[DEBUG] ").append(Text.of(s))); - } +// public static void sendDebug(String s) { +// client.player.sendMessage(Text.literal("[DEBUG] ").append(Text.of(s)), false); +// } } diff --git a/src/main/java/ru/themixray/repeating_mod/event/events/InputEvent.java b/src/main/java/ru/themixray/repeating_mod/event/events/InputEvent.java index 74be7c5..e0ce865 100644 --- a/src/main/java/ru/themixray/repeating_mod/event/events/InputEvent.java +++ b/src/main/java/ru/themixray/repeating_mod/event/events/InputEvent.java @@ -1,19 +1,17 @@ package ru.themixray.repeating_mod.event.events; +import net.minecraft.util.PlayerInput; import ru.themixray.repeating_mod.Main; import ru.themixray.repeating_mod.event.RecordEvent; public class InputEvent extends RecordEvent { - public Boolean sneaking; - public Boolean jumping; - public Boolean pressingForward; - public Boolean pressingBack; - public Boolean pressingLeft; - public Boolean pressingRight; - public Boolean sprinting; - - public Float movementSideways; - public Float movementForward; + public Boolean forward; + public Boolean backward; + public Boolean left; + public Boolean right; + public Boolean jump; + public Boolean sneak; + public Boolean sprint; public float yaw; public float head_yaw; @@ -21,94 +19,118 @@ public class InputEvent extends RecordEvent { public float pitch; public float speed; - public InputEvent(Boolean sneaking, - Boolean jumping, - Float movementSideways, - Float movementForward, - Boolean pressingForward, - Boolean pressingBack, - Boolean pressingLeft, - Boolean pressingRight, + public static InputEvent current() { + if (Main.client.player == null) return null; + return new InputEvent( + Main.client.player.input.playerInput.forward(), + Main.client.player.input.playerInput.backward(), + Main.client.player.input.playerInput.left(), + Main.client.player.input.playerInput.right(), + Main.client.player.input.playerInput.jump(), + Main.client.player.input.playerInput.sneak(), + Main.client.player.input.playerInput.sprint(), + Main.client.player.getHeadYaw(), + Main.client.player.getBodyYaw(), + Main.client.player.getPitch(), + Main.client.player.getYaw(), + Main.client.player.getMovementSpeed() + ); + } + + public InputEvent(Boolean forward, + Boolean backward, + Boolean left, + Boolean right, + Boolean jump, + Boolean sneak, + Boolean sprint, float head_yaw, float body_yaw, float head_pitch, - Boolean sprinting, float yaw, float speed) { - this.sneaking = sneaking; - this.jumping = jumping; - this.movementSideways = movementSideways; - this.movementForward = movementForward; - this.pressingForward = pressingForward; - this.pressingBack = pressingBack; - this.pressingLeft = pressingLeft; - this.pressingRight = pressingRight; + this.forward = forward; + this.backward = backward; + this.left = left; + this.right = right; + this.jump = jump; + this.sneak = sneak; + this.sprint = sprint; + this.head_yaw = head_yaw; this.body_yaw = body_yaw; this.pitch = head_pitch; - this.sprinting = sprinting; this.yaw = yaw; this.speed = speed; } + /** + * Returns differences of this InputEvent to the provided one, saving first booleans if differ and first floats always + */ + public InputEvent differs(InputEvent event) { + return new InputEvent( + forward == event.forward ? null : forward, + backward == event.backward ? null : backward, + left == event.left ? null : left, + right == event.right ? null : right, + jump == event.jump ? null : jump, + sneak == event.sneak ? null : sneak, + sprint == event.sprint ? null : sprint, + head_yaw, + body_yaw, + pitch, + yaw, + speed + ); + } + public static InputEvent deserialize(String[] a) { return new InputEvent( - (a[0].equals("n") ? null : a[0].equals("1")), - (a[1].equals("n") ? null : a[1].equals("1")), - (a[2].equals("n") ? null : Float.parseFloat(a[2])), - (a[3].equals("n") ? null : Float.parseFloat(a[3])), - (a[4].equals("n") ? null : a[4].equals("1")), - (a[5].equals("n") ? null : a[5].equals("1")), - (a[6].equals("n") ? null : a[6].equals("1")), - (a[7].equals("n") ? null : a[7].equals("1")), - Float.parseFloat(a[8]), Float.parseFloat(a[9]), - Float.parseFloat(a[10]), - (a[11].equals("n") ? null : a[11].equals("1")), - Float.parseFloat(a[12]), - Float.parseFloat(a[13])); + (a[0].equals("n") ? null : a[0].equals("1")), + (a[1].equals("n") ? null : a[1].equals("1")), + (a[2].equals("n") ? null : a[2].equals("1")), + (a[3].equals("n") ? null : a[3].equals("1")), + (a[4].equals("n") ? null : a[4].equals("1")), + (a[5].equals("n") ? null : a[5].equals("1")), + (a[6].equals("n") ? null : a[6].equals("1")), + Float.parseFloat(a[7]), + Float.parseFloat(a[8]), + Float.parseFloat(a[9]), + Float.parseFloat(a[10]), + Float.parseFloat(a[11]) + ); } protected String[] serializeArgs() { return new String[] { - ((sneaking == null) ? "n" : (sneaking ? "1" : "0")), // sneaking - ((jumping == null) ? "n" : (jumping ? "1" : "0")), // jumping - ((movementSideways == null) ? "n" : String.valueOf(movementSideways)), // movement sideways - ((movementForward == null) ? "n" : String.valueOf(movementForward)), // movement forward - ((pressingForward == null) ? "n" : (pressingForward ? "1" : "0")), // pressing forward - ((pressingBack == null) ? "n" : (pressingBack ? "1" : "0")), // pressing back - ((pressingLeft == null) ? "n" : (pressingLeft ? "1" : "0")), // pressing left - ((pressingRight == null) ? "n" : (pressingRight ? "1" : "0")), // pressing right - String.valueOf(head_yaw), // head yaw - String.valueOf(body_yaw), // body yaw - String.valueOf(pitch), // pitch - ((sprinting == null) ? "n" : (sprinting ? "1" : "0")), // sprinting - String.valueOf(yaw), // yaw - String.valueOf(speed) // speed + ((forward == null) ? "n" : (forward ? "1" : "0")), + ((backward == null) ? "n" : (backward ? "1" : "0")), + ((left == null) ? "n" : (left ? "1" : "0")), + ((right == null) ? "n" : (right ? "1" : "0")), + ((jump == null) ? "n" : (jump ? "1" : "0")), + ((sneak == null) ? "n" : (sneak ? "1" : "0")), + ((sprint == null) ? "n" : (sprint ? "1" : "0")), + String.valueOf(head_yaw), + String.valueOf(body_yaw), + String.valueOf(pitch), + String.valueOf(yaw), + String.valueOf(speed), }; } - public void fillEmpty(InputEvent e) { - if (sneaking == null) sneaking = e.sneaking; - if (jumping == null) jumping = e.jumping; - if (movementSideways == null) movementSideways = e.movementSideways; - if (movementForward == null) movementForward = e.movementForward; - if (pressingForward == null) pressingForward = e.pressingForward; - if (pressingBack == null) pressingBack = e.pressingBack; - if (pressingLeft == null) pressingLeft = e.pressingLeft; - if (pressingRight == null) pressingRight = e.pressingRight; - if (sprinting == null) sprinting = e.sprinting; - } - - public boolean isEmpty() { - return sneaking == null && - jumping == null && - movementSideways == null && - movementForward == null && - pressingForward == null && - pressingBack == null && - pressingLeft == null && - pressingRight == null && - sprinting == null; + public boolean equals(InputEvent event) { + return event.forward == forward && + event.backward == backward && + event.sprint == sprint && + event.jump == jump && + event.sneak == sneak && + event.left == left && + event.right == right && + event.speed == speed && + event.head_yaw == head_yaw && + event.body_yaw == body_yaw && + event.yaw == yaw && + event.pitch == pitch; } public void replay() { @@ -117,8 +139,8 @@ public class InputEvent extends RecordEvent { public void inputCallback() { if (Main.client.player != null) { - if (sprinting != null && Main.client.player.isSprinting() != sprinting) - Main.client.player.setSprinting(sprinting); + if (sprint != null && Main.client.player.isSprinting() != sprint) + Main.client.player.setSprinting(sprint); if (Main.client.player.getYaw() != yaw) Main.client.player.setYaw(yaw); if (Main.client.player.getHeadYaw() != head_yaw) @@ -129,22 +151,18 @@ public class InputEvent extends RecordEvent { Main.client.player.setPitch(pitch); if (Main.client.player.getMovementSpeed() != speed) Main.client.player.setMovementSpeed(speed); - if (sneaking != null && Main.client.player.input.sneaking != sneaking) - Main.client.player.input.sneaking = sneaking; - if (jumping != null && Main.client.player.input.jumping != jumping) - Main.client.player.input.jumping = jumping; - if (movementSideways != null && Main.client.player.input.movementSideways != movementSideways) - Main.client.player.input.movementSideways = movementSideways; - if (movementForward != null && Main.client.player.input.movementForward != movementForward) - Main.client.player.input.movementForward = movementForward; - if (pressingForward != null && Main.client.player.input.pressingForward != pressingForward) - Main.client.player.input.pressingForward = pressingForward; - if (pressingBack != null && Main.client.player.input.pressingBack != pressingBack) - Main.client.player.input.pressingBack = pressingBack; - if (pressingLeft != null && Main.client.player.input.pressingLeft != pressingLeft) - Main.client.player.input.pressingLeft = pressingLeft; - if (pressingRight != null && Main.client.player.input.pressingRight != pressingRight) - Main.client.player.input.pressingRight = pressingRight; + + PlayerInput input = Main.client.player.input.playerInput; + + Main.client.player.input.playerInput = new PlayerInput( + this.forward == null ? input.forward() : this.forward, + this.backward == null ? input.backward() : this.backward, + this.left == null ? input.left() : this.left, + this.right == null ? input.right() : this.right, + this.jump == null ? input.jump() : this.jump, + this.sneak == null ? input.sneak() : this.sneak, + this.sprint == null ? input.sprint() : this.sprint + ); } } } diff --git a/src/main/java/ru/themixray/repeating_mod/mixin/EntityMixin.java b/src/main/java/ru/themixray/repeating_mod/mixin/EntityMixin.java index 9bf8341..93257cc 100644 --- a/src/main/java/ru/themixray/repeating_mod/mixin/EntityMixin.java +++ b/src/main/java/ru/themixray/repeating_mod/mixin/EntityMixin.java @@ -20,8 +20,8 @@ public abstract class EntityMixin { if (getUuid().equals(Main.client.player.getUuid())) { if (Main.me.is_replaying) { if (Main.input_replay != null && - Main.input_replay.sprinting != null && - Main.input_replay.sprinting != sprinting) { + Main.input_replay.sprint != null && + Main.input_replay.sprint != sprinting) { ci.cancel(); } } diff --git a/src/main/java/ru/themixray/repeating_mod/render/shader/ShaderManager.java b/src/main/java/ru/themixray/repeating_mod/render/shader/ShaderManager.java index 34c0d25..0879153 100644 --- a/src/main/java/ru/themixray/repeating_mod/render/shader/ShaderManager.java +++ b/src/main/java/ru/themixray/repeating_mod/render/shader/ShaderManager.java @@ -51,7 +51,7 @@ public class ShaderManager { public String loadImport(boolean inline, String name) { return IOUtils.toString(resource.get().getInputStream(), StandardCharsets.UTF_8); } - }.readSource(readResourceAsString(resource.get().getInputStream()))); + }.readSource(readResourceAsString(resource.get().getInputStream())).getFirst()); } else file_present = false; glCompileShader(i); if (glGetShaderi(i, GL_COMPILE_STATUS) == 0 || !file_present) { From d101b11c36c0232b3a1cac9da4d8f570f3ce423a Mon Sep 17 00:00:00 2001 From: MeexReay Date: Sun, 15 Jun 2025 16:23:04 +0300 Subject: [PATCH 2/8] fix movements 1.21.2 --- gradle.properties | 2 +- .../event/events/InputEvent.java | 54 ++++++++++++------- 2 files changed, 37 insertions(+), 19 deletions(-) diff --git a/gradle.properties b/gradle.properties index bcf329b..1c01598 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,4 +17,4 @@ mod_version = 1.1.2+1.21.2 maven_group = ru.themixray archives_base_name = repeating-mod -# Compatible with: 1.21, 1.21.1 \ No newline at end of file +# Compatible with: 1.21.2, ? \ No newline at end of file diff --git a/src/main/java/ru/themixray/repeating_mod/event/events/InputEvent.java b/src/main/java/ru/themixray/repeating_mod/event/events/InputEvent.java index e0ce865..ac79afe 100644 --- a/src/main/java/ru/themixray/repeating_mod/event/events/InputEvent.java +++ b/src/main/java/ru/themixray/repeating_mod/event/events/InputEvent.java @@ -18,6 +18,8 @@ public class InputEvent extends RecordEvent { public float body_yaw; public float pitch; public float speed; + public float movementForward; + public float movementSideways; public static InputEvent current() { if (Main.client.player == null) return null; @@ -33,7 +35,9 @@ public class InputEvent extends RecordEvent { Main.client.player.getBodyYaw(), Main.client.player.getPitch(), Main.client.player.getYaw(), - Main.client.player.getMovementSpeed() + Main.client.player.getMovementSpeed(), + Main.client.player.input.movementForward, + Main.client.player.input.movementSideways ); } @@ -48,7 +52,9 @@ public class InputEvent extends RecordEvent { float body_yaw, float head_pitch, float yaw, - float speed) { + float speed, + float movementForward, + float movementSideways) { this.forward = forward; this.backward = backward; this.left = left; @@ -62,6 +68,8 @@ public class InputEvent extends RecordEvent { this.pitch = head_pitch; this.yaw = yaw; this.speed = speed; + this.movementForward = movementForward; + this.movementSideways = movementSideways; } /** @@ -80,7 +88,9 @@ public class InputEvent extends RecordEvent { body_yaw, pitch, yaw, - speed + speed, + movementForward, + movementSideways ); } @@ -97,24 +107,28 @@ public class InputEvent extends RecordEvent { Float.parseFloat(a[8]), Float.parseFloat(a[9]), Float.parseFloat(a[10]), - Float.parseFloat(a[11]) + Float.parseFloat(a[11]), + Float.parseFloat(a[12]), + Float.parseFloat(a[13]) ); } protected String[] serializeArgs() { return new String[] { - ((forward == null) ? "n" : (forward ? "1" : "0")), - ((backward == null) ? "n" : (backward ? "1" : "0")), - ((left == null) ? "n" : (left ? "1" : "0")), - ((right == null) ? "n" : (right ? "1" : "0")), - ((jump == null) ? "n" : (jump ? "1" : "0")), - ((sneak == null) ? "n" : (sneak ? "1" : "0")), - ((sprint == null) ? "n" : (sprint ? "1" : "0")), - String.valueOf(head_yaw), - String.valueOf(body_yaw), - String.valueOf(pitch), - String.valueOf(yaw), - String.valueOf(speed), + ((forward == null) ? "n" : (forward ? "1" : "0")), + ((backward == null) ? "n" : (backward ? "1" : "0")), + ((left == null) ? "n" : (left ? "1" : "0")), + ((right == null) ? "n" : (right ? "1" : "0")), + ((jump == null) ? "n" : (jump ? "1" : "0")), + ((sneak == null) ? "n" : (sneak ? "1" : "0")), + ((sprint == null) ? "n" : (sprint ? "1" : "0")), + String.valueOf(head_yaw), + String.valueOf(body_yaw), + String.valueOf(pitch), + String.valueOf(yaw), + String.valueOf(speed), + String.valueOf(movementForward), + String.valueOf(movementSideways) }; } @@ -130,7 +144,9 @@ public class InputEvent extends RecordEvent { event.head_yaw == head_yaw && event.body_yaw == body_yaw && event.yaw == yaw && - event.pitch == pitch; + event.pitch == pitch && + event.movementForward == movementForward && + event.movementSideways == movementSideways; } public void replay() { @@ -152,8 +168,10 @@ public class InputEvent extends RecordEvent { if (Main.client.player.getMovementSpeed() != speed) Main.client.player.setMovementSpeed(speed); - PlayerInput input = Main.client.player.input.playerInput; + Main.client.player.input.movementSideways = movementSideways; + Main.client.player.input.movementForward = movementForward; + PlayerInput input = Main.client.player.input.playerInput; Main.client.player.input.playerInput = new PlayerInput( this.forward == null ? input.forward() : this.forward, this.backward == null ? input.backward() : this.backward, From f0827884065dfafe4e2737ef01bafdc3b7e7684e Mon Sep 17 00:00:00 2001 From: MeexReay Date: Sun, 15 Jun 2025 20:06:31 +0300 Subject: [PATCH 3/8] set fabric mod json 1.21. --- src/main/resources/fabric.mod.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 4d3612f..88e2fff 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -29,7 +29,7 @@ "depends": { "fabricloader": ">=0.14.14", "fabric-api": "*", - "minecraft": ">=1.20", + "minecraft": ">=1.21.2", "java": ">=17" }, "suggests": { From c65e9065006e9a04da8b176c05a6e79ace667b90 Mon Sep 17 00:00:00 2001 From: MeexReay Date: Sun, 15 Jun 2025 20:36:55 +0300 Subject: [PATCH 4/8] port to 1.21.4, RECORDS LIST IS BROKEN --- gradle.properties | 10 +++++----- .../ru/themixray/repeating_mod/mixin/InputMixin.java | 2 +- .../repeating_mod/widget/RecordListWidget.java | 12 ++++++------ src/main/resources/fabric.mod.json | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/gradle.properties b/gradle.properties index 1c01598..63462f5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,17 +4,17 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.21.2 -yarn_mappings=1.21.2+build.1 +minecraft_version=1.21.4 +yarn_mappings=1.21.4+build.8 loader_version=0.16.14 loom_version=1.10-SNAPSHOT # Fabric API -fabric_version=0.106.1+1.21.2 +fabric_version=0.119.3+1.21.4 # Mod Properties -mod_version = 1.1.2+1.21.2 +mod_version = 1.1.2+1.21.4 maven_group = ru.themixray archives_base_name = repeating-mod -# Compatible with: 1.21.2, ? \ No newline at end of file +# Compatible with: 1.21.4, ? \ No newline at end of file diff --git a/src/main/java/ru/themixray/repeating_mod/mixin/InputMixin.java b/src/main/java/ru/themixray/repeating_mod/mixin/InputMixin.java index 33acbf1..261c59c 100644 --- a/src/main/java/ru/themixray/repeating_mod/mixin/InputMixin.java +++ b/src/main/java/ru/themixray/repeating_mod/mixin/InputMixin.java @@ -10,7 +10,7 @@ import ru.themixray.repeating_mod.Main; @Mixin(KeyboardInput.class) public abstract class InputMixin { @Inject(at = @At(value = "TAIL"), method = "tick") - private void onTickTail(boolean slowDown, float f, CallbackInfo ci) { + private void onTickTail(CallbackInfo ci) { if (Main.me.is_replaying) { if (Main.input_replay != null) { Main.input_replay.inputCallback(); diff --git a/src/main/java/ru/themixray/repeating_mod/widget/RecordListWidget.java b/src/main/java/ru/themixray/repeating_mod/widget/RecordListWidget.java index 5b7a7e3..6ab167d 100644 --- a/src/main/java/ru/themixray/repeating_mod/widget/RecordListWidget.java +++ b/src/main/java/ru/themixray/repeating_mod/widget/RecordListWidget.java @@ -26,13 +26,18 @@ public class RecordListWidget extends ScrollableWidget { return res; } + @Override + protected int getContentsHeightWithPadding() { + return !widgets.isEmpty() ? widgets.size() * 55 + (widgets.size() - 1) * 2 : 0; + } + @Override protected double getDeltaYPerScroll() { return 10; } @Override - protected void renderContents(DrawContext ctx, int mouseX, int mouseY, float delta) { + protected void renderWidget(DrawContext ctx, int mouseX, int mouseY, float delta) { int y = 0; for (RecordWidget wid: widgets) { wid.setY(y); @@ -63,11 +68,6 @@ public class RecordListWidget extends ScrollableWidget { return focused; } - @Override - protected int getContentsHeight() { - return !widgets.isEmpty() ? widgets.size() * 55 + (widgets.size() - 1) * 2 : 0; - } - public void init(RepeatingScreen screen) { for (RecordWidget widget : widgets) { widget.init(screen); diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 88e2fff..4a40393 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -29,7 +29,7 @@ "depends": { "fabricloader": ">=0.14.14", "fabric-api": "*", - "minecraft": ">=1.21.2", + "minecraft": ">=1.21.4", "java": ">=17" }, "suggests": { From ac1ee8ec6da34e9cbc11d8f05b3875b339c4724c Mon Sep 17 00:00:00 2001 From: MeexReay Date: Wed, 18 Jun 2025 15:57:29 +0300 Subject: [PATCH 5/8] fix record list widget --- .../repeating_mod/widget/RecordListWidget.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/ru/themixray/repeating_mod/widget/RecordListWidget.java b/src/main/java/ru/themixray/repeating_mod/widget/RecordListWidget.java index 6ab167d..b17af92 100644 --- a/src/main/java/ru/themixray/repeating_mod/widget/RecordListWidget.java +++ b/src/main/java/ru/themixray/repeating_mod/widget/RecordListWidget.java @@ -38,20 +38,28 @@ public class RecordListWidget extends ScrollableWidget { @Override protected void renderWidget(DrawContext ctx, int mouseX, int mouseY, float delta) { - int y = 0; + ctx.fill(this.getX(), this.getY(), this.getX() + this.getWidth(), this.getY() + this.getHeight(), 0xff000000); + + ctx.enableScissor(this.getX(), this.getY(), this.getX() + this.getWidth(), this.getY() + this.getHeight()); + + int y = (int) -this.getScrollY(); for (RecordWidget wid: widgets) { wid.setY(y); - wid.render(ctx, mouseX, (int) (mouseY + this.getScrollY()), delta); + wid.render(ctx, mouseX, (int) (mouseY), delta); y += wid.getHeight(); y += 2; } + + ctx.disableScissor(); + + this.drawScrollbar(ctx); } public void addWidget(RecordState record) { - RecordWidget widget = new RecordWidget(0, 0, width, 55, record, this); + RecordWidget widget = new RecordWidget(0, 0, width - 6, 55, record, this); widget.init(null); - widgets.add(0, widget); + widgets.addFirst(widget); } public void removeWidget(RecordState record) { @@ -125,7 +133,7 @@ public class RecordListWidget extends ScrollableWidget { @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { - return checkTransportNF(mouseX, mouseY + getScrollY(), button) || super.mouseClicked(mouseX, mouseY, button); + return checkTransportNF(mouseX, mouseY, button) || super.checkScrollbarDragged(mouseX, mouseY, button); } @Override From 59a2175fb2e70b25ac67bb53e8a5c7312abe104f Mon Sep 17 00:00:00 2001 From: MeexReay Date: Wed, 18 Jun 2025 16:18:48 +0300 Subject: [PATCH 6/8] port to 1.21.5 --- gradle.properties | 10 +++++----- .../event/events/BlockInteractEvent.java | 4 ++-- .../repeating_mod/event/events/InputEvent.java | 17 +++++++++++++---- .../render/shader/ShaderManager.java | 2 +- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/gradle.properties b/gradle.properties index 63462f5..68634eb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,17 +4,17 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.21.4 -yarn_mappings=1.21.4+build.8 +minecraft_version=1.21.5 +yarn_mappings=1.21.5+build.1 loader_version=0.16.14 loom_version=1.10-SNAPSHOT # Fabric API -fabric_version=0.119.3+1.21.4 +fabric_version=0.127.0+1.21.5 # Mod Properties -mod_version = 1.1.2+1.21.4 +mod_version = 1.1.2+1.21.5 maven_group = ru.themixray archives_base_name = repeating-mod -# Compatible with: 1.21.4, ? \ No newline at end of file +# Compatible with: 1.21.5 \ No newline at end of file diff --git a/src/main/java/ru/themixray/repeating_mod/event/events/BlockInteractEvent.java b/src/main/java/ru/themixray/repeating_mod/event/events/BlockInteractEvent.java index 789ea8f..16a8425 100644 --- a/src/main/java/ru/themixray/repeating_mod/event/events/BlockInteractEvent.java +++ b/src/main/java/ru/themixray/repeating_mod/event/events/BlockInteractEvent.java @@ -19,7 +19,7 @@ public class BlockInteractEvent extends RecordEvent { Double.parseDouble(a[0]), Double.parseDouble(a[1]), Double.parseDouble(a[2])), - Direction.byId(Integer.parseInt(a[4])), + Direction.byIndex(Integer.parseInt(a[4])), new BlockPos( Integer.parseInt(a[0]), Integer.parseInt(a[1]), @@ -44,7 +44,7 @@ public class BlockInteractEvent extends RecordEvent { String.valueOf(hitResult.getBlockPos().getY()), String.valueOf(hitResult.getBlockPos().getZ()), (hitResult.isInsideBlock() ? "1" : "0"), - String.valueOf(hitResult.getSide().getId()), + String.valueOf(hitResult.getSide().getIndex()), hand.name() }; } diff --git a/src/main/java/ru/themixray/repeating_mod/event/events/InputEvent.java b/src/main/java/ru/themixray/repeating_mod/event/events/InputEvent.java index ac79afe..01d1f39 100644 --- a/src/main/java/ru/themixray/repeating_mod/event/events/InputEvent.java +++ b/src/main/java/ru/themixray/repeating_mod/event/events/InputEvent.java @@ -1,9 +1,13 @@ package ru.themixray.repeating_mod.event.events; +import net.minecraft.client.input.Input; import net.minecraft.util.PlayerInput; +import net.minecraft.util.math.Vec2f; import ru.themixray.repeating_mod.Main; import ru.themixray.repeating_mod.event.RecordEvent; +import java.lang.reflect.Field; + public class InputEvent extends RecordEvent { public Boolean forward; public Boolean backward; @@ -36,8 +40,8 @@ public class InputEvent extends RecordEvent { Main.client.player.getPitch(), Main.client.player.getYaw(), Main.client.player.getMovementSpeed(), - Main.client.player.input.movementForward, - Main.client.player.input.movementSideways + Main.client.player.input.getMovementInput().y, + Main.client.player.input.getMovementInput().x ); } @@ -168,8 +172,13 @@ public class InputEvent extends RecordEvent { if (Main.client.player.getMovementSpeed() != speed) Main.client.player.setMovementSpeed(speed); - Main.client.player.input.movementSideways = movementSideways; - Main.client.player.input.movementForward = movementForward; + try { + Field field = Input.class.getDeclaredField("movementVector"); + field.setAccessible(true); + field.set(Main.client.player.input, new Vec2f(movementSideways, movementForward)); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } PlayerInput input = Main.client.player.input.playerInput; Main.client.player.input.playerInput = new PlayerInput( diff --git a/src/main/java/ru/themixray/repeating_mod/render/shader/ShaderManager.java b/src/main/java/ru/themixray/repeating_mod/render/shader/ShaderManager.java index 0879153..f5e26a6 100644 --- a/src/main/java/ru/themixray/repeating_mod/render/shader/ShaderManager.java +++ b/src/main/java/ru/themixray/repeating_mod/render/shader/ShaderManager.java @@ -1,6 +1,6 @@ package ru.themixray.repeating_mod.render.shader; -import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.opengl.GlStateManager; import com.mojang.blaze3d.platform.TextureUtil; import lombok.Getter; import lombok.SneakyThrows; From 0b3bac264f036b5b4166b72f6c8b8c0cb11053bb Mon Sep 17 00:00:00 2001 From: MeexReay Date: Wed, 18 Jun 2025 18:17:57 +0300 Subject: [PATCH 7/8] port to 1.21.6 --- gradle.properties | 6 +++--- .../repeating_mod/RepeatingScreen.java | 2 +- .../repeating_mod/widget/RecordWidget.java | 17 +++++------------ 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/gradle.properties b/gradle.properties index 68634eb..a363b27 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,13 +4,13 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.21.5 -yarn_mappings=1.21.5+build.1 +minecraft_version=1.21.6 +yarn_mappings=1.21.6+build.1 loader_version=0.16.14 loom_version=1.10-SNAPSHOT # Fabric API -fabric_version=0.127.0+1.21.5 +fabric_version=0.127.0+1.21.6 # Mod Properties mod_version = 1.1.2+1.21.5 diff --git a/src/main/java/ru/themixray/repeating_mod/RepeatingScreen.java b/src/main/java/ru/themixray/repeating_mod/RepeatingScreen.java index 8d95918..0783386 100644 --- a/src/main/java/ru/themixray/repeating_mod/RepeatingScreen.java +++ b/src/main/java/ru/themixray/repeating_mod/RepeatingScreen.java @@ -51,7 +51,7 @@ public class RepeatingScreen extends Screen { @Override public void render(DrawContext context, int mouseX, int mouseY, float delta) { - renderBackground(context, mouseX, mouseY, delta); +// renderBackground(context, mouseX, mouseY, delta); for (RenderListener l : render_listeners) { if (l.beforeRender()) { diff --git a/src/main/java/ru/themixray/repeating_mod/widget/RecordWidget.java b/src/main/java/ru/themixray/repeating_mod/widget/RecordWidget.java index 7d53358..5b9954e 100644 --- a/src/main/java/ru/themixray/repeating_mod/widget/RecordWidget.java +++ b/src/main/java/ru/themixray/repeating_mod/widget/RecordWidget.java @@ -1,5 +1,6 @@ package ru.themixray.repeating_mod.widget; +import lombok.Getter; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.Drawable; import net.minecraft.client.gui.tooltip.Tooltip; @@ -18,6 +19,7 @@ import java.util.List; import java.util.function.Consumer; public class RecordWidget implements Drawable, Widget { + @Getter private RecordState record; private List children; @@ -150,22 +152,13 @@ public class RecordWidget implements Drawable, Widget { children.add(replay_button); } - public RecordState getRecord() { - return record; - } - - public void drawText(int x, int y, DrawContext ctx, List lines, float size, int line_height, boolean shadow) { - ctx.getMatrices().push(); - ctx.getMatrices().scale(size, size, size); - + public void drawText(int x, int y, DrawContext ctx, List lines, int line_height, boolean shadow) { int now_y = y; for (Text line : lines) { - ctx.drawText(Main.client.textRenderer, line, (int) (x / size), (int) (now_y / size), line.getStyle().getColor().getRgb(), shadow); + ctx.drawText(Main.client.textRenderer, line, x, now_y, 0xff000000 + line.getStyle().getColor().getRgb(), shadow); now_y += line_height; } - - ctx.getMatrices().pop(); } @Override @@ -190,7 +183,7 @@ public class RecordWidget implements Drawable, Widget { .append(": ") .styled((s) -> s.withColor(0xbbbbbb)), Text.literal(record.getAuthor()).styled((s) -> s.withColor(0xffffff)) - ), 1, + ), 9, false); From 654589355d73c910bbe987f9e22f986cb924b367 Mon Sep 17 00:00:00 2001 From: MeexReay Date: Wed, 18 Jun 2025 18:18:55 +0300 Subject: [PATCH 8/8] fix version name --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index a363b27..780fbef 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,8 +13,8 @@ loom_version=1.10-SNAPSHOT fabric_version=0.127.0+1.21.6 # Mod Properties -mod_version = 1.1.2+1.21.5 +mod_version = 1.1.2+1.21.6 maven_group = ru.themixray archives_base_name = repeating-mod -# Compatible with: 1.21.5 \ No newline at end of file +# Compatible with: 1.21.6 \ No newline at end of file