Fix frustrum and OpenGL occlusion check.

master
mckuhei 2 years ago
parent 79942cf4ba
commit fd88bbef5b

@ -0,0 +1,77 @@
/**************************************************************************/
/* Generated by Zelix KlassMaster 17.0.3 Build Helper 2023.04.01 13:08:01 */
/**************************************************************************/
classpath "D:\skidsuit\obfuscators\ZKM.jar"
"C:\Program Files\Java\jre1.8.0_361\lib\resources.jar"
"C:\Program Files\Java\jre1.8.0_361\lib\rt.jar"
"C:\Program Files\Java\jre1.8.0_361\lib\jsse.jar"
"C:\Program Files\Java\jre1.8.0_361\lib\jce.jar"
"C:\Program Files\Java\jre1.8.0_361\lib\charsets.jar"
"C:\Program Files\Java\jre1.8.0_361\lib\jfr.jar"
"D:\MCP\mcp72\jars\bin\jinput.jar"
"D:\MCP\mcp72\jars\bin\lwjgl.jar"
"D:\MCP\mcp72\jars\bin\lwjgl_util.jar"
"D:\MCP\mcp72\jars\bin\minecraft.jar";
open "D:\MCP\mcp72\bin\minecraft\argo"
"D:\MCP\mcp72\bin\minecraft\org\bouncycastle\asn1"
"D:\MCP\mcp72\bin\minecraft\org\bouncycastle\asn1\bc"
"D:\MCP\mcp72\bin\minecraft\org\bouncycastle"
"D:\MCP\mcp72\bin\minecraft\net\minecraft\client"
"D:\MCP\mcp72\bin\minecraft\org\bouncycastle\jcajce\provider\config"
"D:\MCP\mcp72\bin\minecraft\org\bouncycastle\crypto"
"D:\MCP\mcp72\bin\minecraft\org\bouncycastle\crypto\engines"
"D:\MCP\mcp72\bin\minecraft\argo\format"
"D:\MCP\mcp72\bin\minecraft\org\bouncycastle\crypto\io"
"D:\MCP\mcp72\bin\minecraft\org\bouncycastle\jcajce"
"D:\MCP\mcp72\bin\minecraft\org\bouncycastle\jce"
"D:\MCP\mcp72\bin\minecraft\argo\jdom"
"D:\MCP\mcp72\bin\minecraft\org\mcmodule\math"
"D:\MCP\mcp72\bin\minecraft\org\mcmodule"
"D:\MCP\mcp72\bin\minecraft"
"D:\MCP\mcp72\bin\minecraft\net\minecraft"
"D:\MCP\mcp72\bin\minecraft\org\bouncycastle\crypto\modes"
"D:\MCP\mcp72\bin\minecraft\net"
"D:\MCP\mcp72\bin\minecraft\org"
"D:\MCP\mcp72\bin\minecraft\org\bouncycastle\crypto\params"
"D:\MCP\mcp72\bin\minecraft\org\bouncycastle\asn1\pkcs"
"D:\MCP\mcp72\bin\minecraft\org\bouncycastle\jcajce\provider"
"D:\MCP\mcp72\bin\minecraft\org\bouncycastle\jce\provider"
"D:\MCP\mcp72\bin\minecraft\argo\saj"
"D:\MCP\mcp72\bin\minecraft\net\minecraft\server"
"D:\MCP\mcp72\bin\minecraft\net\minecraft\src"
"D:\MCP\mcp72\bin\minecraft\org\bouncycastle\jcajce\provider\util"
"D:\MCP\mcp72\bin\minecraft\org\bouncycastle\util"
"D:\MCP\mcp72\bin\minecraft\org\mcmodule\util";
trimExclude public abstract net.minecraft.server.MinecraftServer^ public static main(java.lang.String[]) and
public net.minecraft.client.MinecraftApplet extends java.applet.Applet and
net.minecraft.client.Minecraft^ public static main(java.lang.String[]);
trim deleteSourceFileAttributes=true
deleteDeprecatedAttributes=true
deleteAnnotationAttributes=true
deleteExceptionAttributes=true
deleteUnknownAttributes=true;
exclude public net.minecraft.client.^MinecraftApplet extends java.applet.Applet and
public abstract net.minecraft.server.^MinecraftServer^ public static main(java.lang.String[]) and
net.minecraft.client.^Minecraft^ public static main(java.lang.String[]);
obfuscate changeLogFileIn=""
changeLogFileOut="ChangeLog.txt"
keepGenericsInfo=false
obfuscateFlow=light
exceptionObfuscation=light
encryptStringLiterals=enhanced
mixedCaseClassNames=ifInArchive
aggressiveMethodRenaming=true
randomize=true
collapsePackagesWithDefault=""
localVariables=obfuscate
lineNumbers=scramble
autoReflectionHandling=normal
obfuscateReferences=none;
saveAll archiveCompression=all "D:\MCP\mcp72\reobf\minecraft";

