Skip to content

Commit 1ee72fb

Browse files
committed
Make buff render configurable, fix class naming and add Forge Config Menu compat
1 parent 5f1f53e commit 1ee72fb

File tree

7 files changed

+146
-139
lines changed

7 files changed

+146
-139
lines changed

common/src/main/java/com/ryorama/terrariamod/TerrariaModConfig.java

+2
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,6 @@ public class TerrariaModConfig implements ConfigData {
1818
public boolean useCustomTitles = false;
1919
@ConfigEntry.Gui.Tooltip
2020
public boolean replaceSpecialDamageWithDebuffs = true;
21+
@ConfigEntry.Gui.Tooltip
22+
public boolean showTerrariaBuffs = true;
2123
}

common/src/main/resources/assets/terrariamod/lang/en_us.json

+6-4
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@
1414
"text.autoconfig.terrariamod.option.modifyPlayerHealth": "Modify Player Starting Health",
1515
"text.autoconfig.terrariamod.option.disableHunger": "Disable Hunger",
1616
"text.autoconfig.terrariamod.option.useCustomTitles": " Use Custom Window Splash Texts",
17+
"text.autoconfig.terrariamod.option.showTerrariaBuffs": " Show Terraria Buffs",
1718
"text.autoconfig.terrariamod.option.useVanillaHud.@Tooltip": "Decides weather the vanilla Hud overlay should be kept",
18-
"text.autoconfig.terrariamod.option.useVanillaFluidPhysics..@Tooltip": "Decides weather to use the vanilla fluid system",
19-
"text.autoconfig.terrariamod.option.modifyPlayerHealth..@Tooltip": "Decided weather the players starting health should be 100 instead of 20 when starting",
20-
"text.autoconfig.terrariamod.option.disableHunger..@Tooltip": "Decides weather hunger should be disabled",
21-
"text.autoconfig.terrariamod.option.useCustomTitles..@Tooltip": "Decides weather custom splash text should be displayed as the windows title",
19+
"text.autoconfig.terrariamod.option.useVanillaFluidPhysics.@Tooltip": "Decides weather to use the vanilla fluid system",
20+
"text.autoconfig.terrariamod.option.modifyPlayerHealth.@Tooltip": "Decided weather the players starting health should be 100 instead of 20 when starting",
21+
"text.autoconfig.terrariamod.option.disableHunger.@Tooltip": "Decides weather hunger should be disabled",
22+
"text.autoconfig.terrariamod.option.useCustomTitles.@Tooltip": "Decides weather custom splash text should be displayed as the windows title",
23+
"text.autoconfig.terrariamod.option.showTerrariaBuffs.@Tooltip": "Decides weather Terraria buffs should render on the HUD",
2224
"text.autoconfig.terrariamod.title": " TerrariaMod Config",
2325
"itemGroup.terrariamod.terrariamod_tab": "TerrariaMod",
2426
"item.terrariamod.green_slime_spawn_egg": "Spawn Green Slime",

fabric/src/main/java/com/ryorama/terrariamod/fabric/client/ui/TerrariaUIRenderer.java

