elfprince13 wrote:
Yeah, I'll see about packaging it up for you Smile
Thanks! Should be interesting to see how it works out.
KermMartian wrote:
DShiznit: I'm working on it, but I need to break the 256-block height limit first.
*bump* In order to get the Chrysler Building (and other tall buildings and terrain) to work properly, I need chunks taller than 256 blocks. I am currently investigating how it can be done. Details of my attempts and questions on how to resolve the issues I have encountered:

https://github.com/mcedit/pymclevel/issues/78
http://www.minecraftforum.net/topic/1776866-prevent-chunk-re-gen-on-tall-chunks/

Namely:
Since the Anvil format allows chunks (worlds?) of arbitrary height, I'm using pymclevel to create worlds/chunks taller than 256 blocks. I tried opening a level using pymclevel, setting the level.Height, and then opening chunks and setting chunk contents within the larger height. Unfortunately, when I load the resulting world with some 512-block-tall chunks in the game, the chunks with pieces above y=255 get regenerated. The chunks that only contained blocks below the Y=256 mark (due to how Anvil chunks are stored in 16x16x16 pieces) were not regenerated. Is there a level/world tag that can be set to prevent the vanilla client from forcing those tall chunks to be regenerated?

I'm creating a KMZ/Collada-to-Minecraft voxelizer, producing structures like this; I eventually want to generate New York City in Minecraft:

Again, just turn the building and your monitor on its side Wink
The Statue of Liberty would also be an interesting test of your system, and would fit within your height limit...
AHelper wrote:
Again, just turn the building and your monitor on its side Wink
Of course Razz

DShiznit: Indeed, that's a good idea. I also notice that on certain shallow slopes there is a bit of an error from the raycaster; I need to tweak that.
*bump* Still no response from anyone in either of those threads. Sad Does anyone know of a decent place to find halfway intelligent MC devs to speak with?
You might try contacting Mojang directly. It's a long shot but if you show them what you've done already, it might peak their interest enough to at least answer your questions. Twitter seems to be their preferred method of communicating with fans, so I'd ask the question there to one or more of their devs.
(wink bump the chicken bug fix I posted wink)

Wink
DShiznit wrote:
You might try contacting Mojang directly. It's a long shot but if you show them what you've done already, it might peak their interest enough to at least answer your questions. Twitter seems to be their preferred method of communicating with fans, so I'd ask the question there to one or more of their devs.
That's actually a great idea; I have done so:

https://twitter.com/kermmartian/status/326758243412086786
you added an extra c in "cemetec.ch" by mistake. Dunno if you can fix that now...
DShiznit wrote:
you added an extra c in "cemetec.ch" by mistake. Dunno if you can fix that now...
Thanks for catching that. I deleted and re-created the tweet.
Now your twitter link is borked...
AHelper wrote:
Now your twitter link is borked...
I don't know what you're talking about. Wink
KermMartian wrote:
AHelper wrote:
Now your twitter link is borked...
I don't know what you're talking about. Wink


I saw what you did there Shock
KermMartian wrote:
DShiznit wrote:
You might try contacting Mojang directly. It's a long shot but if you show them what you've done already, it might peak their interest enough to at least answer your questions. Twitter seems to be their preferred method of communicating with fans, so I'd ask the question there to one or more of their devs.
That's actually a great idea; I have done so:

https://twitter.com/kermmartian/status/326758243412086786
Do you think I should bump my tweet at some point, in case he missed it?
I retweeted it to try and up its "ranking".
elfprince13 wrote:
I retweeted it to try and up its "ranking".
I noticed that. Smile I was worried that perhaps it was too far down his feed, though, and he never saw it. I'm not sure what the criteria for people to see @ tweets are, to be honest, especially when they have a lot of followers.
KermMartian wrote:
elfprince13 wrote:
I retweeted it to try and up its "ranking".
I noticed that. Smile I was worried that perhaps it was too far down his feed, though, and he never saw it. I'm not sure what the criteria for people to see @ tweets are, to be honest, especially when they have a lot of followers.


