001 package net.minecraft.world.gen.layer; 002 003 public class GenLayerVoronoiZoom extends GenLayer 004 { 005 public GenLayerVoronoiZoom(long par1, GenLayer par3GenLayer) 006 { 007 super(par1); 008 super.parent = par3GenLayer; 009 } 010 011 /** 012 * Returns a list of integer values generated by this layer. These may be interpreted as temperatures, rainfall 013 * amounts, or biomeList[] indices based on the particular GenLayer subclass. 014 */ 015 public int[] getInts(int par1, int par2, int par3, int par4) 016 { 017 par1 -= 2; 018 par2 -= 2; 019 byte var5 = 2; 020 int var6 = 1 << var5; 021 int var7 = par1 >> var5; 022 int var8 = par2 >> var5; 023 int var9 = (par3 >> var5) + 3; 024 int var10 = (par4 >> var5) + 3; 025 int[] var11 = this.parent.getInts(var7, var8, var9, var10); 026 int var12 = var9 << var5; 027 int var13 = var10 << var5; 028 int[] var14 = IntCache.getIntCache(var12 * var13); 029 int var16; 030 031 for (int var15 = 0; var15 < var10 - 1; ++var15) 032 { 033 var16 = var11[0 + (var15 + 0) * var9]; 034 int var17 = var11[0 + (var15 + 1) * var9]; 035 036 for (int var18 = 0; var18 < var9 - 1; ++var18) 037 { 038 double var19 = (double)var6 * 0.9D; 039 this.initChunkSeed((long)(var18 + var7 << var5), (long)(var15 + var8 << var5)); 040 double var21 = ((double)this.nextInt(1024) / 1024.0D - 0.5D) * var19; 041 double var23 = ((double)this.nextInt(1024) / 1024.0D - 0.5D) * var19; 042 this.initChunkSeed((long)(var18 + var7 + 1 << var5), (long)(var15 + var8 << var5)); 043 double var25 = ((double)this.nextInt(1024) / 1024.0D - 0.5D) * var19 + (double)var6; 044 double var27 = ((double)this.nextInt(1024) / 1024.0D - 0.5D) * var19; 045 this.initChunkSeed((long)(var18 + var7 << var5), (long)(var15 + var8 + 1 << var5)); 046 double var29 = ((double)this.nextInt(1024) / 1024.0D - 0.5D) * var19; 047 double var31 = ((double)this.nextInt(1024) / 1024.0D - 0.5D) * var19 + (double)var6; 048 this.initChunkSeed((long)(var18 + var7 + 1 << var5), (long)(var15 + var8 + 1 << var5)); 049 double var33 = ((double)this.nextInt(1024) / 1024.0D - 0.5D) * var19 + (double)var6; 050 double var35 = ((double)this.nextInt(1024) / 1024.0D - 0.5D) * var19 + (double)var6; 051 int var37 = var11[var18 + 1 + (var15 + 0) * var9]; 052 int var38 = var11[var18 + 1 + (var15 + 1) * var9]; 053 054 for (int var39 = 0; var39 < var6; ++var39) 055 { 056 int var40 = ((var15 << var5) + var39) * var12 + (var18 << var5); 057 058 for (int var41 = 0; var41 < var6; ++var41) 059 { 060 double var42 = ((double)var39 - var23) * ((double)var39 - var23) + ((double)var41 - var21) * ((double)var41 - var21); 061 double var44 = ((double)var39 - var27) * ((double)var39 - var27) + ((double)var41 - var25) * ((double)var41 - var25); 062 double var46 = ((double)var39 - var31) * ((double)var39 - var31) + ((double)var41 - var29) * ((double)var41 - var29); 063 double var48 = ((double)var39 - var35) * ((double)var39 - var35) + ((double)var41 - var33) * ((double)var41 - var33); 064 065 if (var42 < var44 && var42 < var46 && var42 < var48) 066 { 067 var14[var40++] = var16; 068 } 069 else if (var44 < var42 && var44 < var46 && var44 < var48) 070 { 071 var14[var40++] = var37; 072 } 073 else if (var46 < var42 && var46 < var44 && var46 < var48) 074 { 075 var14[var40++] = var17; 076 } 077 else 078 { 079 var14[var40++] = var38; 080 } 081 } 082 } 083 084 var16 = var37; 085 var17 = var38; 086 } 087 } 088 089 int[] var50 = IntCache.getIntCache(par3 * par4); 090 091 for (var16 = 0; var16 < par4; ++var16) 092 { 093 System.arraycopy(var14, (var16 + (par2 & var6 - 1)) * (var9 << var5) + (par1 & var6 - 1), var50, var16 * par3, par3); 094 } 095 096 return var50; 097 } 098 }