+40-38
Original file line numberDiff line numberDiff line change
@@ -100,52 +100,54 @@ public static void renderTerrariaMana() {
100100

101101
public static void renderTerrariaEffects() {
102102
HudRenderCallback.EVENT.register((matrixstack, delta) -> {
103-
if (MinecraftClient.getInstance().player != null) {
104-
player = MinecraftClient.getInstance().player;
105-
}
103+
if (TerrariaMod.CONFIG.showTerrariaBuffs) {
104+
if (MinecraftClient.getInstance().player != null) {
105+
player = MinecraftClient.getInstance().player;
106+
}
106107

107-
int i3 = 17;
108-
int j3 = 27;
109-
int effectCounter = 0;
108+
int i3 = 17;
109+
int j3 = 27;
110+
int effectCounter = 0;
110111

111-
if (player != null) {
112-
if (player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(StatsT.POTION_SICKNESS)) > 0) {
113-
UIRenderer.renderOverlay(potion_sickness, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
114-
effectCounter++;
115-
}
112+
if (player != null) {
113+
if (player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(StatsT.POTION_SICKNESS)) > 0) {
114+
UIRenderer.renderOverlay(potion_sickness, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
115+
effectCounter++;
116+
}
116117

117-
if (player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(StatsT.POISONED)) > 0) {
118-
UIRenderer.renderOverlay(poisoned, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
119-
effectCounter++;
120-
}
118+
if (player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(StatsT.POISONED)) > 0) {
119+
UIRenderer.renderOverlay(poisoned, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
120+
effectCounter++;
121+
}
121122

122-
if (player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(StatsT.IRON_SKIN)) > 0) {
123-
UIRenderer.renderOverlay(iron_skin, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
124-
effectCounter++;
125-
}
123+
if (player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(StatsT.IRON_SKIN)) > 0) {
124+
UIRenderer.renderOverlay(iron_skin, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
125+
effectCounter++;
126+
}
126127

127-
if (player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(StatsT.HAPPY)) > 0) {
128-
UIRenderer.renderOverlay(happy, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
129-
effectCounter++;
130-
}
128+
if (player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(StatsT.HAPPY)) > 0) {
129+
UIRenderer.renderOverlay(happy, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
130+
effectCounter++;
131+
}
131132

132-
if (player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(StatsT.COZY_FIRE)) > 0) {
133-
UIRenderer.renderOverlay(cozy_fire, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
134-
effectCounter++;
135-
}
133+
if (player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(StatsT.COZY_FIRE)) > 0) {
134+
UIRenderer.renderOverlay(cozy_fire, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
135+
effectCounter++;
136+
}
136137

137-
if (player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(StatsT.REGENERATION)) > 0) {
138-
UIRenderer.renderOverlay(regeneration, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
139-
effectCounter++;
140-
}
138+
if (player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(StatsT.REGENERATION)) > 0) {
139+
UIRenderer.renderOverlay(regeneration, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
140+
effectCounter++;
141+
}
141142

142-
if (player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(StatsT.BLEEDING)) > 0) {
143-
UIRenderer.renderOverlay(bleeding, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
144-
effectCounter++;
145-
}
146-
if (player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(StatsT.WATER_CANDLE)) > 0) {
147-
UIRenderer.renderOverlay(water_candle, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
148-
effectCounter++;
143+
if (player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(StatsT.BLEEDING)) > 0) {
144+
UIRenderer.renderOverlay(bleeding, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
145+
effectCounter++;
146+
}
147+
if (player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(StatsT.WATER_CANDLE)) > 0) {
148+
UIRenderer.renderOverlay(water_candle, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
149+
effectCounter++;
150+
}
149151
}
150152
}
151153
});

forge/src/main/java/com/ryorama/terrariamod/forge/TerrariaModEvents.java

+4-7
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,13 @@
33
import com.ryorama.terrariamod.TerrariaMod;
44
import com.ryorama.terrariamod.entities.EntitiesT;
55
import com.ryorama.terrariamod.forge.network.GameRulesT;
6-
import com.ryorama.terrariamod.forge.network.client.ui.TerraruaUIRenderer;
6+
import com.ryorama.terrariamod.forge.network.client.ui.TerrariaUIRenderer;
77
import com.ryorama.terrariamod.utils.WorldDataT;
8-
import com.ryorama.terrariamod.world.EntitySpawner;
98
import net.minecraft.client.MinecraftClient;
109
import net.minecraft.client.network.ClientPlayerEntity;
1110
import net.minecraft.entity.attribute.EntityAttributes;
1211
import net.minecraft.entity.mob.MobEntity;
1312
import net.minecraft.entity.player.PlayerEntity;
14-
import net.minecraft.server.network.ServerPlayerEntity;
15-
import net.minecraft.util.math.Vec3d;
1613
import net.minecraft.world.World;
1714
import net.minecraftforge.api.distmarker.Dist;
1815
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -106,9 +103,9 @@ public static void WorldUnloadEvent(LevelEvent.Save event) {
106103
@SubscribeEvent
107104
@OnlyIn(value= Dist.CLIENT)
108105
public static void renderGuiOverlayEvent(RenderGuiOverlayEvent.Pre event) {
109-
TerraruaUIRenderer.renderTerrariaHealth();
110-
TerraruaUIRenderer.renderTerrariaEffects();
111-
TerraruaUIRenderer.renderTerrariaMana();
106+
TerrariaUIRenderer.renderTerrariaHealth();
107+
TerrariaUIRenderer.renderTerrariaEffects();
108+
TerrariaUIRenderer.renderTerrariaMana();
112109
}
113110

114111
@SubscribeEvent

forge/src/main/java/com/ryorama/terrariamod/forge/TerrariaModForge.java

+7-13
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,22 @@
11
package com.ryorama.terrariamod.forge;
22

3+
import com.ryorama.terrariamod.TerrariaModConfig;
34
import com.ryorama.terrariamod.forge.network.NetworkHandler;
4-
import com.ryorama.terrariamod.stats.StatsT;
5-
import com.ryorama.terrariamod.utils.WorldDataT;
65
import dev.architectury.platform.forge.EventBuses;
76
import com.ryorama.terrariamod.TerrariaMod;
87
import net.minecraft.client.MinecraftClient;
9-
import net.minecraft.client.util.telemetry.WorldLoadedEvent;
10-
import net.minecraft.entity.attribute.EntityAttributes;
11-
import net.minecraft.entity.player.PlayerEntity;
12-
import net.minecraft.world.World;
13-
import net.minecraft.world.WorldEvents;
14-
import net.minecraft.world.tick.Tick;
158
import net.minecraftforge.api.distmarker.Dist;
169
import net.minecraftforge.common.MinecraftForge;
17-
import net.minecraftforge.event.TickEvent;
18-
import net.minecraftforge.event.entity.EntityJoinLevelEvent;
19-
import net.minecraftforge.event.level.LevelEvent;
2010
import net.minecraftforge.eventbus.api.IEventBus;
21-
import net.minecraftforge.eventbus.api.SubscribeEvent;
11+
import net.minecraftforge.fml.DistExecutor;
12+
import net.minecraftforge.fml.IExtensionPoint;
13+
import net.minecraftforge.fml.ModLoadingContext;
2214
import net.minecraftforge.fml.common.Mod;
2315
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
2416
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
2517
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
18+
import net.minecraftforge.network.NetworkConstants;
2619

27-
import java.io.IOException;
2820
import java.io.InputStream;
2921
import java.util.ArrayList;
3022
import java.util.List;
@@ -45,6 +37,8 @@ public TerrariaModForge() {
4537
modBus.addListener(this::commonSetup);
4638
modBus.addListener(this::clientSetup);
4739
MinecraftForge.EVENT_BUS.register(TerrariaModEvents.class);
40+
ModLoadingContext.get().registerExtensionPoint(IExtensionPoint.DisplayTest.class, () -> new IExtensionPoint.DisplayTest(() -> NetworkConstants.IGNORESERVERONLY, (a, b) -> true));
41+
DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> TerrariaModConfig::new);
4842
}
4943

5044
public void commonSetup(FMLCommonSetupEvent event) {

forge/src/main/java/com/ryorama/terrariamod/forge/network/client/ui/TerraruaUIRenderer.java forge/src/main/java/com/ryorama/terrariamod/forge/network/client/ui/TerrariaUIRenderer.java

+47-39
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@
1010
import net.minecraft.client.util.math.MatrixStack;
1111
import net.minecraft.entity.attribute.EntityAttributes;
1212
import net.minecraft.util.Identifier;
13+
import net.minecraftforge.api.distmarker.Dist;
14+
import net.minecraftforge.api.distmarker.OnlyIn;
1315

14-
public class TerraruaUIRenderer {
16+
public class TerrariaUIRenderer {
1517
public static Identifier health_icon = new Identifier(TerrariaMod.MOD_ID, "textures/ui/heart.png");
1618
public static Identifier shield = new Identifier(TerrariaMod.MOD_ID, "textures/ui/shield.png");
1719
public static Identifier mana = new Identifier(TerrariaMod.MOD_ID, "textures/ui/mana.png");
@@ -31,6 +33,7 @@ public class TerraruaUIRenderer {
3133

3234
public static ClientPlayerEntity player;
3335

36+
@OnlyIn(Dist.CLIENT)
3437
public static void renderTerrariaHealth() {
3538
if (!TerrariaMod.CONFIG.useVanillaHud) {
3639
float scaledWidth = MinecraftClient.getInstance().getWindow().getScaledWidth();
@@ -53,6 +56,7 @@ public static void renderTerrariaHealth() {
5356
}
5457
}
5558

59+
@OnlyIn(Dist.CLIENT)
5660
public static void renderTerrariaDefense() {
5761
float scaledWidth = MinecraftClient.getInstance().getWindow().getScaledWidth();
5862

@@ -65,6 +69,7 @@ public static void renderTerrariaDefense() {
6569
}
6670
}
6771

72+
@OnlyIn(Dist.CLIENT)
6873
public static void renderTerrariaMana() {
6974
if (!TerrariaMod.CONFIG.useVanillaHud) {
7075
float scaledWidth = MinecraftClient.getInstance().getWindow().getScaledWidth();
@@ -83,53 +88,56 @@ public static void renderTerrariaMana() {
8388
}
8489
}
8590

91+
@OnlyIn(Dist.CLIENT)
8692
public static void renderTerrariaEffects() {
87-
if (MinecraftClient.getInstance().player != null) {
88-
player = MinecraftClient.getInstance().player;
89-
}
93+
if (TerrariaMod.CONFIG.showTerrariaBuffs) {
94+
if (MinecraftClient.getInstance().player != null) {
95+
player = MinecraftClient.getInstance().player;
96+
}
9097

91-
int i3 = 17;
92-
int j3 = 27;
93-
int effectCounter = 0;
98+
int i3 = 17;
99+
int j3 = 27;
100+
int effectCounter = 0;
94101

95-
if (player != null) {
96-
if (GameRulesT.POTION_SICKNESS.get() > 0) {
97-
UIRenderer.renderOverlay(potion_sickness, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
98-
effectCounter++;
99-
}
102+
if (player != null) {
103+
if (GameRulesT.POTION_SICKNESS.get() > 0) {
104+
UIRenderer.renderOverlay(potion_sickness, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
105+
effectCounter++;
106+
}
100107

101-
if (GameRulesT.POISONED.get() > 0) {
102-
UIRenderer.renderOverlay(poisoned, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
103-
effectCounter++;
104-
}
108+
if (GameRulesT.POISONED.get() > 0) {
109+
UIRenderer.renderOverlay(poisoned, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
110+
effectCounter++;
111+
}
105112

106-
if (GameRulesT.IRON_SKIN.get() > 0) {
107-
UIRenderer.renderOverlay(iron_skin, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
108-
effectCounter++;
109-
}
113+
if (GameRulesT.IRON_SKIN.get() > 0) {
114+
UIRenderer.renderOverlay(iron_skin, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
115+
effectCounter++;
116+
}
110117

111-
if (GameRulesT.HAPPY.get() > 0) {
112-
UIRenderer.renderOverlay(happy, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
113-
effectCounter++;
114-
}
118+
if (GameRulesT.HAPPY.get() > 0) {
119+
UIRenderer.renderOverlay(happy, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
120+
effectCounter++;
121+
}
115122

116-
if (GameRulesT.COZY_FIRE.get() > 0) {
117-
UIRenderer.renderOverlay(cozy_fire, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
118-
effectCounter++;
119-
}
123+
if (GameRulesT.COZY_FIRE.get() > 0) {
124+
UIRenderer.renderOverlay(cozy_fire, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
125+
effectCounter++;
126+
}
120127

121-
if (GameRulesT.REGENERATION.get() > 0) {
122-
UIRenderer.renderOverlay(regeneration, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
123-
effectCounter++;
124-
}
128+
if (GameRulesT.REGENERATION.get() > 0) {
129+
UIRenderer.renderOverlay(regeneration, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
130+
effectCounter++;
131+
}
125132

126-
if (GameRulesT.BLEEDING.get() > 0) {
127-
UIRenderer.renderOverlay(bleeding, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
128-
effectCounter++;
129-
}
130-
if (GameRulesT.WATER_CANDLE.get() > 0) {
131-
UIRenderer.renderOverlay(water_candle, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
132-
effectCounter++;
133+
if (GameRulesT.BLEEDING.get() > 0) {
134+
UIRenderer.renderOverlay(bleeding, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
135+
effectCounter++;
136+
}
137+
if (GameRulesT.WATER_CANDLE.get() > 0) {
138+
UIRenderer.renderOverlay(water_candle, 50, 16, 16, i3 + effectCounter * 20f, j3, -90);
139+
effectCounter++;
140+
}
133141
}
134142
}
135143
}

0 commit comments

Comments
 (0)