I believe every retweet is entered into his feed individually, so each one is another chance for him to see it.
Since I got no response from Jeb, I used MCP to decompile Minecraft 1.5.2, and discovered the following places where I need to fix hard-coded height limits. The starred ones are particularly vital, but they're all important to fix. I want to make the scripts use the level data-specified level height if one exists, or the default if none exists. (Edit: This list is not comprehensive; see the patchset below).
Code:
src/World.java line 297, 357, 373, 436, 503, 533, 937, 1040, 2619, 3092, 3150
**4094!!** **4102!!**
WorldClient.java line **140**
src/World.java lines 856-858, 788-790, 1004-1006
src/BlockLilyPad.java line 81
BlockMushroom.java line 97
Chunk.java line 1206-1208
ChunkCache.java line 72, 198, 231, 315, 320, 385, 390, 407
DedicatedServer.java lines 153-155
EntityFallingSand.java line 170
IntegratedServer.java line 29
Interesting note: hashCode() in NextTickListEntry.java line 53 permits yCoords up to 1023



Edit: I got it to work! I can stand on the spire of the Chrysler Building at y=384 meters. The required changes are unfortunately quite extensive, as documented below. I'm particularly concerned that I need to change packet type 52 to use long-type chunk piece masks instead of ints, though. I need to think of a way to accept both "standard" and "tall map"-style chunk messages (perhaps even a new message type?).

