Skip to content

Commit

Permalink
Ported to 1.15.2
Browse files Browse the repository at this point in the history
Updated mappings
  • Loading branch information
GirafiStudios committed Jan 27, 2020
1 parent ab78c45 commit 2641957
Show file tree
Hide file tree
Showing 9 changed files with 141 additions and 110 deletions.
6 changes: 3 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
minecraft_version=1.15.1
forge_version=30.0.22
mappings=20191221-1.14.3
minecraft_version=1.15.2
forge_version=31.0.1
mappings=20200127-1.15.1
mod_version=1.6.4

org.gradle.jvmargs=-Xmx4G
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/dmillerw/ping/client/KeyHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,16 @@ public static void onClientTick(TickEvent.ClientTickEvent event) {
return;
}

long handle = Minecraft.getInstance().func_228018_at_().getHandle();
long handle = Minecraft.getInstance().getMainWindow().getHandle();
boolean keyPressed = (KEY_BINDING.getKey().getKeyCode() >= 0 ? InputMappings.isKeyDown(handle, KEY_BINDING.getKey().getKeyCode()) : InputMappings.isKeyDown(handle, KEY_BINDING.getKey().getKeyCode() + 100));

if (keyPressed != lastKeyState) {
if (keyPressed) {
PingSelectGui.activate();
} else {
if (!ignoreNextRelease) {
final double mouseX = mc.mouseHelper.getMouseX() * ((double) mc.func_228018_at_().getScaledWidth() / mc.func_228018_at_().getWidth());
final double mouseY = mc.mouseHelper.getMouseY() * ((double) mc.func_228018_at_().getScaledHeight() / mc.func_228018_at_().getHeight());
final double mouseX = mc.mouseHelper.getMouseX() * ((double) mc.getMainWindow().getScaledWidth() / mc.getMainWindow().getWidth());
final double mouseY = mc.mouseHelper.getMouseY() * ((double) mc.getMainWindow().getScaledHeight() / mc.getMainWindow().getHeight());

PingSelectGui.INSTANCE.mouseClicked(mouseX, mouseY, 0);
}
Expand Down
78 changes: 41 additions & 37 deletions src/main/java/dmillerw/ping/client/PingHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,15 @@
import dmillerw.ping.network.packet.ServerBroadcastPing;
import dmillerw.ping.util.Config;
import dmillerw.ping.util.PingSounds;
import net.minecraft.block.Blocks;
import net.minecraft.client.Minecraft;
import net.minecraft.client.audio.SimpleSound;
import net.minecraft.client.renderer.*;
import net.minecraft.client.renderer.culling.ClippingHelperImpl;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.entity.Entity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.SoundCategory;
import net.minecraft.util.math.MathHelper;
Expand All @@ -42,7 +45,7 @@
public class PingHandler {
public static final PingHandler INSTANCE = new PingHandler();
public static final ResourceLocation TEXTURE = new ResourceLocation(Ping.MOD_ID, "textures/ping.png");
private static final RenderType PING_RENDER = RenderType.func_228638_b_(TEXTURE);
private static final RenderType PING_RENDER = RenderType.entityCutout(TEXTURE);
private static List<PingWrapper> active_pings = new ArrayList<>();

public void onPingPacket(ServerBroadcastPing packet) {
Expand All @@ -61,36 +64,36 @@ public static void onRenderWorld(RenderWorldLastEvent event) {
Minecraft mc = Minecraft.getInstance();
Entity renderEntity = mc.getRenderViewEntity();
if (renderEntity == null || active_pings.isEmpty()) return;
double interpX = renderEntity.prevPosX + (renderEntity.func_226277_ct_() - renderEntity.prevPosX) * event.getPartialTicks();
double interpY = (renderEntity.prevPosY + (renderEntity.func_226278_cu_() - renderEntity.prevPosY) * event.getPartialTicks()) + 1;
double interpZ = renderEntity.prevPosZ + (renderEntity.func_226281_cx_() - renderEntity.prevPosZ) * event.getPartialTicks();
double interpX = renderEntity.prevPosX + (renderEntity.getPosX() - renderEntity.prevPosX) * event.getPartialTicks();
double interpY = (renderEntity.prevPosY + (renderEntity.getPosY() - renderEntity.prevPosY) * event.getPartialTicks()) + 1;
double interpZ = renderEntity.prevPosZ + (renderEntity.getPosZ() - renderEntity.prevPosZ) * event.getPartialTicks();
ActiveRenderInfo renderInfo = TileEntityRendererDispatcher.instance.renderInfo;

MatrixStack projectionLook = new MatrixStack();
EntityViewRenderEvent.CameraSetup cameraSetup = ForgeHooksClient.onCameraSetup(mc.gameRenderer, renderInfo, event.getPartialTicks());
renderInfo.setAnglesInternal(cameraSetup.getYaw(), cameraSetup.getPitch());
projectionLook.func_227863_a_(Vector3f.field_229183_f_.func_229187_a_(cameraSetup.getRoll()));
projectionLook.func_227863_a_(Vector3f.field_229179_b_.func_229187_a_(renderInfo.getPitch()));
projectionLook.func_227863_a_(Vector3f.field_229181_d_.func_229187_a_(renderInfo.getYaw() + 180.0F));
projectionLook.rotate(Vector3f.ZP.rotationDegrees(cameraSetup.getRoll()));
projectionLook.rotate(Vector3f.XP.rotationDegrees(renderInfo.getPitch()));
projectionLook.rotate(Vector3f.YP.rotationDegrees(renderInfo.getYaw() + 180.0F));

MatrixStack entityLocation = new MatrixStack();
entityLocation.func_227866_c_().func_227870_a_().func_226595_a_(mc.gameRenderer.func_228382_a_(renderInfo, event.getPartialTicks(), true));
entityLocation.getLast().getPositionMatrix().multiply(mc.gameRenderer.getProjectionMatrix(renderInfo, event.getPartialTicks(), true));

ClippingHelperImpl clippingHelper = new ClippingHelperImpl(projectionLook.func_227866_c_().func_227870_a_(), entityLocation.func_227866_c_().func_227870_a_());
clippingHelper.func_228952_a_(interpX, interpY, interpZ);
ClippingHelperImpl clippingHelper = new ClippingHelperImpl(projectionLook.getLast().getPositionMatrix(), entityLocation.getLast().getPositionMatrix());
clippingHelper.setCameraPosition(interpX, interpY, interpZ);

for (PingWrapper ping : active_pings) {
double px = ping.pos.getX() + 0.5D - interpX;
double py = ping.pos.getY() + 0.5D - interpY + 1 - renderEntity.getEyeHeight();
double pz = ping.pos.getZ() + 0.5D - interpZ;

if (clippingHelper.func_228957_a_(ping.getAABB())) {
if (clippingHelper.isBoundingBoxInFrustum(ping.getAABB())) {
ping.isOffscreen = false;
if (Config.VISUAL.blockOverlay.get()) {
Vec3d staticPos = TileEntityRendererDispatcher.instance.renderInfo.getProjectedView();
renderPingOverlay(ping.pos.getX() - staticPos.getX(), ping.pos.getY() - staticPos.getY(), ping.pos.getZ() - staticPos.getZ(), event.getMatrixStack(), ping);
}
renderPing(px, py, pz, event.getMatrixStack(), renderEntity, ping);
//renderPing(px, py, pz, event.getMatrixStack(), renderEntity, ping);
} else {
ping.isOffscreen = true;
translatePingCoordinates(px, py, pz, ping);
Expand All @@ -106,8 +109,8 @@ public static void renderPingOffscreen(RenderGameOverlayEvent.Post event) {
if (!ping.isOffscreen || mc.currentScreen != null || mc.gameSettings.showDebugInfo) {
continue;
}
int width = mc.func_228018_at_().getWidth();
int height = mc.func_228018_at_().getHeight();
int width = mc.getMainWindow().getWidth();
int height = mc.getMainWindow().getHeight();

int x1 = -(width / 2) + 32;
int y1 = -(height / 2) + 32;
Expand Down Expand Up @@ -147,17 +150,17 @@ public static void renderPingOffscreen(RenderGameOverlayEvent.Post event) {
pingY += height * 0.5D;

MatrixStack matrixStack = new MatrixStack();
matrixStack.func_227860_a_();
MatrixStack.Entry matrixEntry = matrixStack.func_227866_c_();
Matrix4f matrix4f = matrixEntry.func_227870_a_();
Matrix3f matrix3f = matrixEntry.func_227872_b_();
matrixStack.push();
MatrixStack.Entry matrixEntry = matrixStack.getLast();
Matrix4f matrix4f = matrixEntry.getPositionMatrix();
Matrix3f matrix3f = matrixEntry.getNormalMatrix();
Tessellator tessellator = Tessellator.getInstance();
BufferBuilder bufferBuilder = tessellator.getBuffer();
IRenderTypeBuffer renderTypeBuffer = IRenderTypeBuffer.func_228455_a_(bufferBuilder);
IRenderTypeBuffer renderTypeBuffer = IRenderTypeBuffer.getImpl(bufferBuilder);
IVertexBuilder vertexBuilder = renderTypeBuffer.getBuffer(PING_RENDER);
Minecraft.getInstance().textureManager.bindTexture(TEXTURE);

matrixStack.func_227861_a_(pingX / 2, pingY / 2, 0);
matrixStack.translate(pingX / 2, pingY / 2, 0);

float min = -8;
float max = 8;
Expand All @@ -180,9 +183,9 @@ public static void renderPingOffscreen(RenderGameOverlayEvent.Post event) {
bufferBuilder.finishDrawing();
WorldVertexBufferUploader.draw(bufferBuilder);

matrixStack.func_227861_a_(0, 0, 0);
matrixStack.translate(0, 0, 0);

matrixStack.func_227865_b_();
matrixStack.pop();
}
}
}
Expand All @@ -206,18 +209,18 @@ public static void onClientTick(TickEvent.ClientTickEvent event) {

private static void renderPing(double px, double py, double pz, MatrixStack matrixStack, Entity renderEntity, PingWrapper ping) {
Minecraft mc = Minecraft.getInstance();
matrixStack.func_227860_a_(); //push
matrixStack.func_227861_a_(px, py, pz); //translate
matrixStack.push(); //push
matrixStack.translate(px, py, pz); //translate
//System.out.println("X:" + px + " Y:" + py + " Z:" + pz);
matrixStack.func_227863_a_(Vector3f.field_229181_d_.func_229187_a_(-renderEntity.rotationYaw)); //rotate
matrixStack.func_227863_a_(Vector3f.field_229179_b_.func_229187_a_(renderEntity.rotationPitch)); //rotate
matrixStack.func_227863_a_(Vector3f.field_229183_f_.func_229187_a_(180.0F)); //rotate
matrixStack.rotate(Vector3f.YP.rotationDegrees(-renderEntity.rotationYaw)); //rotate
matrixStack.rotate(Vector3f.XP.rotationDegrees(renderEntity.rotationPitch)); //rotate
matrixStack.rotate(Vector3f.ZP.rotationDegrees(180.0F)); //rotate

MatrixStack.Entry matrixEntry = matrixStack.func_227866_c_();
Matrix4f matrix4f = matrixEntry.func_227870_a_();
Matrix3f matrix3f = matrixEntry.func_227872_b_();
MatrixStack.Entry matrixEntry = matrixStack.getLast();
Matrix4f matrix4f = matrixEntry.getPositionMatrix();
Matrix3f matrix3f = matrixEntry.getNormalMatrix();
Tessellator tessellator = Tessellator.getInstance();
IRenderTypeBuffer renderTypeBuffer = IRenderTypeBuffer.func_228455_a_(tessellator.getBuffer());
IRenderTypeBuffer renderTypeBuffer = IRenderTypeBuffer.getImpl(tessellator.getBuffer());
IVertexBuilder vertexBuilder = renderTypeBuffer.getBuffer(PING_RENDER);

float min = -0.25F - (0.25F * (float) ping.animationTimer / 20F);
Expand All @@ -240,19 +243,20 @@ private static void renderPing(double px, double py, double pz, MatrixStack matr
VertexHelper.renderPosTexColor(vertexBuilder, matrix4f, matrix3f, min, min, ping.type.minU, ping.type.maxV, 1.0F, 1.0F, 1.0F, alpha);
tessellator.draw();

matrixStack.func_227865_b_(); //pop
matrixStack.pop(); //pop
}

private static void renderPingOverlay(double x, double y, double z, MatrixStack matrixStack, PingWrapper ping) {
TextureAtlasSprite icon = Minecraft.getInstance().getItemRenderer().getItemModelMesher().getItemModel(new ItemStack(Blocks.WHITE_STAINED_GLASS)).getParticleTexture();
float padding = 0F + (0.20F * (float) ping.animationTimer / (float) 20);
float box = 1 + padding + padding;

matrixStack.func_227860_a_();
matrixStack.func_227861_a_(x + 0.5, y + 0.5, z + 0.5);
PingRenderHelper.drawBlockOverlay(box, box, box, matrixStack, ping.color, 175);
matrixStack.func_227861_a_(0, 0, 0);
matrixStack.push();
matrixStack.translate(x + 0.5, y + 0.5, z + 0.5);
PingRenderHelper.drawBlockOverlay(box, box, box, matrixStack, icon, ping.color, 175);
matrixStack.translate(0, 0, 0);

matrixStack.func_227865_b_();
matrixStack.pop();
}

private static void translatePingCoordinates(double px, double py, double pz, PingWrapper ping) {
Expand Down
22 changes: 19 additions & 3 deletions src/main/java/dmillerw/ping/client/PingRenderType.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,34 @@
package dmillerw.ping.client;

import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.renderer.RenderState;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.util.ResourceLocation;

public class PingRenderType extends RenderState {
protected static final RenderState.TransparencyState OVERLAY_TRANSPARENCY = new RenderState.TransparencyState("overlay_transparency", () -> {
RenderSystem.enableBlend();
RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
RenderSystem.disableDepthTest();
}, () -> {
RenderSystem.enableDepthTest();
RenderSystem.disableBlend();
RenderSystem.defaultBlendFunc();
});

public PingRenderType(String string, Runnable r, Runnable r1) {
super(string, r, r1);
}

public static RenderType getPingOverlay(ResourceLocation location) {
RenderType.State renderTypeState = RenderType.State.func_228694_a_().func_228724_a_(new RenderState.TextureState(location, false, false)).func_228726_a_(field_228514_f_).func_228716_a_(field_228533_y_).func_228713_a_(field_228517_i_).func_228719_a_(field_228529_u_).func_228722_a_(field_228530_v_).func_228728_a_(true);
return RenderType.func_228633_a_("ping_overlay_translucent", DefaultVertexFormats.POSITION_COLOR, 7, 256, true, true, renderTypeState);
public static RenderType getPingOverlay() {
RenderType.State renderTypeState = RenderType.State.builder().transparency(OVERLAY_TRANSPARENCY)
//.func_228716_a_(field_228533_y_)
//.func_228713_a_(field_228517_i_)
//.func_228719_a_(field_228529_u_)
//.func_228722_a_(field_228530_v_)
.build(true);
return RenderType.get("ping_overlay_transparent", DefaultVertexFormats.BLOCK, 7, 256, true, true, renderTypeState);
}
}

0 comments on commit 2641957

Please sign in to comment.