From bda94ce5223d9ce9bbc762fde08165cd5516948f Mon Sep 17 00:00:00 2001 From: LexManos Date: Sat, 14 Apr 2012 13:07:01 -0700 Subject: [PATCH] Added variable entity radius to World, to be used if a mod make really large entities. --- .../net/minecraft/src/World.java.patch | 86 +++++++++++++++---- .../net/minecraft/src/World.java.patch | 82 ++++++++++++++---- 2 files changed, 132 insertions(+), 36 deletions(-) diff --git a/forge/patches/minecraft/net/minecraft/src/World.java.patch b/forge/patches/minecraft/net/minecraft/src/World.java.patch index 8cb017863..b951a0799 100644 --- a/forge/patches/minecraft/net/minecraft/src/World.java.patch +++ b/forge/patches/minecraft/net/minecraft/src/World.java.patch @@ -1,6 +1,6 @@ --- ../src_base/minecraft/net/minecraft/src/World.java 0000-00-00 00:00:00.000000000 -0000 +++ ../src_work/minecraft/net/minecraft/src/World.java 0000-00-00 00:00:00.000000000 -0000 -@@ -9,6 +9,8 @@ +@@ -9,8 +9,17 @@ import java.util.Set; import java.util.TreeSet; @@ -8,8 +8,17 @@ + public class World implements IBlockAccess { ++ /** ++ * Used in the getEntitiesWithinAABB functions to expand the search area for entities. ++ * Modders should change this variable to a higher value if it is less then the radius ++ * of one of there entities. ++ */ ++ public static double MAX_ENTITY_RADIUS = 2.0D; ++ /** -@@ -79,7 +81,7 @@ + * boolean; if true updates scheduled by scheduleBlockUpdate happen immediately + */ +@@ -79,7 +88,7 @@ * Contains a timestamp from when the World object was created. Is used in the session.lock file */ private long lockTimestamp; @@ -18,7 +27,7 @@ /** Option > Difficulty setting (0 - 3) */ public int difficultySetting; -@@ -214,6 +216,7 @@ +@@ -214,6 +223,7 @@ this.chunkProvider = this.createChunkProvider(); this.calculateInitialSkylight(); this.calculateInitialWeather(); @@ -26,7 +35,7 @@ } public World(World par1World, WorldProvider par2WorldProvider) -@@ -259,6 +262,7 @@ +@@ -259,6 +269,7 @@ this.chunkProvider = this.createChunkProvider(); this.calculateInitialSkylight(); this.calculateInitialWeather(); @@ -34,7 +43,7 @@ } public World(ISaveHandler par1ISaveHandler, String par2Str, WorldSettings par3WorldSettings) -@@ -340,6 +344,7 @@ +@@ -340,6 +351,7 @@ this.calculateInitialSkylight(); this.calculateInitialWeather(); @@ -42,7 +51,7 @@ } /** -@@ -507,6 +512,7 @@ +@@ -507,6 +519,7 @@ } this.chunkProvider.saveChunks(par1, par2IProgressUpdate); @@ -50,7 +59,7 @@ } } -@@ -559,7 +565,8 @@ +@@ -559,7 +572,8 @@ */ public boolean isAirBlock(int par1, int par2, int par3) { @@ -60,7 +69,7 @@ } /** -@@ -2067,7 +2074,7 @@ +@@ -2067,7 +2081,7 @@ if (var7 != null) { @@ -69,7 +78,7 @@ } } } -@@ -2097,18 +2104,18 @@ +@@ -2097,18 +2111,18 @@ { this.loadedTileEntityList.add(var8); } @@ -92,7 +101,7 @@ } } -@@ -2121,13 +2128,13 @@ +@@ -2121,13 +2135,13 @@ public void addTileEntity(Collection par1Collection) { @@ -112,7 +121,7 @@ } } -@@ -2149,7 +2156,7 @@ +@@ -2149,7 +2163,7 @@ int var4 = MathHelper.floor_double(par1Entity.posZ); byte var5 = 32; @@ -121,7 +130,7 @@ { par1Entity.lastTickPosX = par1Entity.posX; par1Entity.lastTickPosY = par1Entity.posY; -@@ -2326,7 +2333,14 @@ +@@ -2326,7 +2340,14 @@ if (var11 == Block.fire.blockID || var11 == Block.lavaMoving.blockID || var11 == Block.lavaStill.blockID) { return true; @@ -137,7 +146,7 @@ } } } -@@ -2630,25 +2644,19 @@ +@@ -2630,25 +2651,19 @@ */ public void setBlockTileEntity(int par1, int par2, int par3, TileEntity par4TileEntity) { @@ -175,7 +184,7 @@ } } -@@ -2657,27 +2665,10 @@ +@@ -2657,27 +2672,10 @@ */ public void removeBlockTileEntity(int par1, int par2, int par3) { @@ -206,7 +215,7 @@ } } -@@ -2703,7 +2694,8 @@ +@@ -2703,7 +2701,8 @@ */ public boolean isBlockNormalCube(int par1, int par2, int par3) { @@ -216,7 +225,16 @@ } /** -@@ -2984,6 +2976,7 @@ +@@ -2719,7 +2718,7 @@ + if (var5 != null && !var5.isEmpty()) + { + Block var6 = Block.blocksList[this.getBlockId(par1, par2, par3)]; +- return var6 == null ? false : var6.blockMaterial.isOpaque() && var6.renderAsNormalBlock(); ++ return var6 == null ? false : isBlockNormalCube(par1, par2, par3); + } + else + { +@@ -2984,6 +2983,7 @@ } } } @@ -224,7 +242,7 @@ Profiler.endSection(); -@@ -3307,7 +3300,7 @@ +@@ -3307,7 +3307,7 @@ private int computeBlockLightValue(int par1, int par2, int par3, int par4, int par5, int par6) { @@ -233,7 +251,37 @@ int var8 = this.getSavedLightValue(EnumSkyBlock.Block, par2 - 1, par3, par4) - par6; int var9 = this.getSavedLightValue(EnumSkyBlock.Block, par2 + 1, par3, par4) - par6; int var10 = this.getSavedLightValue(EnumSkyBlock.Block, par2, par3 - 1, par4) - par6; -@@ -3839,7 +3832,10 @@ +@@ -3667,10 +3667,10 @@ + public List getEntitiesWithinAABBExcludingEntity(Entity par1Entity, AxisAlignedBB par2AxisAlignedBB) + { + this.entitiesWithinAABBExcludingEntity.clear(); +- int var3 = MathHelper.floor_double((par2AxisAlignedBB.minX - 2.0D) / 16.0D); +- int var4 = MathHelper.floor_double((par2AxisAlignedBB.maxX + 2.0D) / 16.0D); +- int var5 = MathHelper.floor_double((par2AxisAlignedBB.minZ - 2.0D) / 16.0D); +- int var6 = MathHelper.floor_double((par2AxisAlignedBB.maxZ + 2.0D) / 16.0D); ++ int var3 = MathHelper.floor_double((par2AxisAlignedBB.minX - MAX_ENTITY_RADIUS) / 16.0D); ++ int var4 = MathHelper.floor_double((par2AxisAlignedBB.maxX + MAX_ENTITY_RADIUS) / 16.0D); ++ int var5 = MathHelper.floor_double((par2AxisAlignedBB.minZ - MAX_ENTITY_RADIUS) / 16.0D); ++ int var6 = MathHelper.floor_double((par2AxisAlignedBB.maxZ + MAX_ENTITY_RADIUS) / 16.0D); + + for (int var7 = var3; var7 <= var4; ++var7) + { +@@ -3691,10 +3691,10 @@ + */ + public List getEntitiesWithinAABB(Class par1Class, AxisAlignedBB par2AxisAlignedBB) + { +- int var3 = MathHelper.floor_double((par2AxisAlignedBB.minX - 2.0D) / 16.0D); +- int var4 = MathHelper.floor_double((par2AxisAlignedBB.maxX + 2.0D) / 16.0D); +- int var5 = MathHelper.floor_double((par2AxisAlignedBB.minZ - 2.0D) / 16.0D); +- int var6 = MathHelper.floor_double((par2AxisAlignedBB.maxZ + 2.0D) / 16.0D); ++ int var3 = MathHelper.floor_double((par2AxisAlignedBB.minX - MAX_ENTITY_RADIUS) / 16.0D); ++ int var4 = MathHelper.floor_double((par2AxisAlignedBB.maxX + MAX_ENTITY_RADIUS) / 16.0D); ++ int var5 = MathHelper.floor_double((par2AxisAlignedBB.minZ - MAX_ENTITY_RADIUS) / 16.0D); ++ int var6 = MathHelper.floor_double((par2AxisAlignedBB.maxZ + MAX_ENTITY_RADIUS) / 16.0D); + ArrayList var7 = new ArrayList(); + + for (int var8 = var3; var8 <= var4; ++var8) +@@ -3839,7 +3839,10 @@ { var8 = null; } @@ -245,7 +293,7 @@ return par1 > 0 && var8 == null && var9.canPlaceBlockOnSide(this, par2, par3, par4, par6); } } -@@ -4443,4 +4439,39 @@ +@@ -4443,4 +4446,39 @@ { return this.worldInfo.getTerrainType() == WorldType.FLAT ? 0.0D : 63.0D; } diff --git a/forge/patches/minecraft_server/net/minecraft/src/World.java.patch b/forge/patches/minecraft_server/net/minecraft/src/World.java.patch index e9ad142ac..31930bc59 100644 --- a/forge/patches/minecraft_server/net/minecraft/src/World.java.patch +++ b/forge/patches/minecraft_server/net/minecraft/src/World.java.patch @@ -1,6 +1,6 @@ --- ../src_base/minecraft_server/net/minecraft/src/World.java 0000-00-00 00:00:00.000000000 -0000 +++ ../src_work/minecraft_server/net/minecraft/src/World.java 0000-00-00 00:00:00.000000000 -0000 -@@ -9,6 +9,8 @@ +@@ -9,8 +9,17 @@ import java.util.Set; import java.util.TreeSet; @@ -8,8 +8,17 @@ + public class World implements IBlockAccess { ++ /** ++ * Used in the getEntitiesWithinAABB functions to expand the search area for entities. ++ * Modders should change this variable to a higher value if it is less then the radius ++ * of one of there entities. ++ */ ++ public static double MAX_ENTITY_RADIUS = 2.0D; ++ /** -@@ -79,7 +81,7 @@ + * boolean; if true updates scheduled by scheduleBlockUpdate happen immediately + */ +@@ -79,7 +88,7 @@ * Contains a timestamp from when the World object was created. Is used in the session.lock file */ private long lockTimestamp = System.currentTimeMillis(); @@ -18,7 +27,7 @@ /** Whether monsters are enabled or not. (1 = on, 0 = off) */ public int difficultySetting; -@@ -219,6 +221,7 @@ +@@ -219,6 +228,7 @@ this.calculateInitialSkylight(); this.calculateInitialWeather(); @@ -26,7 +35,7 @@ } /** -@@ -323,6 +326,7 @@ +@@ -323,6 +333,7 @@ } this.chunkProvider.saveChunks(par1, par2IProgressUpdate); @@ -34,7 +43,7 @@ } } -@@ -354,7 +358,8 @@ +@@ -354,7 +365,8 @@ */ public boolean isAirBlock(int par1, int par2, int par3) { @@ -44,7 +53,7 @@ } public boolean func_48084_h(int par1, int par2, int par3) -@@ -1600,7 +1605,7 @@ +@@ -1600,7 +1612,7 @@ if (var7 != null) { @@ -53,7 +62,7 @@ } } } -@@ -1630,14 +1635,16 @@ +@@ -1630,14 +1642,16 @@ { this.loadedTileEntityList.add(var8); } @@ -72,7 +81,7 @@ } } -@@ -1654,13 +1661,13 @@ +@@ -1654,13 +1668,13 @@ public void addTileEntity(Collection par1Collection) { @@ -92,7 +101,7 @@ } } -@@ -1682,7 +1689,7 @@ +@@ -1682,7 +1696,7 @@ int var4 = MathHelper.floor_double(par1Entity.posZ); byte var5 = 32; @@ -101,7 +110,7 @@ { par1Entity.lastTickPosX = par1Entity.posX; par1Entity.lastTickPosY = par1Entity.posY; -@@ -1905,6 +1912,13 @@ +@@ -1905,6 +1919,13 @@ if (var11 == Block.fire.blockID || var11 == Block.lavaMoving.blockID || var11 == Block.lavaStill.blockID) { return true; @@ -115,7 +124,7 @@ } } } -@@ -2188,25 +2202,21 @@ +@@ -2188,25 +2209,21 @@ */ public void setBlockTileEntity(int par1, int par2, int par3, TileEntity par4TileEntity) { @@ -154,7 +163,7 @@ } } -@@ -2215,27 +2225,10 @@ +@@ -2215,27 +2232,10 @@ */ public void removeBlockTileEntity(int par1, int par2, int par3) { @@ -185,7 +194,7 @@ } } -@@ -2261,7 +2254,8 @@ +@@ -2261,7 +2261,8 @@ */ public boolean isBlockNormalCube(int par1, int par2, int par3) { @@ -195,7 +204,16 @@ } /** -@@ -2536,6 +2530,7 @@ +@@ -2277,7 +2278,7 @@ + if (var5 != null && !var5.isEmpty()) + { + Block var6 = Block.blocksList[this.getBlockId(par1, par2, par3)]; +- return var6 == null ? false : var6.blockMaterial.isOpaque() && var6.renderAsNormalBlock(); ++ return var6 == null ? false : isBlockNormalCube(par1, par2, par3); + } + else + { +@@ -2536,6 +2537,7 @@ } } } @@ -203,7 +221,7 @@ Profiler.endSection(); -@@ -2859,7 +2854,7 @@ +@@ -2859,7 +2861,7 @@ private int computeBlockLightValue(int par1, int par2, int par3, int par4, int par5, int par6) { @@ -212,7 +230,37 @@ int var8 = this.getSavedLightValue(EnumSkyBlock.Block, par2 - 1, par3, par4) - par6; int var9 = this.getSavedLightValue(EnumSkyBlock.Block, par2 + 1, par3, par4) - par6; int var10 = this.getSavedLightValue(EnumSkyBlock.Block, par2, par3 - 1, par4) - par6; -@@ -3345,6 +3340,11 @@ +@@ -3192,10 +3194,10 @@ + public List getEntitiesWithinAABBExcludingEntity(Entity par1Entity, AxisAlignedBB par2AxisAlignedBB) + { + this.entitiesWithinAABBExcludingEntity.clear(); +- int var3 = MathHelper.floor_double((par2AxisAlignedBB.minX - 2.0D) / 16.0D); +- int var4 = MathHelper.floor_double((par2AxisAlignedBB.maxX + 2.0D) / 16.0D); +- int var5 = MathHelper.floor_double((par2AxisAlignedBB.minZ - 2.0D) / 16.0D); +- int var6 = MathHelper.floor_double((par2AxisAlignedBB.maxZ + 2.0D) / 16.0D); ++ int var3 = MathHelper.floor_double((par2AxisAlignedBB.minX - MAX_ENTITY_RADIUS) / 16.0D); ++ int var4 = MathHelper.floor_double((par2AxisAlignedBB.maxX + MAX_ENTITY_RADIUS) / 16.0D); ++ int var5 = MathHelper.floor_double((par2AxisAlignedBB.minZ - MAX_ENTITY_RADIUS) / 16.0D); ++ int var6 = MathHelper.floor_double((par2AxisAlignedBB.maxZ + MAX_ENTITY_RADIUS) / 16.0D); + + for (int var7 = var3; var7 <= var4; ++var7) + { +@@ -3216,10 +3218,10 @@ + */ + public List getEntitiesWithinAABB(Class par1Class, AxisAlignedBB par2AxisAlignedBB) + { +- int var3 = MathHelper.floor_double((par2AxisAlignedBB.minX - 2.0D) / 16.0D); +- int var4 = MathHelper.floor_double((par2AxisAlignedBB.maxX + 2.0D) / 16.0D); +- int var5 = MathHelper.floor_double((par2AxisAlignedBB.minZ - 2.0D) / 16.0D); +- int var6 = MathHelper.floor_double((par2AxisAlignedBB.maxZ + 2.0D) / 16.0D); ++ int var3 = MathHelper.floor_double((par2AxisAlignedBB.minX - MAX_ENTITY_RADIUS) / 16.0D); ++ int var4 = MathHelper.floor_double((par2AxisAlignedBB.maxX + MAX_ENTITY_RADIUS) / 16.0D); ++ int var5 = MathHelper.floor_double((par2AxisAlignedBB.minZ - MAX_ENTITY_RADIUS) / 16.0D); ++ int var6 = MathHelper.floor_double((par2AxisAlignedBB.maxZ + MAX_ENTITY_RADIUS) / 16.0D); + ArrayList var7 = new ArrayList(); + + for (int var8 = var3; var8 <= var4; ++var8) +@@ -3345,6 +3347,11 @@ { var8 = null; } @@ -224,7 +272,7 @@ return par1 > 0 && var8 == null && var9.canPlaceBlockOnSide(this, par2, par3, par4, par6); } -@@ -3855,4 +3855,38 @@ +@@ -3855,4 +3862,38 @@ { return this.getChunkProvider().findClosestStructure(this, par1Str, par2, par3, par4); }