Code:
diff -r old/minecraft/net/minecraft/server/MinecraftServer.java new/minecraft/net/minecraft/server/MinecraftServer.java
214c214
<             var8 = new WorldSettings(par3, this.getGameType(), this.canStructuresSpawn(), this.isHardcore(), par5WorldType);
---
>             var8 = new WorldSettings(par3, this.getGameType(), this.canStructuresSpawn(), this.isHardcore(), par5WorldType, 256);
diff -r old/minecraft/net/minecraft/src/AnvilChunkLoader.java new/minecraft/net/minecraft/src/AnvilChunkLoader.java
325c325
<         byte var7 = 16;
---
>         byte var7 = (byte)(par1World.getHeight()>>4);   // Max number of chunks pieces
diff -r old/minecraft/net/minecraft/src/BlockLilyPad.java new/minecraft/net/minecraft/src/BlockLilyPad.java
81c81
<         return par3 >= 0 && par3 < 256 ? par1World.getBlockMaterial(par2, par3 - 1, par4) == Material.water && par1World.getBlockMetadata(par2, par3 - 1, par4) == 0 : false;
---
>         return par3 >= 0 && par3 < par1World.getHeight() ? par1World.getBlockMaterial(par2, par3 - 1, par4) == Material.water && par1World.getBlockMetadata(par2, par3 - 1, par4) == 0 : false;
diff -r old/minecraft/net/minecraft/src/BlockMushroom.java new/minecraft/net/minecraft/src/BlockMushroom.java
97c97
<         if (par3 >= 0 && par3 < 256)
---
>         if (par3 >= 0 && par3 < par1World.getHeight())
diff -r old/minecraft/net/minecraft/src/ChunkCache.java new/minecraft/net/minecraft/src/ChunkCache.java
6a7
>     private int worldHeight;
23a25
>         this.worldHeight = this.worldObj.getHeight();
72c74
<         else if (par2 >= 256)
---
>         else if (par2 >= this.worldHeight)
198c200
<             else if (par2 >= 256)
---
>             else if (par2 >= this.worldHeight)
231c233
<         else if (par2 >= 256)
---
>         else if (par2 >= this.worldHeight)
315c317
<         if (par3 >= 256)
---
>         if (par3 >= this.worldHeight)
317c319
<             par3 = 255;
---
>             par3 = this.worldHeight-1;
320c322
<         if (par3 >= 0 && par3 < 256 && par2 >= -30000000 && par4 >= -30000000 && par2 < 30000000 && par4 <= 30000000)
---
>         if (par3 >= 0 && par3 < this.worldHeight && par2 >= -30000000 && par4 >= -30000000 && par2 < 30000000 && par4 <= 30000000)
385c387
<         if (par3 >= 256)
---
>         if (par3 >= this.worldHeight)
387c389
<             par3 = 255;
---
>             par3 = this.worldHeight-1;
390c392
<         if (par3 >= 0 && par3 < 256 && par2 >= -30000000 && par4 >= -30000000 && par2 < 30000000 && par4 <= 30000000)
---
>         if (par3 >= 0 && par3 < this.worldHeight && par2 >= -30000000 && par4 >= -30000000 && par2 < 30000000 && par4 <= 30000000)
407c409
<         return 256;
---
>         return this.worldHeight;
diff -r old/minecraft/net/minecraft/src/Chunk.java new/minecraft/net/minecraft/src/Chunk.java
92c92
<         this.storageArrays = new ExtendedBlockStorage[16];
---
>         this.storageArrays = new ExtendedBlockStorage[par1World.getHeight() >> 4];
1206c1206
<         if (par2 >= 256)
---
>         if (par2 >= this.worldObj.getHeight())
1208c1208
<             par2 = 255;
---
>             par2 = this.worldObj.getHeight()-1;
1232c1232
<     public void fillChunk(byte[] par1ArrayOfByte, int par2, int par3, boolean par4)
---
>     public void fillChunk(byte[] par1ArrayOfByte, long par2, long par3, boolean par4)
diff -r old/minecraft/net/minecraft/src/DedicatedServer.java new/minecraft/net/minecraft/src/DedicatedServer.java
153a154
>         /* Note: this gets ignored/overridden by worldInfo.getHeight() */
diff -r old/minecraft/net/minecraft/src/DemoWorldServer.java new/minecraft/net/minecraft/src/DemoWorldServer.java
8c8
<     public static final WorldSettings demoWorldSettings = (new WorldSettings(demoWorldSeed, EnumGameType.SURVIVAL, true, false, WorldType.DEFAULT)).enableBonusChest();
---
>     public static final WorldSettings demoWorldSettings = (new WorldSettings(demoWorldSeed, EnumGameType.SURVIVAL, true, false, WorldType.DEFAULT, 256)).enableBonusChest();
diff -r old/minecraft/net/minecraft/src/EntityFallingSand.java new/minecraft/net/minecraft/src/EntityFallingSand.java
170c170
<                 else if (this.fallTime > 100 && !this.worldObj.isRemote && (var2 < 1 || var2 > 256) || this.fallTime > 600)
---
>                 else if (this.fallTime > 100 && !this.worldObj.isRemote && (var2 < 1 || var2 > this.worldObj.getHeight()) || this.fallTime > 600)
diff -r old/minecraft/net/minecraft/src/EntityPlayerMP.java new/minecraft/net/minecraft/src/EntityPlayerMP.java
205c205
<                     var8.addAll(((WorldServer)this.worldObj).getAllTileEntityInBox(var9.chunkXPos * 16, 0, var9.chunkZPos * 16, var9.chunkXPos * 16 + 16, 256, var9.chunkZPos * 16 + 16));
---
>                     var8.addAll(((WorldServer)this.worldObj).getAllTileEntityInBox(var9.chunkXPos * 16, 0, var9.chunkZPos * 16, var9.chunkXPos * 16 + 16, this.worldObj.getHeight(), var9.chunkZPos * 16 + 16));
diff -r old/minecraft/net/minecraft/src/GuiCreateWorld.java new/minecraft/net/minecraft/src/GuiCreateWorld.java
260c260
<                 WorldSettings var6 = new WorldSettings(var2, var8, this.generateStructures, this.isHardcore, WorldType.worldTypes[this.worldTypeId]);
---
>                 WorldSettings var6 = new WorldSettings(var2, var8, this.generateStructures, this.isHardcore, WorldType.worldTypes[this.worldTypeId], 256);
diff -r old/minecraft/net/minecraft/src/IntegratedServer.java new/minecraft/net/minecraft/src/IntegratedServer.java
29d28
<         this.setBuildLimit(256);
32a32
>         this.setBuildLimit(1024);
diff -r old/minecraft/net/minecraft/src/NetClientHandler.java new/minecraft/net/minecraft/src/NetClientHandler.java
166c166
<         this.worldClient = new WorldClient(this, new WorldSettings(0L, par1Packet1Login.gameType, false, par1Packet1Login.hardcoreMode, par1Packet1Login.terrainType), par1Packet1Login.dimension, par1Packet1Login.difficultySetting, this.mc.mcProfiler, this.mc.getLogAgent());
---
>         this.worldClient = new WorldClient(this, new WorldSettings(0L, par1Packet1Login.gameType, false, par1Packet1Login.hardcoreMode, par1Packet1Login.terrainType, par1Packet1Login.worldHeight), par1Packet1Login.dimension, par1Packet1Login.difficultySetting, this.mc.mcProfiler, this.mc.getLogAgent());
574c574
<         this.worldClient.invalidateBlockReceiveRegion(par1Packet51MapChunk.xCh << 4, 0, par1Packet51MapChunk.zCh << 4, (par1Packet51MapChunk.xCh << 4) + 15, 256, (par1Packet51MapChunk.zCh << 4) + 15);
---
>         this.worldClient.invalidateBlockReceiveRegion(par1Packet51MapChunk.xCh << 4, 0, par1Packet51MapChunk.zCh << 4, (par1Packet51MapChunk.xCh << 4) + 15, this.worldClient.getHeight(), (par1Packet51MapChunk.zCh << 4) + 15);
586c586
<             this.worldClient.markBlockRangeForRenderUpdate(par1Packet51MapChunk.xCh << 4, 0, par1Packet51MapChunk.zCh << 4, (par1Packet51MapChunk.xCh << 4) + 15, 256, (par1Packet51MapChunk.zCh << 4) + 15);
---
>             this.worldClient.markBlockRangeForRenderUpdate(par1Packet51MapChunk.xCh << 4, 0, par1Packet51MapChunk.zCh << 4, (par1Packet51MapChunk.xCh << 4) + 15, this.worldClient.getHeight(), (par1Packet51MapChunk.zCh << 4) + 15);
871c871
<             this.worldClient = new WorldClient(this, new WorldSettings(0L, par1Packet9Respawn.gameType, false, this.mc.theWorld.getWorldInfo().isHardcoreModeEnabled(), par1Packet9Respawn.terrainType), par1Packet9Respawn.respawnDimension, par1Packet9Respawn.difficulty, this.mc.mcProfiler, this.mc.getLogAgent());
---
>             this.worldClient = new WorldClient(this, new WorldSettings(0L, par1Packet9Respawn.gameType, false, this.mc.theWorld.getWorldInfo().isHardcoreModeEnabled(), par1Packet9Respawn.terrainType, this.mc.theWorld.getHeight()), par1Packet9Respawn.respawnDimension, par1Packet9Respawn.difficulty, this.mc.mcProfiler, this.mc.getLogAgent());
1173c1173
<             this.worldClient.invalidateBlockReceiveRegion(var3 << 4, 0, var4 << 4, (var3 << 4) + 15, 256, (var4 << 4) + 15);
---
>             this.worldClient.invalidateBlockReceiveRegion(var3 << 4, 0, var4 << 4, (var3 << 4) + 15, this.worldClient.getHeight(), (var4 << 4) + 15);
1185c1185
<                 this.worldClient.markBlockRangeForRenderUpdate(var3 << 4, 0, var4 << 4, (var3 << 4) + 15, 256, (var4 << 4) + 15);
---
>                 this.worldClient.markBlockRangeForRenderUpdate(var3 << 4, 0, var4 << 4, (var3 << 4) + 15, this.worldClient.getHeight(), (var4 << 4) + 15);
diff -r old/minecraft/net/minecraft/src/NetServerHandler.java new/minecraft/net/minecraft/src/NetServerHandler.java
394c394
<                 if (var5 >= this.mcServer.getBuildLimit())
---
>                 if (var5 >= var2.getHeight())
440a441
>         int worldHeight = var2.worldInfo.getHeight();
451c452
<         else if (par1Packet15Place.getYPosition() >= this.mcServer.getBuildLimit() - 1 && (par1Packet15Place.getDirection() == 1 || par1Packet15Place.getYPosition() >= this.mcServer.getBuildLimit()))
---
>         else if (par1Packet15Place.getYPosition() >= worldHeight - 1 && (par1Packet15Place.getDirection() == 1 || par1Packet15Place.getYPosition() >= worldHeight))
453c454
<             this.playerEntity.playerNetServerHandler.sendPacketToPlayer(new Packet3Chat("" + EnumChatFormatting.GRAY + "Height limit for building is " + this.mcServer.getBuildLimit()));
---
>             this.playerEntity.playerNetServerHandler.sendPacketToPlayer(new Packet3Chat("" + EnumChatFormatting.GRAY + "Height limit for building is " + worldHeight));
diff -r old/minecraft/net/minecraft/src/Packet1Login.java new/minecraft/net/minecraft/src/Packet1Login.java
22c22
<     public byte worldHeight;
---
>     public int worldHeight;
36c36
<         this.worldHeight = (byte)par7;
---
>         this.worldHeight = (int)par7;
61c61
<         this.worldHeight = par1DataInputStream.readByte();
---
>         this.worldHeight = par1DataInputStream.readByte()<<4;
82c82
<         par1DataOutputStream.writeByte(this.worldHeight);
---
>         par1DataOutputStream.writeByte(this.worldHeight>>4);
diff -r old/minecraft/net/minecraft/src/Packet51MapChunkData.java new/minecraft/net/minecraft/src/Packet51MapChunkData.java
6,7c6,7
<     public int chunkExistFlag;
<     public int chunkHasAddSectionFlag;
---
>     public long chunkExistFlag;            // Longs to allow more than 32 chunk sections
>     public long chunkHasAddSectionFlag;
diff -r old/minecraft/net/minecraft/src/Packet51MapChunk.java new/minecraft/net/minecraft/src/Packet51MapChunk.java
21c21
<     public int yChMin;
---
>     public long yChMin;
26c26
<     public int yChMax;
---
>     public long yChMax;
43c43
<     private static byte[] temp = new byte[196864];
---
>     private static byte[] temp = new byte[196864*4];   //up to 1K-tall maps
50c50
<     public Packet51MapChunk(Chunk par1Chunk, boolean par2, int par3)
---
>     public Packet51MapChunk(Chunk par1Chunk, boolean par2, long par3)
161c161
<     public static Packet51MapChunkData getMapChunkData(Chunk par0Chunk, boolean par1, int par2)
---
>     public static Packet51MapChunkData getMapChunkData(Chunk par0Chunk, boolean par1, long par2)
diff -r old/minecraft/net/minecraft/src/Packet56MapChunks.java new/minecraft/net/minecraft/src/Packet56MapChunks.java
15,16c15,16
<     public int[] field_73590_a;
<     public int[] field_73588_b;
---
>     public long[] field_73590_a;
>     public long[] field_73588_b;
39,40c39,40
<         this.field_73590_a = new int[var2];
<         this.field_73588_b = new int[var2];
---
>         this.field_73590_a = new long[var2];
>         this.field_73588_b = new long[var2];
48c48
<             Packet51MapChunkData var6 = Packet51MapChunk.getMapChunkData(var5, true, 65535);
---
>             Packet51MapChunkData var6 = Packet51MapChunk.getMapChunkData(var5, true, -1L);   //2^64-1
91,92c91,92
<         this.field_73590_a = new int[var2];
<         this.field_73588_b = new int[var2];
---
>         this.field_73590_a = new long[var2];
>         this.field_73588_b = new long[var2];
124,125c124,125
<             this.field_73590_a[var6] = par1DataInputStream.readShort();
<             this.field_73588_b[var6] = par1DataInputStream.readShort();
---
>             this.field_73590_a[var6] = par1DataInputStream.readLong();
>             this.field_73588_b[var6] = par1DataInputStream.readLong();
164,165c164,165
<             par1DataOutputStream.writeShort((short)(this.field_73590_a[var2] & 65535));
<             par1DataOutputStream.writeShort((short)(this.field_73588_b[var2] & 65535));
---
>             par1DataOutputStream.writeLong((this.field_73590_a[var2] & (-1L)));
>             par1DataOutputStream.writeLong((this.field_73588_b[var2] & (-1L)));
diff -r old/minecraft/net/minecraft/src/PlayerInstance.java new/minecraft/net/minecraft/src/PlayerInstance.java
14c14
<     private int field_73260_f;
---
>     private long field_73260_f;
diff -r old/minecraft/net/minecraft/src/RConThreadClient.java new/minecraft/net/minecraft/src/RConThreadClient.java
58c58
<                 if (10 <= var2)
---
>                 if (10 > var2)
60,61c60,61
<                     byte var3 = 0;
<                     int var4 = RConUtils.getBytesAsLEInt(this.buffer, 0, var2);
---
>                     return;
>                 }
63,66c63,64
<                     if (var4 != var2 - 4)
<                     {
<                         return;
<                     }
---
>                 byte var3 = 0;
>                 int var4 = RConUtils.getBytesAsLEInt(this.buffer, 0, var2);
67a66,67
>                 if (var4 == var2 - 4)
>                 {
diff -r old/minecraft/net/minecraft/src/RenderGlobal.java new/minecraft/net/minecraft/src/RenderGlobal.java
308c308
<             int var1;
---
>             int var1, varChunkTall;
323a324,329
>             
>             varChunkTall = this.theWorld.getHeight();
>             if (varChunkTall > var1)
>             {
>                varChunkTall = var1;
>             }
326c332
<             this.renderChunksTall = 16;
---
>             this.renderChunksTall = var1 / 16 + 1;
diff -r old/minecraft/net/minecraft/src/WorldClient.java new/minecraft/net/minecraft/src/WorldClient.java
140c140
<             this.markBlockRangeForRenderUpdate(par1 * 16, 0, par2 * 16, par1 * 16 + 15, 256, par2 * 16 + 15);
---
>             this.markBlockRangeForRenderUpdate(par1 * 16, 0, par2 * 16, par1 * 16 + 15, this.getHeight(), par2 * 16 + 15);
diff -r old/minecraft/net/minecraft/src/WorldInfo.java new/minecraft/net/minecraft/src/WorldInfo.java
49a50,52
>     
>     /** Height of the map. */
>     private int worldHeight;
69a73
>         this.worldHeight = 256;
137a142,147
>         if (par1NBTTagCompound.hasKey("worldHeight"))
>         {
>             this.worldHeight = par1NBTTagCompound.getInteger("worldHeight");
>         } else {
>            this.worldHeight = 256;      /* Default value goes HERE for worldHeight */
>         }
184a195
>         this.worldHeight = par1WorldSettings.getHeight();
210a222
>         this.worldHeight = par1WorldInfo.worldHeight;
257a270
>         par1NBTTagCompound.setInteger("worldHeight", this.worldHeight);
446a460,475
>     }
>
>     /**
>      * Returns the height of the world, in voxels.
>      */
>     public int getHeight()
>     {
>         return this.worldHeight;
>     }
>
>     /**
>      * Defines the height of the world, in voxels.
>      */
>     public void setHeight(int par1)
>     {
>         this.worldHeight = par1;
diff -r old/minecraft/net/minecraft/src/World.java new/minecraft/net/minecraft/src/World.java
297c297
<             else if (par2 >= 256)
---
>             else if (par2 >= this.getHeight())
357c357
<         return par2 >= 0 && par2 < 256 ? this.chunkExists(par1 >> 4, par3 >> 4) : false;
---
>         return par2 >= 0 && par2 < this.getHeight() ? this.chunkExists(par1 >> 4, par3 >> 4) : false;
373c373
<         if (par5 >= 0 && par2 < 256)
---
>         if (par5 >= 0 && par2 < this.getHeight())
436c436
<             else if (par2 >= 256)
---
>             else if (par2 >= this.getHeight())
503c503
<             else if (par2 >= 256)
---
>             else if (par2 >= this.getHeight())
533c533
<             else if (par2 >= 256)
---
>             else if (par2 >= this.getHeight())
788c788
<             if (par2 >= 256)
---
>             if (par2 >= this.getHeight())
790c790
<                 par2 = 255;
---
>                 par2 = this.getHeight()-1;
856c856
<                 if (par2 >= 256)
---
>                 if (par2 >= this.getHeight())
858c858
<                     par2 = 255;
---
>                     par2 = this.getHeight()-1;
937c937
<             if (par3 >= 256)
---
>             if (par3 >= this.getHeight())
1004c1004
<         if (par3 >= 256)
---
>         if (par3 >= this.getHeight())
1006c1006
<             par3 = 255;
---
>             par3 = this.getHeight()-1;
1040c1040
<                 if (par3 < 256)
---
>                 if (par3 < this.getHeight())
2619c2619
<         if (par2 >= 0 && par2 < 256)
---
>         if (par2 >= 0 && par2 < this.getHeight())
3092c3092
<             if (par2 >= 0 && par2 < 256 && this.getSavedLightValue(EnumSkyBlock.Block, par1, par2, par3) < 10)
---
>             if (par2 >= 0 && par2 < this.getHeight() && this.getSavedLightValue(EnumSkyBlock.Block, par1, par2, par3) < 10)
3150c3150
<             if (par2 >= 0 && par2 < 256 && this.getSavedLightValue(EnumSkyBlock.Block, par1, par2, par3) < 10)
---
>             if (par2 >= 0 && par2 < this.getHeight() && this.getSavedLightValue(EnumSkyBlock.Block, par1, par2, par3) < 10)
4094c4094
<         return 256;
---
>         return this.worldInfo.getHeight();
4102c4102
<         return this.provider.hasNoSky ? 128 : 256;
---
>         return this.provider.hasNoSky ? 128 : this.getHeight();
diff -r old/minecraft/net/minecraft/src/WorldRenderer.java new/minecraft/net/minecraft/src/WorldRenderer.java
168a169,171
>                                 if (var15 > 255 && var18 != 0) {
>                                    System.err.printf("Getting nonzero block %d at (%d,%d,%d)\n", var18, var17, var15, var16);
>                                 }
diff -r old/minecraft/net/minecraft/src/WorldSettings.java new/minecraft/net/minecraft/src/WorldSettings.java
27c27,30
<     public WorldSettings(long par1, EnumGameType par3EnumGameType, boolean par4, boolean par5, WorldType par6WorldType)
---
>     /** Contains the world height, in blocks/voxels. */
>     private int worldHeight;
>     
>     public WorldSettings(long par1, EnumGameType par3EnumGameType, boolean par4, boolean par5, WorldType par6WorldType, int worldHeight)
34a38,39
>         this.worldHeight = worldHeight;
>         System.err.printf("New world has height %d\n", this.worldHeight);
39c44
<         this(par1WorldInfo.getSeed(), par1WorldInfo.getGameType(), par1WorldInfo.isMapFeaturesEnabled(), par1WorldInfo.isHardcoreModeEnabled(), par1WorldInfo.getTerrainType());
---
>         this(par1WorldInfo.getSeed(), par1WorldInfo.getGameType(), par1WorldInfo.isMapFeaturesEnabled(), par1WorldInfo.isHardcoreModeEnabled(), par1WorldInfo.getTerrainType(), par1WorldInfo.getHeight());
130a136,152
>     
>     /**
>      * Gets the worldHeight
>      */
>     public int getHeight()
>     {
>        return this.worldHeight;
>     }
>     
>     /**
>      * Sets the worldHeight
>      */
>     public void setHeight(int worldHeight)
>     {
>        this.worldHeight = worldHeight;
>     }
>     
That is awesome. So to make this work, you need to replace the minecraft executable?
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
» Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9, 10  Next
» View previous topic :: View next topic  
Page 6 of 10
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement