1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
package kr.syeyoung.dungeonsguide.mod.utils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.util.MathHelper;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.NotNull;
/**
* STOLEN FROM VANILLA 1.8.9, DONT @ ME
* CREDS TO MOJANG AND THE CREW
*/
public class TitleRender {
Logger logger = LogManager.getLogger("TitleRender");
private static TitleRender instance;
public static TitleRender getInstance() {
return instance == null ? instance = new TitleRender() : instance;
}
private TitleRender() {
MinecraftForge.EVENT_BUS.register(this);
}
protected static int titlesTimer;
/**
* The current title displayed
*/
protected static String displayedTitle = "";
/**
* The current sub-title displayed
*/
protected static String displayedSubTitle = "";
/**
* The time that the title take to fade in
*/
protected static int titleFadeIn;
/**
* The time that the title is display
*/
protected static int titleDisplayTime;
/**
* The time that the title take to fade out
*/
protected static int titleFadeOut;
Minecraft mc = Minecraft.getMinecraft();
FontRenderer fontRenderer = mc.fontRendererObj;
@SubscribeEvent
public void onClinetTick(TickEvent.ClientTickEvent e){
if(e.phase == TickEvent.Phase.START){
tick();
}
}
@SubscribeEvent
public void onGameOverLay(RenderGameOverlayEvent.Post e){
if (!(e.type == RenderGameOverlayEvent.ElementType.EXPERIENCE || e.type == RenderGameOverlayEvent.ElementType.JUMPBAR)) return;
GlStateManager.enableBlend();
draw(e.partialTicks);
}
void tick(){
if (titlesTimer > 0) {
--titlesTimer;
if (titlesTimer <= 0) {
displayedTitle = "";
displayedSubTitle = "";
}
}
}
public static void clearTitle(){
displayedTitle = "";
displayedSubTitle = "";
titlesTimer = 0;
}
public static void displayTitle(@NotNull String title, String subTitle, int timeFadeIn, int displayTime, int timeFadeOut) {
displayedTitle = title;
displayedSubTitle = subTitle;
titleFadeIn = timeFadeIn;
titleDisplayTime = displayTime;
titleFadeOut = timeFadeOut;
titlesTimer = titleFadeIn + titleDisplayTime + titleFadeOut;
}
void draw(float partialTicks){
float g;
int l;
ScaledResolution scaledResolution = new ScaledResolution(mc);
int i = scaledResolution.getScaledWidth();
int j = scaledResolution.getScaledHeight();
if (titlesTimer > 0) {
g = titlesTimer - partialTicks;
l = 255;
if (titlesTimer > titleFadeOut + titleDisplayTime) {
float h = (float)(titleFadeIn + titleDisplayTime + titleFadeOut) - g;
l = (int)(h * 255.0f / (float)titleFadeIn);
}
if (titlesTimer <= titleFadeOut) {
float h = g;
l = (int)(h * 255.0f / (float)titleFadeOut);
}
if ((l = MathHelper.clamp_int(l, 0, 255)) > 8) {
GlStateManager.pushMatrix();
GlStateManager.translate(i / 2, j / 2, 0.0f);
GlStateManager.enableBlend();
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
GlStateManager.pushMatrix();
GlStateManager.scale(6.0f, 6.0f, 6.0f);
int m = l << 24 & 0xFF000000;
fontRenderer.drawString(displayedTitle, -fontRenderer.getStringWidth(displayedTitle) / 2, -10.0f, 0xFFFFFF | m, true);
GlStateManager.popMatrix();
GlStateManager.pushMatrix();
GlStateManager.scale(2.0f, 2.0f, 2.0f);
fontRenderer.drawString(displayedSubTitle, -fontRenderer.getStringWidth(displayedSubTitle) / 2, 5.0f, 0xFFFFFF | m, true);
GlStateManager.popMatrix();
GlStateManager.disableBlend();
GlStateManager.popMatrix();
}
}
}
}
|