Skip to content

Commit 93e156e

Browse files
committed
Added TNT Timer
1 parent 4b6243c commit 93e156e

File tree

23 files changed

+449
-35
lines changed

23 files changed

+449
-35
lines changed

changelog.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
## SimpleClient %version%
2-
- Zoom fix for 1.8.9
2+
- Added TNT Timer

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ org.gradle.jvmargs=-Xmx2G
33
org.gradle.parallel=true
44

55
# SimpleClient
6-
simpleclient_version=0.3.1
6+
simpleclient_version=0.3.2
77
discord_game_sdk_version=v0.5.5

simpleclient-1.19.4/src/main/java/simpleclient/feature/FeatureManagerImpl.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public void init() {
2929
addFeature(new Perspective());
3030
addFeature(new Ping());
3131
addFeature(new PvPImprovements());
32+
addFeature(new TNTTimer());
3233
addFeature(new Zoom());
3334
super.init();
3435
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package simpleclient.feature;
2+
3+
import com.google.gson.JsonArray;
4+
import com.google.gson.JsonObject;
5+
import simpleclient.text.Style;
6+
7+
public class TNTTimer extends EnableableFeature implements TextFeature {
8+
public static TNTTimer INSTANCE = null;
9+
public static boolean ENABLED = false;
10+
public static int FUSE = -1;
11+
12+
public TNTTimer() {
13+
super(FeatureType.TNT_TIMER);
14+
INSTANCE = this;
15+
refresh();
16+
}
17+
18+
public void refresh() {
19+
ENABLED = isEnabled();
20+
}
21+
22+
@Override
23+
public void setData(JsonObject data) {
24+
super.setData(data);
25+
refresh();
26+
}
27+
28+
@Override
29+
public String valueForParameter(String parameter) {
30+
if (parameter.equals("ticks")) return String.valueOf(FUSE);
31+
if (parameter.equals("seconds")) return String.valueOf((float) (FUSE / 2) / 10);
32+
return "";
33+
}
34+
35+
@Override
36+
public JsonArray getDefaultFormat() {
37+
JsonArray format = new JsonArray();
38+
format.add(parameter("seconds", new Style()));
39+
format.add(text("s", new Style()));
40+
return format;
41+
}
42+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package simpleclient.mixin.feature.tnt_timer;
2+
3+
import com.mojang.blaze3d.vertex.PoseStack;
4+
import net.minecraft.client.renderer.MultiBufferSource;
5+
import net.minecraft.client.renderer.entity.EntityRenderer;
6+
import net.minecraft.client.renderer.entity.EntityRendererProvider;
7+
import net.minecraft.client.renderer.entity.TntRenderer;
8+
import net.minecraft.world.entity.item.PrimedTnt;
9+
import org.spongepowered.asm.mixin.Mixin;
10+
import org.spongepowered.asm.mixin.injection.At;
11+
import org.spongepowered.asm.mixin.injection.Inject;
12+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
13+
import simpleclient.adapter.TextAdapter;
14+
import simpleclient.feature.TNTTimer;
15+
16+
@Mixin(TntRenderer.class)
17+
public abstract class TntRendererMixin extends EntityRenderer<PrimedTnt> {
18+
protected TntRendererMixin(EntityRendererProvider.Context context) {
19+
super(context);
20+
}
21+
22+
@Inject(at = @At("TAIL"), method = "render(Lnet/minecraft/world/entity/item/PrimedTnt;FFLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V")
23+
public void render(PrimedTnt entity, float f, float g, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo ci) {
24+
if (TNTTimer.ENABLED) {
25+
TNTTimer.FUSE = entity.getFuse();
26+
renderNameTag(entity, TextAdapter.adapt(TNTTimer.INSTANCE.toText()), poseStack, multiBufferSource, i);
27+
}
28+
}
29+
}

simpleclient-1.19.4/src/main/resources/simpleclient.mixins.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"feature.perspective.CameraMixin",
1515
"feature.perspective.MouseMixin",
1616
"feature.pvp_improvements.MinecraftMixin",
17+
"feature.tnt_timer.TntRendererMixin",
1718
"feature.zoom.GameRendererMixin",
1819
"performance.LevelRendererMixin",
1920
"performance.OptionsMixin",

simpleclient-1.20.1/src/main/java/simpleclient/feature/FeatureManagerImpl.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public void init() {
2929
addFeature(new Perspective());
3030
addFeature(new Ping());
3131
addFeature(new PvPImprovements());
32+
addFeature(new TNTTimer());
3233
addFeature(new Zoom());
3334
super.init();
3435
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package simpleclient.feature;
2+
3+
import com.google.gson.JsonArray;
4+
import com.google.gson.JsonObject;
5+
import simpleclient.text.Style;
6+
7+
public class TNTTimer extends EnableableFeature implements TextFeature {
8+
public static TNTTimer INSTANCE = null;
9+
public static boolean ENABLED = false;
10+
public static int FUSE = -1;
11+
12+
public TNTTimer() {
13+
super(FeatureType.TNT_TIMER);
14+
INSTANCE = this;
15+
refresh();
16+
}
17+
18+
public void refresh() {
19+
ENABLED = isEnabled();
20+
}
21+
22+
@Override
23+
public void setData(JsonObject data) {
24+
super.setData(data);
25+
refresh();
26+
}
27+
28+
@Override
29+
public String valueForParameter(String parameter) {
30+
if (parameter.equals("ticks")) return String.valueOf(FUSE);
31+
if (parameter.equals("seconds")) return String.valueOf((float) (FUSE / 2) / 10);
32+
return "";
33+
}
34+
35+
@Override
36+
public JsonArray getDefaultFormat() {
37+
JsonArray format = new JsonArray();
38+
format.add(parameter("seconds", new Style()));
39+
format.add(text("s", new Style()));
40+
return format;
41+
}
42+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package simpleclient.mixin.tnt_timer;
2+
3+
import com.mojang.blaze3d.vertex.PoseStack;
4+
import net.minecraft.client.renderer.MultiBufferSource;
5+
import net.minecraft.client.renderer.entity.EntityRenderer;
6+
import net.minecraft.client.renderer.entity.EntityRendererProvider;
7+
import net.minecraft.client.renderer.entity.TntRenderer;
8+
import net.minecraft.world.entity.item.PrimedTnt;
9+
import org.spongepowered.asm.mixin.Mixin;
10+
import org.spongepowered.asm.mixin.injection.At;
11+
import org.spongepowered.asm.mixin.injection.Inject;
12+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
13+
import simpleclient.adapter.TextAdapter;
14+
import simpleclient.feature.TNTTimer;
15+
16+
@Mixin(TntRenderer.class)
17+
public abstract class TntRendererMixin extends EntityRenderer<PrimedTnt> {
18+
protected TntRendererMixin(EntityRendererProvider.Context context) {
19+
super(context);
20+
}
21+
22+
@Inject(at = @At("TAIL"), method = "render(Lnet/minecraft/world/entity/item/PrimedTnt;FFLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V")
23+
public void render(PrimedTnt entity, float f, float g, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo ci) {
24+
if (TNTTimer.ENABLED) {
25+
TNTTimer.FUSE = entity.getFuse();
26+
renderNameTag(entity, TextAdapter.adapt(TNTTimer.INSTANCE.toText()), poseStack, multiBufferSource, i);
27+
}
28+
}
29+
}

simpleclient-1.20.1/src/main/resources/simpleclient.mixins.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
"feature.zoom.GameRendererMixin",
1919
"performance.LevelRendererMixin",
2020
"performance.OptionsMixin",
21-
"performance.SharedConstantsMixin"
21+
"performance.SharedConstantsMixin",
22+
"tnt_timer.TntRendererMixin"
2223
],
2324
"injectors": {
2425
"defaultRequire": 1

0 commit comments

Comments
 (0)