@ -1247,6 +1247,6 @@ public abstract class MinecraftServer implements Runnable, IPlayerUsage, IComman
public static void main(String[] args) {
StatList.func_75919_a();
new Thread(new DedicatedServer(new File("."))).start();
new DedicatedServer(new File(".")).startServerThread();
}
}

@ -471,7 +471,7 @@ public class BlockPistonBase extends Block
}
}
while (var6 != par2 || var7 != par3 || var8 != par4)
while (!var6.equals(par2) || var7 != par3 || !var8.equals(par4))
{
BigInteger x = var6.subtract(Facing.offsetsXForSide[par5]);
var10 = var7 - Facing.offsetsYForSide[par5];

@ -116,7 +116,7 @@ public abstract class EntityPlayer extends EntityLiving implements ICommandSende
* An instance of a fishing rod's hook. If this isn't null, the icon image of the fishing rod is slightly different
*/
public EntityFishHook fishEntity = null;
public BigDecimal posXBig = BigDecimal.ZERO, posZBig = BigDecimal.ZERO;
public BigDecimal posXBig = BigDecimal.ZERO, posZBig = BigDecimal.ZERO, lastPosX = BigDecimal.ZERO, lastPosZ = BigDecimal.ZERO;
public EntityPlayer(World par1World)
{
@ -209,6 +209,8 @@ public abstract class EntityPlayer extends EntityLiving implements ICommandSende
public void onUpdate()
{
// if(!worldObj.isRemote) System.out.println(this.posX);
this.lastPosX = posXBig;
this.lastPosZ = posZBig;
if (this.itemInUse != null)
{
ItemStack var1 = this.inventory.getCurrentItem();
@ -614,8 +616,8 @@ public abstract class EntityPlayer extends EntityLiving implements ICommandSende
public void moveEntity(double par1, double par3, double par5)
{
super.boundingBox.setBounds(this.boundingBox.minX.doubleValue(), super.boundingBox.minY, this.boundingBox.minZ.doubleValue(), this.boundingBox.maxX.doubleValue(), super.boundingBox.maxY, this.boundingBox.maxZ.doubleValue());
super.moveEntity(par1, par3, par5);
super.boundingBox.setBounds(this.boundingBox.minX.doubleValue(), this.boundingBox.minY, this.boundingBox.minZ.doubleValue(), this.boundingBox.maxX.doubleValue(), this.boundingBox.maxY, this.boundingBox.maxZ.doubleValue());
if (this.noClip)
{
this.boundingBox.offset(par1, par3, par5);

@ -1,6 +1,8 @@
package net.minecraft.src;
import java.awt.image.BufferedImage;
import java.math.BigDecimal;
import org.mcmodule.math.BigInteger;
import java.nio.FloatBuffer;
import java.util.Iterator;
@ -942,9 +944,9 @@ public class EntityRenderer
EntityPlayer var4 = (EntityPlayer) this.mc.renderViewEntity;
RenderGlobal var5 = this.mc.renderGlobal;
EffectRenderer var6 = this.mc.effectRenderer;
double var7 = var4.lastTickPosX + (var4.posX - var4.lastTickPosX) * (double)par1;
BigDecimal var7 = var4.lastPosX == var4.posXBig ? var4.posXBig : var4.lastPosX.add(BigDecimal.valueOf((var4.posXBig.subtract(var4.lastPosX)).doubleValue() * par1));
double var9 = var4.lastTickPosY + (var4.posY - var4.lastTickPosY) * (double)par1;
double var11 = var4.lastTickPosZ + (var4.posZ - var4.lastTickPosZ) * (double)par1;
BigDecimal var11 = var4.lastPosZ == var4.posZBig ? var4.posZBig : var4.lastPosZ.add(BigDecimal.valueOf((var4.posZBig.subtract(var4.lastPosZ)).doubleValue() * par1));
this.mc.mcProfiler.endStartSection("center");
for (int var13 = 0; var13 < 2; ++var13)

@ -1,26 +1,39 @@
package net.minecraft.src;
import java.math.BigDecimal;
import static java.math.BigDecimal.valueOf;
import static net.minecraft.src.MathHelper.normalize;
public class Frustrum implements ICamera
{
public static final boolean DISABLE_FRUSTRUM = Boolean.getBoolean("net.minecraft.src.DISABLE_FRUSTRUM");
private ClippingHelper clippingHelper = ClippingHelperImpl.getInstance();
private double xPosition;
private BigDecimal xPosition;
private double yPosition;
private double zPosition;
private BigDecimal zPosition;
public void setPosition(double par1, double par3, double par5)
public void setPosition(BigDecimal par1, double par3, BigDecimal par5)
{
this.xPosition = par1;
this.yPosition = par3;
this.zPosition = par5;
}
/**
* Calls the clipping helper. Returns true if the box is inside all 6 clipping planes, otherwise returns false.
*/
public boolean isBoxInFrustum(double par1, double par3, double par5, double par7, double par9, double par11)
{
return DISABLE_FRUSTRUM || this.clippingHelper.isBoxInFrustum(par1 - this.xPosition, par3 - this.yPosition, par5 - this.zPosition, par7 - this.xPosition, par9 - this.yPosition, par11 - this.zPosition);
return isBoxInFrustum(valueOf(normalize(par1)), par3, valueOf(normalize(par5)), valueOf(normalize(par7)), par9, valueOf(normalize(par11)));
}
/**
* Calls the clipping helper. Returns true if the box is inside all 6 clipping planes, otherwise returns false.
*/
public boolean isBoxInFrustum(BigDecimal par1, double par3, BigDecimal par5, BigDecimal par7, double par9, BigDecimal par11)
{
return DISABLE_FRUSTRUM || this.clippingHelper.isBoxInFrustum(par1.subtract(this.xPosition).doubleValue(), par3 - this.yPosition, par5.subtract(this.zPosition).doubleValue(), par7.subtract(this.xPosition).doubleValue(), par9 - this.yPosition, par11.subtract(this.zPosition).doubleValue());
}
/**
@ -30,4 +43,8 @@ public class Frustrum implements ICamera
{
return DISABLE_FRUSTRUM || this.isBoxInFrustum(par1AxisAlignedBB.minX, par1AxisAlignedBB.minY, par1AxisAlignedBB.minZ, par1AxisAlignedBB.maxX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.maxZ);
}
public boolean isBoundingBoxInFrustum(BigDecimalAABB par1AxisAlignedBB)
{
return DISABLE_FRUSTRUM || this.isBoxInFrustum(par1AxisAlignedBB.minX, par1AxisAlignedBB.minY, par1AxisAlignedBB.minZ, par1AxisAlignedBB.maxX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.maxZ);
}
}

@ -1,11 +1,15 @@
package net.minecraft.src;
import java.math.BigDecimal;
public interface ICamera
{
/**
* Returns true if the bounding box is inside all 6 clipping planes, otherwise returns false.
*/
boolean isBoundingBoxInFrustum(AxisAlignedBB var1);
boolean isBoundingBoxInFrustum(BigDecimalAABB var1);
void setPosition(double var1, double var3, double var5);
void setPosition(BigDecimal var1, double var3, BigDecimal var5);
}

@ -595,9 +595,9 @@ public class RenderGlobal implements IWorldAccess
this.renderersSkippingRenderPass = 0;
}
double var33 = par1EntityLiving.lastTickPosX + (par1EntityLiving.posX - par1EntityLiving.lastTickPosX) * par3;
double var7 = par1EntityLiving.lastTickPosY + (par1EntityLiving.posY - par1EntityLiving.lastTickPosY) * par3;
double var9 = par1EntityLiving.lastTickPosZ + (par1EntityLiving.posZ - par1EntityLiving.lastTickPosZ) * par3;
BigDecimal var33 = par1EntityLiving.lastPosX == par1EntityLiving.posXBig ? par1EntityLiving.posXBig : par1EntityLiving.lastPosX.add(BigDecimal.valueOf((par1EntityLiving.posXBig.subtract(par1EntityLiving.lastPosX)).doubleValue() * par3));
double var7 = par1EntityLiving.lastTickPosY + (par1EntityLiving.posY - par1EntityLiving.lastTickPosY) * par3;
BigDecimal var9 = par1EntityLiving.lastPosZ == par1EntityLiving.posZBig ? par1EntityLiving.posZBig : par1EntityLiving.lastPosZ.add(BigDecimal.valueOf((par1EntityLiving.posZBig.subtract(par1EntityLiving.lastPosZ)).doubleValue() * par3));
double var11 = par1EntityLiving.posX - this.prevSortX;
double var13 = par1EntityLiving.posY - this.prevSortY;
double var15 = par1EntityLiving.posZ - this.prevSortZ;
@ -675,9 +675,9 @@ public class RenderGlobal implements IWorldAccess
if (this.cloudOffsetX % var25 == var23 % var25)
{
WorldRenderer var26 = this.sortedWorldRenderers[var23];
float var27 = (float)((double)var26.posXMinus.doubleValue() - var33);
float var27 = (float)((double)MathHelper.toBigDecimal(var26.posXMinus).subtract(var33).doubleValue());
float var28 = (float)((double)var26.posYMinus - var7);
float var29 = (float)((double)var26.posZMinus.doubleValue() - var9);
float var29 = (float)((double)MathHelper.toBigDecimal(var26.posZMinus).subtract(var9).doubleValue());
float var30 = var27 - var36;
float var31 = var28 - var21;
float var32 = var29 - var22;
@ -804,9 +804,9 @@ public class RenderGlobal implements IWorldAccess
}
EntityPlayer var19 = (EntityPlayer) this.mc.renderViewEntity;
// double var20 = var19.lastTickPosX + (var19.posX - var19.lastTickPosX) * par4;
// double var10 = var19.lastTickPosY + (var19.posY - var19.lastTickPosY) * par4;
// double var12 = var19.lastTickPosZ + (var19.posZ - var19.lastTickPosZ) * par4;
BigDecimal var20 = var19.lastPosX == var19.posXBig ? var19.posXBig : var19.lastPosX.add(BigDecimal.valueOf((var19.posXBig.subtract(var19.lastPosX)).doubleValue() * par4));
double var10 = var19.lastTickPosY + (var19.posY - var19.lastTickPosY) * par4;
BigDecimal var12 = var19.lastPosZ == var19.posZBig ? var19.posZBig : var19.lastPosZ.add(BigDecimal.valueOf((var19.posZBig.subtract(var19.lastPosZ)).doubleValue() * par4));
int var14 = 0;
RenderList[] var15 = this.allRenderLists;
int var16 = var15.length;
@ -836,7 +836,7 @@ public class RenderGlobal implements IWorldAccess
if (var17 < 0)
{
var17 = var14++;
this.allRenderLists[var17].func_78422_a(var22.posXMinus, var22.posYMinus, var22.posZMinus, var19.posXBig == null ? BigDecimal.ZERO : var19.posXBig, var19.posY, var19.posZBig == null ? BigDecimal.ZERO : var19.posZBig);
this.allRenderLists[var17].func_78422_a(var22.posXMinus, var22.posYMinus, var22.posZMinus, var20, var10, var12);
}
}

@ -1,6 +1,8 @@
package net.minecraft.src;
import org.mcmodule.math.BigInteger;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@ -52,7 +54,7 @@ public class WorldRenderer
public boolean needsUpdate;
/** Axis aligned bounding box */
public AxisAlignedBB rendererBoundingBox;
public BigDecimalAABB rendererBoundingBox;
/** Chunk index */
public int chunkIndex;
@ -107,7 +109,8 @@ public class WorldRenderer
this.posYMinus = par2 - this.posYClip;
this.posZMinus = par3.subtract(BigInteger.valueOf(posZClip));
float var4 = 6.0F;
this.rendererBoundingBox = AxisAlignedBB.getBoundingBox((double)((float)par1.floatValue() - var4), (double)((float)par2 - var4), (double)((float)par3.floatValue() - var4), (double)((float)(par1.add(BigInteger.valueOf(16)).floatValue()) + var4), (double)((float)(par2 + 16) + var4), (double)((float)(par3.add(BigInteger.valueOf(16)).floatValue()) + var4));
BigDecimal offset = BigDecimal.valueOf(var4);
this.rendererBoundingBox = new BigDecimalAABB(MathHelper.toBigDecimal(par1).subtract(offset), (double)((float)par2 - var4), MathHelper.toBigDecimal(par3).subtract(offset), MathHelper.toBigDecimal(par1.add(BigInteger.valueOf(16))).add(offset), (double)((float)(par2 + 16) + var4), MathHelper.toBigDecimal(par3.add(BigInteger.valueOf(16))).add(offset));
GL11.glNewList(this.glRenderList + 2, GL11.GL_COMPILE);
RenderItem.renderAABB(AxisAlignedBB.getAABBPool().addOrModifyAABBInPool((double)((float)this.posXClip - var4), (double)((float)this.posYClip - var4), (double)((float)this.posZClip - var4), (double)((float)(this.posXClip + 16) + var4), (double)((float)(this.posYClip + 16) + var4), (double)((float)(this.posZClip + 16) + var4)));
GL11.glEndList();

Loading…
Cancel
Save